项目简介

OpenGathyr 是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于收集、处理和分发 RSS/Atom 信息源。它将传统的 RSS 聚合功能通过标准化的 MCP 接口暴露给大型语言模型 (LLM) 或其他 MCP 客户端,使其能够方便地获取最新的信息流内容。

主要功能点

  • RSS/Atom 信息源聚合: 自动从配置的 URL 拉取 RSS/Atom 信息。
  • 内容搜索: 提供统一接口,在所有聚合的信息源内容中进行搜索。
  • 信息源管理: 支持动态添加、移除和列出当前监控的信息源。
  • 自动化刷新: 可配置定时刷新间隔,确保内容保持最新。
  • 环境配置: 通过环境变量轻松配置信息源 URL、刷新间隔等。
  • 容器化部署: 支持 Docker,便于部署和管理。

安装步骤

  1. 环境准备: 确保已安装 Node.js 22.x 或更高版本以及 npm 7.x 或更高版本。如果使用容器化部署,需要安装 Docker。
  2. 克隆仓库:
    git clone https://github.com/risadams/OpenGathyr.git
    cd OpenGathyr
  3. 安装依赖:
    npm install
  4. 创建配置: 在项目根目录创建 '.env' 文件,根据您的需要配置服务器名称、版本和 RSS 信息源 URL 等。
    # 服务器配置
    MCP_SERVER_NAME=opengathyr
    MCP_SERVER_VERSION=1.0.0
    
    # RSS 信息源 URL (每行一个)
    RSS_FEED_URL_1=https://news.google.com/rss
    RSS_FEED_URL_2=https://example.com/feed.xml
    
    # 可选: RSS 刷新间隔 (毫秒, 默认 300000)
    # RSS_REFRESH_INTERVAL=60000
    
    # 可选: 每个信息源保留的最大项目数 (默认 20)
    # RSS_MAX_ITEMS=10
  5. 构建项目:
    npm run build
  6. 启动服务器:
    • 直接运行:
      npm start
    • (可选)使用 Docker 启动:
      # 构建镜像
      docker build -t opengathyr .
      
      # 运行容器 (请注意,标准输入/输出通常需要交互式模式)
      docker run -it opengathyr

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

MCP 客户端需要配置 MCP 服务器的启动方式才能与其通信。对于 OpenGathyr,它默认通过标准输入/输出 (Stdio) 进行通信。

客户端配置中用于启动 OpenGathyr 服务器的部分通常包含以下信息:

  • Server Name: 服务器的标识名称,例如 'opengathyr'。
  • Command: 启动服务器的可执行命令,例如 'node'。
  • Args: 传递给命令的参数,指向服务器的主程序文件,例如 'dist/index.js'。
  • Transport: 使用的传输协议类型,例如 'stdio'。

请参考您的 MCP 客户端文档,根据上述信息配置服务器连接。例如,一个典型的 MCP 客户端配置片段可能包含 'command: ["node", "dist/index.js"]' 和 'transport: "stdio"' 等信息。

请注意,服务器本身的运行时配置(如 RSS 源 URL、刷新间隔等)是通过 '.env' 文件或环境变量在服务器启动前完成的,而不是通过 MCP 协议配置。

基本使用方法

MCP 客户端连接到 OpenGathyr 服务器后,可以通过发送 MCP Tool 请求来利用其功能。OpenGathyr 提供了以下主要工具:

  • 'list-feeds':列出所有已配置和正在监控的 RSS/Atom 信息源。无需参数。
  • 'get-feed':根据信息源的名称获取其最新的内容和项目列表。需要一个参数:'feedName' (信息源的名称)。
  • 'search-feeds':在所有信息源的内容中搜索特定关键词。需要一个参数:'query' (搜索词)。
  • 'add-feed':添加一个新的 RSS/Atom 信息源进行监控。需要参数:'name' (信息源的名称) 和 'url' (信息源的 URL)。可选参数:'refreshInterval' (刷新间隔,毫秒) 和 'maxItems' (最大项目数)。
  • 'remove-feed':根据名称移除一个信息源,停止监控。需要一个参数:'feedName' (信息源的名称)。

客户端通过发送相应的 Tool 请求(包含工具名称和参数)来调用这些功能,服务器将返回包含结果的响应。

信息

分类

网页与API