RSS订阅服务器MCP
一个使用FastMCP构建的模型上下文协议(MCP)服务器,提供国际足联(FIFA)新闻和YouTube内容的RSS订阅聚合及搜索功能。
🎯 概述
这个MCP服务器使AI助手能够从国际足联(FIFA)的官方RSS订阅源中搜索和检索内容,包括新闻文章和YouTube视频。该服务器是使用FastMCP和feedparser构建的,提供了三种专门的工具来发现内容。
✨ 特点
- 国际足联新闻搜索查询国际足联官方新闻RSS订阅源
- 国际足联YouTube搜索通过RSS搜索国际足联(FIFA)YouTube频道的内容
- 秘密信息工具复活节彩蛋功能,带来趣味互动体验
- 实时RSS订阅源解析与过滤
- 可配置的结果限制
📋 技术栈
- FastMCP (v2.12.5):构建MCP服务器的框架
- feedparser(用于解析RSS/Atom订阅源的Python库) (v6.0.12):RSS/Atom订阅源解析
- python (3.13+): 核心运行时
- MCP协议 (v1.16.0):模型上下文协议实现
🔧 安装
先决条件
- Python 3.13或更高版本
- pip 包管理器
- 虚拟环境支持(venv)
步骤1:克隆仓库
cd ~/Desktop/Projects
git clone rss-server
cd rss-server步骤2:创建虚拟环境(Linux)
# Create a new virtual environment
python3 -m venv meraenv
# Activate the virtual environment
source meraenv/bin/activate
# Your prompt should now show (meraenv) prefix步骤3:安装依赖项
# Ensure pip is up to date
pip install --upgrade pip
# Install required packages
pip install fastmcp feedparser
# Verify installation
pip list | grep -E "fastmcp|feedparser|mcp"预期输出:
fastapi-mcp 0.4.0
fastmcp 2.12.5
feedparser 6.0.12
mcp 1.16.0🚀 使用方法
运行服务器
方法1:直接执行
# Activate virtual environment
source meraenv/bin/activate
# Run the MCP server
python feed_mcp.py服务器将以STDIO模式启动,并等待MCP协议消息。
方法2:使用MCP客户端
# Using with an MCP client application
mcp run python feed_mcp.py停用虚拟环境
deactivate🔍 可用工具
1. 国际足联新闻搜索
在国际足联(FIFA)的官方新闻动态中搜索与您查询条件相匹配的文章。
参数:
query(字符串,必填):用于过滤新闻文章的搜索词max_results(int, 可选): 要返回的最大结果数(默认:3)
示例回复:
[
{
"title": "FIFA World Cup 2026 Updates",
"url": "https://www.fifa.com/..."
}
]2. fifa_youtube搜索(或:国际足联YouTube搜索)
在FIFA的YouTube频道中搜索与您查询相匹配的视频。
参数:
query(字符串,必填):用于过滤视频标题的搜索词max_results(int, 可选):要返回的最大结果数(默认:3)
示例回复:
[
{
"title": "Best Goals of the Tournament",
"url": "https://www.youtube.com/watch?v=..."
}
]3. 国际足联的秘密信息
返回一条关于国际足联(FIFA)的励志信息。
参数: 无
示例回复:
"Keep exploring! and happy watching and see you at 2026 world cup!"🧪 使用MCP Inspector进行测试
MCP Inspector 是一款用于测试和调试您的 MCP 服务器的宝贵工具。
安装MCP Inspector
# Install Node.js if not already installed (required for inspector)
# Ubuntu/Debian:
sudo apt update
sudo apt install nodejs npm
# Install MCP Inspector globally
npm install -g @modelcontextprotocol/inspector
# Verify installation
npx @modelcontextprotocol/inspector --version使用MCP Inspector
- 启动检查器:
# Activate your virtual environment first
source meraenv/bin/activate
# Launch inspector with your MCP server
npx @modelcontextprotocol/inspector python feed_mcp.py- 检查员网页界面:
检查员将启动一个网络服务器(通常在 http://localhost:5173并在您的浏览器中打开它。
- 测试你的工具:
在检查器用户界面中:
- 查看可用工具查看所有三个工具(fifa_news_search,fifa_youtube_search,fifa_secret_message)
- 测试工具调用点击任意工具以使用参数进行测试
- 检查响应查看格式化的JSON响应
- 调试协议实时监控MCP协议消息
- 示例测试用例:
测试国际足联新闻搜索:
{
"query": "world cup",
"max_results": 3
}测试YouTube搜索功能:
{
"query": "highlights",
"max_results": 5
}测试秘密信息:
{}检查员功能
- 实时协议监控查看所有交换的MCP消息
- 工具测试接口带参数表单的交互式工具调用
- 响应可视化格式化美观的JSON响应
- 错误调试清晰的错误消息和堆栈跟踪
- 模式验证工具参数的自动验证
🏗️ 技术架构
代码结构
rss-server/
├── feed_mcp.py # Main MCP server implementation
├── meraenv/ # Python virtual environment
└── README.md # This file它是如何工作的
- FastMCP框架提供基于装饰器的工具注册和STDIO传输
- feedparser 库从URL解析RSS/Atom订阅源
- 工具功能用……装饰的Python函数
@mcp.tool()成为MCP工具 - 查询过滤标题和描述中的不区分大小写的字符串匹配
- 结果限制可配置的最大结果数,以防止响应信息过多
RSS订阅源
- 国际足联新闻:
https://www.fifa.com/rss-feeds/ - 国际足联YouTube频道:
https://www.youtube.com/feeds/videos.xml?channel_id=UCpcTrCXblq78GZrTUTLWeBw
🛠️ 开发
添加新工具
添加一个新的RSS订阅源:
@mcp.tool()
def your_new_search(query: str, max_results: int = 3):
"""Description of your tool"""
feed = feedparser.parse("YOUR_RSS_FEED_URL")
results = []
query_lower = query.lower()
for entry in feed.entries:
title = entry.get("title", "")
if query_lower in title.lower():
results.append({
"title": title,
"url": entry.get("link", "")
})
if len(results) >= max_results:
break
return results or [{"message": "No results found"}]测试更改
# Activate environment
source meraenv/bin/activate
# Run with inspector for interactive testing
npx @modelcontextprotocol/inspector python feed_mcp.py
# Or test directly
python feed_mcp.py🐛 故障排除
虚拟环境问题
问题: source: command not found
# Use dot instead of source
. meraenv/bin/activate问题权限被拒绝
chmod +x meraenv/bin/activate
source meraenv/bin/activate软件包安装问题
问题: pip: command not found
# Install pip
sudo apt install python3-pip
# Or use python module
python3 -m pip install fastmcp feedparserMCP 检查器问题
问题检查员无法启动
# Check Node.js version (should be 18+)
node --version
# Reinstall inspector
npm uninstall -g @modelcontextprotocol/inspector
npm install -g @modelcontextprotocol/inspector问题端口已被使用
# Kill process on port 5173
lsof -ti:5173 | xargs kill -9
# Or specify different port
npx @modelcontextprotocol/inspector --port 5174 python feed_mcp.pyRSS订阅源问题
问题未返回结果
- 检查网络连接
- 验证RSS订阅源URL是否可访问
- 直接测试饲料:
curl https://www.fifa.com/rss-feeds/
问题解析错误
- 确保已安装 feedparser:
pip show feedparser - 使用以下方法检查饲料格式:
python -c "import feedparser; print(feedparser.parse('URL'))"
📝 要求文件
创造 requirements.txt 为了便于安装:
fastmcp==2.12.5
feedparser==6.0.12
mcp==1.16.0
fastapi-mcp==0.4.0安装方式:
pip install -r requirements.txt🔒 安全考量
- RSS订阅仅从国际足联官方渠道解析
- 无需认证或API密钥
- STDIO传输确保仅限本地通信
- 未实现数据持久化或日志记录功能
📚 额外资源
🤝 贡献(或:参与贡献)
贡献:
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支
- 做出你的更改
- 使用MCP Inspector进行测试
- 提交一个拉取请求
🎉 致谢
- 由Jeremiah Lowin提出的FastMCP框架
- Anthropic的模型上下文协议
- feedparser库的维护者
- 国际足联提供公开的RSS订阅源
______________________________________________________________________
快乐订阅RSS!2026世界杯见! ⚽
