项目简介

本项目包含一个基于 Python 和 FastMCP 框架构建的 MCP 服务器代理('github_proxy_mcp_server.py')。它旨在扩展标准的 GitHub MCP 服务器功能,特别是增加了对 GitHub Pull Request (PR) 的高级筛选和自动评分能力。该服务通过 JSON-RPC 协议通信,主要为 LLM Agent 客户端提供上下文信息和工具调用接口,是生成 Higress 社区月报工作流中的关键组件。

主要功能点

  • 增强的 PR 数据获取: 提供一个名为 'get_good_pull_requests' 的工具,能够按年份和月份筛选已合并的 PR,并自动结合 LLM 对 PR 进行评分,选出质量较高的 PR 列表。
  • 代理调用外部 MCP 服务: 内部会调用另一个独立的 Go 语言实现的 GitHub MCP 服务器('github-mcp-serve')来执行基础的 GitHub API 调用,例如列出 PR 文件变更等。本项目在此基础上增加了评分和过滤逻辑。
  • 标准 MCP 接口: 实现 MCP 的 JSON-RPC 协议,定义并注册工具,等待 LLM 客户端调用。
  • Stdio 传输支持: 通过标准输入输出(Stdio)与客户端进行通信。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/higress-group/higress-report-agent.git
    cd higress-report-agent
  2. 安装 Python 依赖: 确保已安装 Python 和 'uv'(或 'pip'),然后安装项目依赖。
    # 推荐使用 uv
    uv sync
    # 或者使用 pip
    # pip install -r requirements.txt
  3. 下载/构建 Go 语言 GitHub MCP 服务器: 本项目依赖另一个 Go 语言实现的 GitHub MCP 服务器。需要将其可执行文件('github-mcp-serve')放置在项目根目录下。可以从其仓库构建或下载预编译版本。
    # 假设你已经克隆了 github-mcp-server 仓库
    # git clone https://github.com/github/github-mcp-server.git
    # cd github-mcp-server
    # go build -o ../higress-report-agent/github-mcp-serve ./cmd/github-mcp-server
    # cd ../higress-report-agent
  4. 配置环境变量: 创建一个 '.env' 文件在项目根目录下,包含 GitHub Personal Access Token 和 LLM 配置。
    GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token
    MODEL_NAME=your_llm_model_name # 例如 qwen3-235b-a22b
    MODEL_SERVER=your_llm_server_url # 例如 https://dashscope.aliyuncs.com/compatible-mode/v1
    DASHSCOPE_API_KEY=your_dashscope_api_key # 如果使用 DashScope 模型
    请根据实际使用的 LLM 服务商填写配置。
  5. 授权执行脚本:
    chmod +x ./github_proxy_mcp_server.py
    chmod +x ./github-mcp-serve

MCP 服务器配置(供 MCP 客户端参考)

使用此 MCP 服务器的客户端(例如 'main.py' 中配置的 LLM Agent)需要知道如何启动和连接到它。典型的配置信息(通常在客户端的配置文件或代码中定义)如下:

这是一个 MCP 服务器的配置示例:

  • 名称 (server name): 'github-mcp-server-proxy'
  • 启动命令 (command): 'uv' (或者直接 './github_proxy_mcp_server.py' 如果 uv 在 PATH 中)
  • 启动参数 (args): '['run', './github_proxy_mcp_server.py', 'stdio', '--toolsets', 'issues', '--toolsets', 'pull_requests', '--toolsets', 'repos']'
    • 'run': uv 的运行命令
    • './github_proxy_mcp_server.py': 要运行的 Python 服务器脚本
    • 'stdio': 指定使用标准输入输出作为传输协议
    • '--toolsets issues --toolsets pull_requests --toolsets repos': 声明服务器提供的工具集能力(尽管 Python 脚本主要实现 pull_requests 工具,这里声明了兼容的工具集)

客户端框架(如 Qwen Agent 或其他兼容 MCP 的客户端)会读取这些配置,根据需要执行 'uv run ./github_proxy_mcp_server.py stdio ...' 命令启动服务器进程,并通过标准输入输出进行 JSON-RPC 消息交换。

基本使用方法

本项目通常作为后台服务被 LLM Agent 客户端调用。在安装和配置完成后,可以直接运行 'main.py'(它是使用此 MCP 服务和其他服务的客户端示例):

# 确保 .env 文件已配置好
uv run ./main.py
# 或 python main.py

运行 'main.py' 会启动一个交互式界面,LLM Agent 会调用配置的 MCP 服务(包括此代理服务和原始 Go 服务)来获取数据并生成月报。例如,输入 '帮我生成higress社区2025年4月份的月报',Agent 就会调用 'github-mcp-server-proxy' 上的 'get_good_pull_requests' 工具来获取和处理 PR 数据。

信息

分类

AI与计算