Back to MCP directory
publicPublicdnsLocal runtime

rss-mcp

一个基于TypeScript的RSS MCP服务器,支持解析标准RSS/Atom订阅源和RSSHub源,提供多实例轮询和结构化内容输出。

article

README

🚀 RSS MCP 服务器

这是一个使用 TypeScript 构建的模型上下文协议(MCP)服务器。它提供了一个通用工具,可用于获取和解析任何标准的 RSS/Atom 订阅源,还对 RSSHub 订阅源提供了特殊支持。借助此服务器,语言模型或其他 MCP 客户端可以轻松从各种网络源获取结构化内容。

服务器内置了一份公共 RSSHub 实例列表,并支持轮询机制以自动选择可用实例,显著提高了数据获取的成功率和稳定性。

✨ 主要特性

  • 通用订阅源解析:从给定的 URL 获取并解析任何标准的 RSS/Atom 订阅源。
  • 增强的 RSSHub 支持:提供了一个名为 get_feed 的工具,可通过 MCP 获取任何 RSSHub 支持的订阅源,并支持多实例。
  • 多实例支持:包含一份公共 RSSHub 实例列表,并自动轮询以找到可用服务。
  • 智能 URL 解析:支持标准的 RSSHub URL 和简化的 rsshub:// 协议格式。
  • 优先实例配置:允许通过 PRIORITY_RSSHUB_INSTANCE 环境变量设置首选的 RSSHub 实例。
  • 强大的错误处理:如果对一个实例的请求失败,它会自动尝试下一个实例,直到成功或所有实例都失败。
  • 内容清理:使用 Cheerio 清理订阅源内容并提取纯文本描述。
  • 标准化输出:将获取的 RSS 订阅源转换为结构化的 JSON 格式。

📦 安装指南

首先,克隆项目仓库,然后安装所需的依赖项。

git clone <your-repo-url>
cd rss-mcp
npm install

🚀 快速开始

1. 构建项目

在运行之前,你需要将 TypeScript 代码编译为 JavaScript:

npm run build

2. 启动服务器

构建成功后,启动 MCP 服务器:

npm start

服务器随后将通过标准输入输出与父进程(例如 Cursor)进行通信。

3. 配置优先实例(可选)

你可以创建一个 .env 文件来指定优先的 RSSHub 实例。这对于拥有私有、稳定实例的用户非常有用。 在项目根目录下创建一个 .env 文件,并添加以下内容:

PRIORITY_RSSHUB_INSTANCE=https://my-rsshub.example.com

服务器将在启动时自动加载此配置,并将其置于轮询列表的顶部。

🔧 MCP 服务器配置

要将此服务器与像 Cursor 这样的 MCP 客户端一起使用,你需要将其添加到配置文件中。

方法 1:使用 npx(推荐)

如果该软件包已发布到 npm,你可以使用 npx 来运行服务器,而无需本地安装。这是最简单的方法。

  1. 找到你的 MCP 配置文件(例如 ~/.cursor/mcp_settings.json)。
  2. 添加以下服务器条目:
{
  "name": "rss",
  "command": ["npx", "rss-mcp"],
  "type": "stdio"
}

方法 2:本地安装

如果你已在本地克隆了仓库,你可以直接使用 node 运行它。

  1. 克隆并构建项目,如“安装指南”和“快速开始”部分所述。
  2. 找到你的 MCP 配置文件
  3. 添加以下服务器条目,并确保使用编译后的 index.js 文件的绝对路径
{
  "name": "rss",
  "command": ["node", "/path/to/your/rss-mcp/dist/index.js"],
  "type": "stdio"
}

重要提示:将 /path/to/your/rss-mcp/dist/index.js 替换为你系统上的正确绝对路径。

添加配置后,重启你的 MCP 客户端(例如 Cursor)以使更改生效。rss 服务器随后将可用,你可以调用 get_feed 工具。

💻 使用示例

get_feed

从给定的 URL 获取并解析 RSS 订阅源。它支持标准的 RSS/Atom 订阅源和 RSSHub 订阅源。

输入参数

  • url(字符串,必需):要获取的 RSS 订阅源的 URL。支持两种格式:
    1. 标准 URLhttps://rsshub.app/bilibili/user/dynamic/208259
    2. rsshub:// 协议rsshub://bilibili/user/dynamic/208259(服务器将自动匹配可用实例)

输出

返回一个包含订阅源信息的 JSON 字符串,结构如下:

{
  "title": "bilibili User Dynamics",
  "link": "https://space.bilibili.com/208259",
  "description": "bilibili User Dynamics",
  "items": [
    {
      "title": "[Dynamic Title]",
      "description": "Plain text content of the dynamic...",
      "link": "https://t.bilibili.com/1234567890",
      "guid": "https://t.bilibili.com/1234567890",
      "pubDate": "2024-05-20T12:30:00.000Z",
      "author": "Author Name",
      "category": ["Category1", "Category2"]
    }
  ]
}

📚 详细文档

主要依赖项

| 属性 | 详情 | |------|------| | 模型类型 | 无 | | 训练数据 | 无 | | 依赖项 | @modelcontextprotocol/sdk:用于构建 MCP 服务器;axios:用于发起 HTTP 请求;rss-parser:用于解析 RSS/Atom 订阅源;cheerio:用于解析和操作 HTML 内容;date-fns-tz:用于处理与时区相关的日期格式;dotenv:用于从 .env 文件加载环境变量。 |

📄 许可证

本项目采用 Apache 2.0 许可证。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client