项目简介
本项目包含一个基于 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)与客户端进行通信。
安装步骤
- 克隆仓库:
git clone https://github.com/higress-group/higress-report-agent.git cd higress-report-agent - 安装 Python 依赖: 确保已安装 Python 和 'uv'(或 'pip'),然后安装项目依赖。
# 推荐使用 uv uv sync # 或者使用 pip # pip install -r requirements.txt - 下载/构建 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 - 配置环境变量: 创建一个 '.env' 文件在项目根目录下,包含 GitHub Personal Access Token 和 LLM 配置。
请根据实际使用的 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 模型 - 授权执行脚本:
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与计算