RSS解析服务器

一个全面的模型上下文协议(MCP)服务器,用于解析、分析和监控RSS、Atom和JSON订阅源,使AI助手能够无缝地与网络订阅源交互。

  • by kiliczsh
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 kiliczsh/rss-mcp-server

使用说明

RSS源MCP服务器

一个全面的模型上下文协议(MCP)服务器,用于解析、分析和监视RSS、Atom和JSON提要。该服务器使AI助手能够与互联网上的网络提要无缝交互。

特性

🎯 核心能力

  • 通用提要解析:支持RSS 2.0、RSS 1.0(RDF)、Atom和JSON Feed格式
  • 高级搜索和筛选:按关键字、作者、类别或日期范围搜索
  • 多饲料比较:同时分析和比较多个提要
  • 饲料验证:全面的结构验证,并提出可操作的建议
  • 灵活的输出格式JSON(机器可读)和Markdown(人类可读)
  • 远程和本地支持:以stdio、HTTP或SSE传输方式运行

🛠️ 可用工具

1. rss_parse_feed

从任何RSS/Atom/JSON提要中解析和检索项目。

# Example: Parse a tech blog feed
{
  "url": "https://techcrunch.com/feed/",
  "limit": 20,
  "response_format": "markdown"
}

使用案例:

  • 阅读最新博客文章
  • 监控新闻更新
  • 提取结构化饲料内容
  • 获取快速订阅概览

2. rss_search_feed

使用高级条件搜索和筛选提要项。

# Example: Find Python articles published this month
{
  "url": "https://realpython.com/atom.xml",
  "keyword": "async",
  "category": "tutorials",
  "since_date": "2025-10-01",
  "limit": 10
}

使用案例:

  • 按主题查找特定文章
  • 按作者或贡献者筛选
  • 从特定类别获取帖子
  • 在内容和标题中搜索

3. rss_compare_feeds

并排比较多个提要。

# Example: Compare tech news sources
{
  "urls": [
    "https://techcrunch.com/feed/",
    "https://www.theverge.com/rss/index.xml",
    "https://arstechnica.com/feed/"
  ],
  "response_format": "json"
}

使用案例:

  • 比较发布频率
  • 监控多个来源
  • 查找常见主题
  • 更新的统一视图

4. rss_validate_feed

验证饲料结构并获得改进建议。

# Example: Validate your blog feed
{
  "url": "https://myblog.com/feed.xml"
}

使用案例:

  • 验证饲料合规性
  • 解析问题疑难解答
  • 获取质量建议
  • 提交前验证

5. rss_get_feed_metadata

提取提要元数据而不解析所有项目(轻量级)。

# Example: Quick feed info check
{
  "url": "https://example.com/rss",
  "response_format": "json"
}

使用案例:

  • 快速馈送信息
  • 验证饲料可用性
  • 获取标题和描述
  • 监控饲料状态

📚 可用资源

资源通过OPML文件提供预配置的RSS提要集合,使得无需手动输入URL即可轻松访问常见提要。

feeds://list

列出OPML配置中所有可用的RSS源。

退货: JSON包含所有带有元数据的提要(名称、标题、xmlUrl、htmlUrl、类别、类型)

使用案例:

  • 浏览可用提要
  • 以编程方式获取提要URL
  • 探索饲料类别
  • 构建提要选择器

feeds://categories

列出所有带有统计信息的提要类别。

退货: JSON包含带有提要计数的类别和每个类别的提要列表

使用案例:

  • 按主题组织提要
  • 按类别筛选提要
  • 获取类别统计信息
  • 构建类别导航

🗂️ OPML饲料管理

服务器使用OPML文件来管理提要集合:

默认源: 该服务器包括14个跨类别的精选提要:

  • 科技新闻(黑客新闻、TechCrunch、The Verge、Ars Technica)
  • 开发者(GitHub博客、Dev.to、CSS技巧)
  • 人工智能和机器学习(OpenAI、拟人、拥抱脸)
  • Python(Python内幕,真正的Python)
  • 综合新闻(英国广播公司技术部、路透社技术部)

自定义馈送: 创建自己的订阅源集合:

  1. 创建目录: mkdir -p ~/.rss-mcp/
  2. 添加您的OPML文件: ~/.rss-mcp/feeds.opml
  3. 重新启动服务器

OPML格式示例:

<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
  <head>
    <title>My RSS Feeds</title>
  </head>
  <body>
    <outline text="Tech News" title="Tech News">
      <outline
        text="Hacker News"
        title="Hacker News"
        type="rss"
        xmlUrl="https://hnrss.org/frontpage"
        htmlUrl="https://news.ycombinator.com/"/>
    </outline>
  </body>
</opml>

安装

先决条件

  • Python 3.10或更高版本
  • 紫外线 (Python包管理器)

设置

  1. 安装UV(如果尚未安装):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 克隆存储库:
git clone https://github.com/kiliczsh/rss-mcp-server.git
cd rss-mcp-server
  1. 安装依赖项:
uv sync
  1. 验证安装:
uv run server.py --help

用法

标准传输(默认-适用于克劳德桌面)

默认的stdio传输非常适合与Claude Desktop和其他MCP客户端集成:

uv run server.py

Claude桌面配置:

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "rss": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/rss-mcp-server",
        "run",
        "server.py"
      ]
    }
  }
}

HTTP传输(远程访问)

对于远程访问或web服务集成:

uv run server.py --transport http --port 8000

访问地址: http://localhost:8000

SSE传输(实时更新)

对于服务器发送的事件和实时通信:

uv run server.py --transport sse --port 8000

例子

示例1:阅读最新技术新闻

# Parse TechCrunch feed
{
  "tool": "rss_parse_feed",
  "params": {
    "url": "https://techcrunch.com/feed/",
    "limit": 10,
    "response_format": "markdown"
  }
}

示例2:查找人工智能研究文章

# Search for AI-related posts
{
  "tool": "rss_search_feed",
  "params": {
    "url": "https://arxiv.org/rss/cs.AI",
    "keyword": "transformer",
    "since_date": "2025-10-01",
    "limit": 5
  }
}

示例3:比较新闻来源

# Compare multiple tech news feeds
{
  "tool": "rss_compare_feeds",
  "params": {
    "urls": [
      "https://news.ycombinator.com/rss",
      "https://www.reddit.com/r/programming/.rss",
      "https://techcrunch.com/feed/"
    ]
  }
}

示例4:验证您的订阅源

# Check if your blog feed is properly formatted
{
  "tool": "rss_validate_feed",
  "params": {
    "url": "https://myblog.com/feed.xml"
  }
}

建筑

设计原则

遵循MCP最佳实践,此服务器由以下组件构建:

  • 以代理为中心的设计:工具是为完整的工作流而设计的,而不仅仅是API包装器
  • 上下文优化:响应简洁,细节级别可选
  • 可操作错误:错误消息引导用户正确使用
  • 自然任务细分:工具名称反映了人类对任务的看法
  • 可组合代码:共享实用程序避免重复

核心组件

server.py
├── HTTP Client Management (lifespan)
├── Feed Parsers (RSS/Atom/JSON)
├── Helper Functions
│   ├── fetch_url()
│   ├── detect_feed_type()
│   ├── parse_rss_feed()
│   ├── parse_atom_feed()
│   ├── parse_json_feed()
│   ├── format_feed_markdown()
│   ├── filter_items()
│   └── truncate_response()
└── MCP Tools
    ├── rss_parse_feed
    ├── rss_search_feed
    ├── rss_compare_feeds
    ├── rss_validate_feed
    └── rss_get_feed_metadata

响应格式

Markdown(默认):

  • 人类可读格式
  • 清理标题和列表
  • 截断的内容预览
  • 最适合面向用户的输出

JSON:

  • 完整的结构化数据
  • 所有可用字段
  • 机器可解析
  • 最适合程序化处理

支持的源格式

RSS 2.0

最常见的格式,在博客和新闻网站上得到广泛支持。

关键要素:

  • <channel>:馈送元数据
  • <item>:个人参赛作品
  • <title>, <link>, <description>:核心字段
  • <pubDate>:出版日期
  • <category>:主题分类

RSS 1.0(RDF)

基于RDF的格式,具有更好的命名空间支持。

关键要素:

  • 使用RDF/XML结构
  • 都柏林核心元数据
  • 更好的可扩展性

原子

现代标准,要求严格,日期处理更好。

关键要素:

  • <feed>:饲料容器
  • <entry>:个人参赛作品
  • <id>:必需的唯一标识符
  • <updated>:所需时间戳
  • <content>:具有类型属性的完整内容

JSON提要

基于JSON的XML格式的替代品。

关键要素:

  • version:格式版本
  • items:条目数组
  • content_html / content_text:内容变体
  • date_published, date_modified:时间戳

错误处理

服务器提供清晰、可操作的错误消息:

HTTP错误

HTTP error 404 when fetching https://example.com/feed.xml.
Please verify the URL is correct and accessible.

网络错误

Network error when fetching https://example.com/feed.xml: Connection timeout.
Please check your internet connection and try again.

解析错误

Invalid XML format: mismatched tag at line 42.
The feed may be malformed. Try using rss_validate_feed for details.

性能和限制

  • 字符限制:响应截断为25000个字符
  • 项目限制:每个请求最多100个项目
  • 并发订阅源:相比之下,最多5个提要
  • 请求超时:每次取饲料30秒
  • HTTP客户端:与keep-alive的持续连接

故障排除

问题:源不解析

解决方案:

  1. 验证URL在浏览器中是否可访问
  2. 使用检查提要格式 rss_validate_feed
  3. 确保URL使用http://或https://

问题:空结果

解决方案:

  1. 检查提要是否包含项目
  2. 验证筛选器是否限制性太强
  3. 先尝试不使用过滤器

问题:截断的响应

解决方案:

  1. 使用 limit 减少项目的参数
  2. 应用过滤器缩小结果范围
  3. 使用JSON格式进行程序化处理

贡献

此服务器遵循MCP最佳实践:

  1. 工具设计:关注工作流,而不仅仅是API端点
  2. 文档:带示例的综合文档字符串
  3. 错误消息:为用户提供可操作的指导
  4. 代码质量:DRY原理,可组合功能
  5. 类型安全:完全Pydantic验证

技术细节

依赖项

  • 主控程序:用于MCP服务器实现的FastMCP框架
  • httpx:用于获取提要的异步HTTP客户端
  • 皮丹提克:输入验证和类型安全

类型安全

所有输入均已Pydantic模型验证:

  • URL格式验证
  • 参数约束检查
  • 基于枚举的格式选择
  • 自动删除空白

异步架构

  • 所有网络操作的无阻塞I/O
  • 比较中的并发提要获取
  • 适当的异步上下文管理器
  • HTTP客户端的生命周期管理

文档

📚 综合指南可在 docs/ 文件夹:

许可证

MIT许可证-请参阅 许可证 详细信息文件

鸣谢

遵循MCP最佳实践和MCP构建器技能指南构建。

支持

对于问题、疑问或贡献:

  • github:https://github.com/kiliczsh/rss-mcp-server
  • 问题:https://github.com/kiliczsh/rss-mcp-server/issues
  • 文档:https://modelcontextprotocol.io
  • MCP规范:https://spec.modelcontextprotocol.io

由以下材料制成❤️ 对于MCP生态系统