mcp-rss-aggregator
MCP RSS 聚合器
特征
直接在 Claude Desktop 中阅读您喜欢的 RSS 源中的文章
支持 OPML 文件导入您现有的订阅源
按类别组织信息流
获取所有动态中的最新文章
按供稿来源或类别过滤文章
格式良好的文章演示,包含标题、摘要和链接
Related MCP server: @kazuph/mcp-pocket
演示
点击任意时间戳即可跳转到视频的相应部分
00:00 - RSS Feed 示例演示:使用代码库中默认的“sample-feeds.opml”文件。本部分展示 Claude 如何通过 MCP(模型上下文协议)处理和呈现来自 TechCrunch、The Verge 和其他科技出版物等来源的新闻内容。
01:05 -配置文件编辑过程:逐步演练访问和修改 claude_desktop_config.json 文件,将 OPML 文件路径引用从默认示例更改为自定义的“my-feeds.opml”文件。
01:15 –应用程序重启程序:说明关闭并重新打开 Claude Desktop 应用程序以正确加载和应用修改后的 OPML 文件配置更改的必要步骤。
01:25 -自定义 RSS Feed 结果:演示实施自定义 OPML 文件后的结果。本节重点介绍现在可通过 Claude Desktop 访问的更丰富、更多样化的新闻来源,包括西班牙语内容。
要求
Node.js 16 或更高版本
克劳德桌面
互联网连接以访问 RSS 源
安装
手动安装
克隆或下载此存储库:
git clone https://github.com/imprvhub/mcp-rss-aggregator
cd mcp-rss-aggregator安装依赖项:
npm install构建项目:
npm run build供稿配置
RSS 聚合器支持 OPML 和 JSON 格式的 feed 配置。
使用 OPML(推荐)
OPML(大纲处理器标记语言)是大多数 RSS 阅读器用于导出和导入订阅源的标准格式。
public/sample-feeds.opml文件中包含一个包含热门 Feed 的示例 OPML 文件。您可以:
按原样使用此文件
编辑它以添加您自己的提要
用现有 RSS 阅读器导出的内容替换它
大多数 RSS 阅读器允许您将订阅导出为 OPML 文件。
使用 JSON
或者,您也可以使用以下格式在 JSON 文件中定义您的 feed:
[
{
"title": "Hacker News",
"url": "https://news.ycombinator.com/rss",
"htmlUrl": "https://news.ycombinator.com/",
"category": "Tech News"
},
{
"title": "TechCrunch",
"url": "https://techcrunch.com/feed/",
"htmlUrl": "https://techcrunch.com/",
"category": "Tech News"
}
]运行 MCP 服务器
运行 MCP 服务器有两种方式:
选项 1:手动运行
打开终端或命令提示符
导航到项目目录
直接运行服务器:
node build/index.js使用 Claude Desktop 时,请保持此终端窗口打开。服务器将一直运行,直到您关闭终端。
选项 2:使用 Claude Desktop 自动启动(建议定期使用)
Claude Desktop 可以在需要时自动启动 MCP 服务器。设置方法如下:
配置
Claude Desktop 配置文件位于:
macOS :
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows :
%APPDATA%\Claude\claude_desktop_config.jsonLinux :
~/.config/Claude/claude_desktop_config.json
编辑此文件以添加 RSS Aggregator MCP 配置。如果该文件不存在,请创建:
{
"mcpServers": {
"rssAggregator": {
"command": "node",
"args": ["ABSOLUTE_PATH_TO_DIRECTORY/mcp-rss-aggregator/build/index.js"],
"feedsPath": "ABSOLUTE_PATH_TO_YOUR_FEEDS_FILE.opml"
}
}
}重要提示:
将
ABSOLUTE_PATH_TO_DIRECTORY替换为安装 MCP 的完整绝对路径macOS/Linux 示例:
/Users/username/mcp-rss-aggregatorWindows 示例:
C:\\Users\\username\\mcp-rss-aggregator
将
ABSOLUTE_PATH_TO_YOUR_FEEDS_FILE.opml替换为您的 OPML 或 JSON 文件的路径如果省略,则将使用示例 feed 文件
如果您已经配置了其他 MCP,只需在“mcpServers”对象中添加“rssAggregator”部分:
{
"mcpServers": {
"otherMcp1": {
"command": "...",
"args": ["..."]
},
"rssAggregator": {
"command": "node",
"args": [
"ABSOLUTE_PATH_TO_DIRECTORY/mcp-rss-aggregator/build/index.js"
],
"feedsPath": "ABSOLUTE_PATH_TO_YOUR_FEEDS_FILE.opml"
}
}
}根据claude_desktop_config.json文件中的配置,当 Claude Desktop 需要时,MCP 服务器将自动启动。
用法
修改配置后重启Claude Desktop
在 Claude 中,使用
rss命令与 RSS Aggregator MCP Server 进行交互MCP 服务器作为 Claude Desktop 管理的子进程运行
可用命令
RSS 聚合器 MCP 提供了一个名为rss的工具,其中包含几个命令:
命令 | 描述 | 参数 | 例子 |
| 显示所有源的最新文章 | 可选限制(--N) |
|
| 显示所有订阅源中的热门文章 | 可选限制(--N) |
|
| 列出所有可用的 feed | 没有任何 |
|
| 显示特定 feed 中的文章 | 可选限制(--N) |
|
| 显示特定类别的文章 | 可选限制(--N) |
|
| 设置 OPML/JSON 文件的路径 | 文件路径 |
|
示例用法
以下是如何使用 Claude 的 RSS 聚合器的各种示例:
直接命令:
rss latest
rss top --20
rss list
rss "Tech News"
rss --hackernews
rss --techcrunch --15自然语言查询:
您还可以使用自然语言与 MCP 进行交互。Claude 会解析这些请求并使用相应的命令:
“Hacker News 上有什么最新消息?”
“向我展示今天的热门科技文章”
“从我的编程源中获取最新文章”
“列出我的所有 RSS 源”
扩展用法示例
每日新闻简报
从所有来源获取新闻简报:
rss latest --25这将从您的所有订阅源中获取最新的 25 篇文章,让您快速了解最新新闻。
探索热门内容
查找最重要或最受欢迎的文章:
rss top --20基于类别的阅读
关注特定内容类别:
rss "Tech News" --30
rss "Politics" --15
rss "Science" --10特定源更新
阅读您关注的特定来源的更新:
rss --hackernews --20
rss --nytimes
rss --techcrunch --15发现可用的订阅源
找出您已配置的提要:
rss list合并多个请求
您可以发出多个连续的请求来构建综合视图:
rss "Tech News" --10
rss "Finance" --10
rss top --5实际工作流程
早晨例行事务:
rss top --10 rss "News" --5行业研究:
rss "Industry News" --15 rss --bloomberg --5技术更新:
rss --hackernews --10 rss --techcrunch --5
与克劳德合作
你可以请Claude分析或总结文章:
运行后:
rss latest --10问:“你能总结一下这些文章吗?”运行后:
rss "Tech News" --15问:“这些科技文章中的关键趋势是什么?”运行后:
rss --nytimes --washingtonpost --10询问:“比较这些来源如何报道时事”
故障排除
“服务器断开连接”错误
如果您在 Claude Desktop 中看到错误“MCP RSS Aggregator:服务器已断开连接”:
验证服务器正在运行:
打开终端并从项目目录手动运行
node build/index.js如果服务器启动成功,则使用 Claude 并保持此终端打开
检查您的配置:
确保
claude_desktop_config.json中的绝对路径对于您的系统来说是正确的仔细检查 Windows 路径是否使用了双反斜杠 (
\\)验证您使用的文件系统根目录的完整路径
Claude 中未出现的工具
如果 RSS 聚合器工具没有出现在 Claude 中:
确保配置后重新启动 Claude Desktop
检查 Claude Desktop 日志中是否存在任何 MCP 通信错误
确保 MCP 服务器进程正在运行(手动运行以确认)
无法加载 Feed
如果您的订阅源无法正确加载:
确保您的 OPML/JSON 文件格式正确
检查配置中的
feedsPath是否正确尝试使用已知良好的 feed 文件手动运行服务器
贡献
欢迎为改进 RSS 聚合器做出贡献!您可以通过以下方式做出贡献:
添加对更多 feed 格式的支持
改进 feed 解析和错误处理
为文章添加更多可视化选项
提高分类和过滤能力
执照
该项目根据 Mozilla 公共许可证 2.0 获得许可 - 有关详细信息,请参阅LICENSE文件。
相关链接
Available Tools
3 toolsrss_feedC
Get the newest articles from one specific RSS feed
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of articles to return (1-50, default: 10) | |
| feed_id | Yes | Feed id as reported by rss_list, e.g. "news-ycombinator-com" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It conveys only that this is a retrieval, but says nothing about read-only safety, ordering of 'newest', behavior for an unknown feed_id, or whether results are cached/bounded. For a tool with zero annotation coverage this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler and no redundancy. It is appropriately sized for a two-parameter read tool, though its brevity is partly the source of the gaps noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with a fully documented schema and no output schema, the description is minimally adequate. It omits sibling differentiation (rss_latest overlap) and any note on ordering or failure behavior, but nothing structurally critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with limit (range, default) and feed_id (format example) fully documented in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get the newest articles from one specific RSS feed'), which is clear on its own. However, it does nothing to differentiate from the sibling rss_latest, which by name appears to cover a very similar retrieval of recent articles, so an agent cannot reliably choose between them from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no when-not-to-use, and no mention of rss_list or rss_latest as alternatives. The only implied context is that a feed_id must come from somewhere (schema hints at rss_list), leaving routing purely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rss_latestA
Get the newest articles across all configured RSS feeds, most recent first, optionally limited to one category
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of articles to return (1-50, default: 15) | |
| category | No | Optional category to filter by, e.g. "Tech News" or "Science". Use rss_list to see categories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Get' plus 'newest first' communicates a read-only, sorted retrieval, and the scope ('all configured feeds') is useful. However, it says nothing about pagination, how many feeds must be configured, or what happens when no feeds match a category.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the scope, ordering, and optional filter front-loaded and no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and zero required params, the description is adequate: scope, ordering, and filtering are clear. With no output schema, a note on the returned article fields would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit (1-50, default 15) and category (with the rss_list pointer). The description adds only the notion of ordering and optionality, which the schema largely covers; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the newest articles across all configured RSS feeds') plus the ordering (most recent first). It distinguishes itself from rss_feed only implicitly via 'across all configured feeds'; it never names the sibling that returns a single feed's items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally limited to one category' hints at a filtering use case, and the category param points at rss_list for discovering values, but there is no explicit when-to-use-this-vs-rss_feed guidance. Usage is implied by the aggregation scope rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rss_listA
List the configured RSS feeds, grouped by category, with the feed_id to use with rss_feed
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses output behavior (grouped by category, includes feed_id), which matters since there is no output schema, but says nothing about read-only nature, auth requirements, or whether the feed list can be empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with zero waste, front-loading the action and the result, then ending with the actionable feed_id handoff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial parameterless list tool with no output schema, the description covers enough: what is returned, how it is grouped, and the key field (feed_id) for the next step. Minor gaps on empty-list/error behavior only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to describe; baseline 4 applies. The description correctly adds no spurious parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (configured RSS feeds) and explicitly names the sibling used next (rss_feed) via the returned feed_id. An agent can distinguish this from rss_latest and rss_feed without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear implied context: call this to discover feeds and obtain the feed_id needed by rss_feed. It does not state when-not to use it or contrast with rss_latest, but the routing intent is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.3.0- Removed
rss - Added
rss_feed - Added
rss_latest - Added
rss_list
1 tool update
v1.0.0- First observed
rss
TDQS
Scored across 3 tools
Each tool has a clearly distinct scope: rss_list returns feed metadata, rss_latest aggregates articles across all feeds, and rss_feed targets one specific feed. The descriptions make the boundaries explicit, and the feed_id handoff between rss_list and rss_feed reinforces the separation.
All three tools share a consistent rss_ prefix, which is easy to predict. The suffix patterns vary slightly (verb 'list' vs adjective 'latest' vs noun 'feed'), so it's not a strict verb_noun scheme, but it remains readable and coherent.
Three tools is on the thin side but fits a focused read-only aggregator well, with each tool earning its place. It is slightly under-scoped given that feed configuration is implied but not directly exposed.
The read surface is solid: list feeds, aggregate latest, and drill into a single feed. However, there is no way to add, remove, or manage feeds, so lifecycle coverage is incomplete for an aggregator that references 'configured' feeds.
Maintenance
Related MCP Connectors
Managed cloud RSS and Atom feed reader with a remote Model Context Protocol (MCP) endpoint. Zero server setup required — enables AI agents like Claude to instantly subscribe to feeds, search full-text articles, extract readable content, and access curated AI editions ("Your Newspaper") over secure streamable HTTP.
MCP Server for Web2MD — convert URLs to Markdown from Claude Desktop, Cursor, etc.
A self-hostable feed of reminders, learnings and work that Claude and ChatGPT can read and write
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol (MCP) server for web research. Bring real-time info into Claude and easily research any topic.3454 npm300MIT
- AlicenseAqualityDmaintenance🔗 Model Context Protocol (MCP) Server for retrieving saved articles from Pocket API and loading them into Claude231 npm9MIT
- FlicenseBqualityDmaintenanceA Model Context Protocol server that enables downloading and parsing Substack posts directly through the Claude desktop app, allowing users to access and summarize Substack content.124-
- AlicenseAqualityDmaintenanceModel Context Protocol server that enables Claude Desktop (or any MCP client) to fetch web content and process images appropriately.173 npmMIT