RSS解析服务器

一个基于TypeScript构建的Model Context Protocol (MCP)服务器,用于获取和解析标准RSS/Atom订阅源,特别支持RSSHub订阅源,为语言模型或其他MCP客户端提供结构化内容。

  • by veithly
  • TypeScript
  • 本地部署
  • 35 星标
  • 更新于
在 GitHub 查看 veithly/rss-mcp

使用说明

RSS MCP服务器

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

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

✨ 特性

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

📦 安装

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

git clone https://github.com/veithly/rss-mcp.git
cd rss-mcp
npm install

🚀 用法

1.建设项目

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

npm run build

2.运行服务器

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

npm start

然后,服务器将通过Stdio与父进程(例如Cursor)通信。

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

您可以创建 .env 文件以指定优先级RSSHub实例。这对于拥有私有、稳定实例的用户非常有用。

创建 .env 在项目根目录中创建文件,并添加以下内容:

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

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

🔧 MCP服务器配置

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

方法1:使用 npx (推荐)

这个包发布在npm上,所以你可以使用 npx 无需本地安装即可运行服务器。这是最简单的方法。

  1. 直接调用: 您可以使用以下命令直接从终端运行服务器 npx:

    npx rss-mcp
    
  2. MCP客户端配置: 要与Cursor等MCP客户端集成,请将以下内容添加到您的配置文件中(例如。, ~/.cursor/mcp_settings.json):

    {
      "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客户端 (例如光标)使更改生效。这 rss 服务器将可用,您可以调用 get_feed 工具。

🛠️ 工具定义

get_feed

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

输入参数

  • url (string,必填):要获取的RSS提要的URL。支持两种格式:
    1. 标准URL: https://rsshub.app/bilibili/user/dynamic/208259
    2. rsshub:// 协议: rsshub://bilibili/user/dynamic/208259 (服务器将自动匹配可用实例)
  • count (number,可选):要检索的RSS提要项的数量。
    • 默认: 1
    • 检索全部: 0

输出

返回一个包含提要信息的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"]
    }
  ]
}

📜 主要依赖关系

📄 许可证

此项目根据Apache-2.0许可证获得许可。