rss-mcp-server / rss_server.py
gperdrizet's picture
Added some fancy fallback options to handle requests for feeds that are not urls, also added caching so we don't have to look up the same feed URI more than once in a session.
00764df unverified
raw
history blame
1.17 kB
'''Main script to run gradio interface and MCP server.'''
import logging
from pathlib import Path
from logging.handlers import RotatingFileHandler
import gradio as gr
import assets.html as html
from functions import tools as tool_funcs
# Make sure log directory exists
Path('logs').mkdir(parents=True, exist_ok=True)
# Set-up logger
logger = logging.getLogger()
logging.basicConfig(
handlers=[RotatingFileHandler(
'logs/rss_server.log',
maxBytes=100000,
backupCount=10,
mode='w'
)],
level=logging.INFO,
format='%(levelname)s - %(name)s - %(message)s'
)
logger = logging.getLogger(__name__)
with gr.Blocks() as demo:
with gr.Row():
gr.HTML(html.TITLE)
gr.Markdown(html.DESCRIPTION)
website_url = gr.Textbox('hackernews.com', label='Website')
output = gr.Textbox(label='RSS entry titles', lines=10)
submit_button = gr.Button('Submit')
submit_button.click( # pylint: disable=no-member
fn=tool_funcs.get_content,
inputs=website_url,
outputs=output,
api_name='Get RSS feed content'
)
if __name__ == '__main__':
demo.launch(mcp_server=True)