PR Watcher MCP 服务器

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个 MCP 服务器,核心职责是通过 MCP 协议向客户端暴露一组工具(Tools),使得 LLM 可以通过标准化的 JSON-RPC 请求来执行 PR 监控、问题查询、问题标记等操作,并获取相关的上下文信息。
  • 主要功能点

    • MCP 服务器实现与注册
      • 使用 @modelcontextprotocol/sdk 提供的 Server,基于 MCP 标准实现请求处理与响应折返。
    • 工具集合
      • watch_pr:开始监控指定的 GitHub PR(通过 URL 或 owner/repo#number 指定)
      • check_for_issues:轮询获取该 PR 的新问题,返回尚未处理的项
      • get_issue_details:按 issue-id 获取详细信息
      • mark_issue_handled:将某个问题标记为已处理
      • get_watched_pr:获取当前正在监控的 PR 信息
      • clear_handled:清空已处理问题的记录
    • 集成外部服务
      • GitHub API(通过 GITHUB_TOKEN)获取 PR 评论、Review、Check Runs、Status 等信息
      • Buildkite 集成(在辅助脚本中实现,需提供 BUILDKITE_TOKEN 可选)
    • 会话与状态
      • 会话级状态维护(watchedPR、handledIssueIds、lastCheckTime 等),支持多 PR 的单进程监控逻辑
    • 客户端可观测输出
      • MCP 响应包含文本内容,帮助对话代理理解结果与下一步动作
    • 传输与启动
      • 使用 StdioServerTransport 启动,允许通过标准输入/输出接入 Cursor 等环境
  • 安装步骤

    • 克隆或拷贝到本地
    • 进入仓库目录
    • 安装依赖
    • 准备环境变量(至少 GITHUB_TOKEN,若使用 Buildkite 还需 BUILDKITE_TOKEN)
    • 启动 MCP 服务器(例如 node index.js,在支持的环境中通过 Stdio 传输接入)
  • 服务器配置(MCP 客户端需要的最小信息)

    • 说明:MCP 客户端通过该配置信息知道如何启动并连接到 MCP 服务器。以下以 JSON 形式给出配置示例要点,实际使用时请填入具体路径和环境信息。
    • 配置要点(JSON 结构,不作为代码块呈现,方便复制到配置文件中): { "mcpServers": { "pr-watcher": { "name": "PR Watcher MCP Server", "command": "node", "args": ["<path-to-your-pr-watcher>/index.js"] } // 如有多实例可按需添加 } }
    • 注释说明
      • name:MCP 服务器在客户端显示的名称,便于区分不同的 MCP 服务
      • command:启动服务器的可执行命令
      • args:启动命令的参数,通常指向服务器入口文件,如 index.js
      • 路径请替换为实际部署的路径
    • 说明
      • MCP 客户端仅需要该配置信息来启动并连接到服务器,后续的请求/响应通过 MCP 协议进行。服务器自身实现了对工具的注册与执行逻辑,并通过标准化的接口暴露给客户端。
  • 基本使用方法

    • 运行与连接
      • 将配置文件提供给 MCP 客户端,使用指定命令启动服务器连接,即可在 Cursor 等环境中通过 MCP 调用服务器暴露的工具。
    • 常用操作流程
      • 使用 watch_pr 提供 PR 标识,初始化监控
      • 使用 check_for_issues 轮询当前的未处理问题
      • 使用 get_issue_details 查看具体某个问题的上下文
      • 使用 mark_issue_handled 将不再需要注意的问题标记为已处理
      • 使用 get_watched_pr 查看当前监控状态
      • 使用 clear_handled 重置已处理记录,重新展示所有问题
    • 运行依赖与注意
      • 需要 Node.js 环境
      • 需要 GitHub 访问令牌 GITHUB_TOKEN(私有仓库需要更高权限的 token,公共仓库也可用)
      • 若计划集成 Buildkite,需要 BUILDKITE_TOKEN

服务器信息