Feed MCP 服务器是一个基于 Model Context Protocol (MCP) 实现的应用后端,旨在为大语言模型 (LLM) 客户端提供访问和处理 RSS、Atom 和 JSON Feed 内容的能力。通过将各种 Syndication Feed 封装为 MCP 工具,它允许 LLM 获取最新的资讯和文章列表,作为其对话或任务的上下文信息。

主要功能点

  • 支持读取和解析 RSS、Atom 和 JSON Feed 格式的内容。
  • 能够根据配置的 URL 列表管理多个 Feed 源。
  • 提供 MCP 工具,允许 LLM 客户端:
    • 列出所有当前服务器正在管理的 Feed 源及其基本信息。
    • 根据 Feed ID 获取特定 Feed 的详细元数据和包含的文章列表。
    • (额外功能)抓取并返回任意指定 URL 的网页内容。
  • 支持 Stdio 和 HTTP/SSE 等多种传输协议与 MCP 客户端通信。
  • 内置缓存机制,提高访问 Feed 数据的效率。

安装步骤

您可以通过 Go 工具链或 Docker 容器安装和运行 Feed MCP 服务器。

使用 Go 安装(需要 Go 环境):

go install github.com/richardwooding/feed-mcp@latest

安装后,'feed-mcp' 可执行文件将位于您的 Go bin 路径下。

使用 Docker 安装(需要 Docker 环境): 直接使用预构建的 Docker 镜像。

服务器配置(供 MCP 客户端使用)

Feed MCP 服务器是为 MCP 客户端设计的,您需要在 MCP 客户端(例如 Claude Desktop)的配置文件中添加相应的服务器配置。以下是配置该服务器的示例信息,您需要将其添加到客户端配置文件的 'mcpServers' 部分。请根据您的实际安装方式(Go 或 Docker)调整 'command' 和 'args'。

例如,使用 Docker 运行服务器并加载两个 Feed:

{
  "mcpServers": {
    "feed": { // 您可以为此服务器实例指定一个名称,如 "feed"
      "command": "docker", // 启动服务器的命令,这里是运行 Docker 容器
      "args": [ // 传递给 command 的参数列表
        "run", // Docker 命令:运行容器
        "-i", // Docker 参数:保持 stdin 打开,允许 Stdio 传输
        "--rm", // Docker 参数:容器停止后自动移除
        "ghcr.io/richardwooding/feed-mcp:latest", // Docker 镜像名称及标签
        "run", // feed-mcp 应用的子命令:运行服务器
        "https://www.reddit.com/r/golang/.rss", // 要加载的第一个 Feed URL
        "https://www.reddit.com/r/mcp/.rss"    // 要加载的第二个 Feed URL
        // 可以在此处添加更多 Feed URL 作为参数
      ]
      // "transport": "stdio" // 如果客户端需要显式指定传输方式,但通常 Stdio 是默认的
    }
    // 您可以在此处添加其他 MCP 服务器的配置
  }
}

如果您使用 Go 安装并在本地运行,配置可能如下所示:

{
  "mcpServers": {
    "feed-local": {
      "command": "feed-mcp", // 本地安装的 feed-mcp 可执行文件
      "args": [
        "run",
        "https://www.example.com/feed.rss", // 要加载的 Feed URL
        "https://www.anotherfeed.net/atom.xml" // 要加载的另一个 Feed URL
      ]
    }
  }
}

请注意,'args' 列表中的最后一个或多个参数是您希望该 MCP 服务器加载和管理的 Feed URL。

基本使用方法

配置完成后,重启您的 MCP 客户端。如果服务器成功启动并连接,您的 LLM 客户端将能够感知到这个新的 MCP 服务器及其提供的工具。

您可以通过向 LLM 提问或发送指令来使用这些工具,例如:

  • 询问 LLM:“你能列出我所有的 Feed 源吗?” (LLM 可能会调用 'all_syndication_feeds' 工具)
  • 在知道某个 Feed 的 ID 后,指示 LLM:“请获取 ID 为 [Feed ID] 的 Feed 的最新文章列表。” (LLM 可能会调用 'get_syndication_feed_items' 工具)
  • 要求 LLM:“请帮我抓取并总结一下这个网页的内容:[URL]” (LLM 可能会调用 'fetch_link' 工具)

LLM 将使用 MCP 协议与 Feed MCP 服务器通信,获取信息并用于生成响应。

信息

分类

网页与API