项目简介
GitHub MCP 代理服务器是一个功能强大的后端服务,旨在为编码代理(如 LLM 客户端)提供丰富的上下文信息和外部功能。它支持多仓库管理,每个仓库运行在独立的端口上,以提高兼容性和进程隔离。服务器通过 Model Context Protocol (MCP) 标准协议通信,提供 GitHub 拉取请求管理、CI/CD 状态检查、代码库符号搜索和定义查找等核心能力。
主要功能点
- 多仓库支持: 同时管理多个 Git 仓库,每个仓库拥有独立的 MCP 服务实例。
- 独立端口与进程隔离: 每个仓库配置一个专用端口,实现客户端兼容性并确保单个仓库的问题不影响其他服务。
- GitHub PR 管理: 提供查询 Git 分支、查找关联 PR、获取 PR 评论、回复 PR 评论等工具。
- CI/CD 分析: 能够检查 GitHub Actions 的构建状态,提取 CI/CD 日志中的 linting 错误和构建/测试失败信息,并提供修复指导。
- 代码智能工具: 支持在仓库中搜索函数、类、变量等符号,查找符号定义、引用和悬停信息(通过内部调用 LSP 客户端实现)。
- 健康检查: 提供 API 端点和命令行工具,用于检查仓库、Git 环境和 MCP 服务器的健康状态。
- 灵活的配置: 通过 JSON 文件配置仓库,支持运行时修改和自动重载。
- 生产就绪: 包含详细的日志记录、错误处理和系统服务管理脚本(Systemd/Launchd)。
安装步骤
- 克隆仓库:
git clone https://github.com/MarksStuff/github-agent.git cd github-agent - 安装依赖并设置系统服务:
执行项目提供的安装脚本,它会安装所有 Python 依赖并配置为系统服务(Linux 系统需要 'sudo' 权限,macOS 会安装到用户空间)。
./setup/setup_system.sh # Linux (需要 sudo): sudo ./scripts/install-services.sh # macOS: ./scripts/install-services.sh - 配置 GitHub 令牌:
编辑 '.env' 配置文件,设置您的 GitHub 个人访问令牌。确保该令牌具有 'repo' 范围的权限。
重要提示: 建议为自动化代理创建一个独立的 GitHub 用户和令牌,以避免权限冲突和 API 限制。代理用户需创建 PR 才能回复评论。# Linux: sudo nano /opt/github-agent/.env # macOS: nano ~/.local/share/github-agent/.env # 在文件中添加或修改以下行: GITHUB_TOKEN=ghp_your_github_token_here - 启动服务:
服务将自动启动并在登录时自动重启。# Linux: sudo systemctl start pr-agent # macOS: launchctl start com.mstriebeck.github_mcp_server
MCP 客户端配置
为了让 MCP 客户端(例如 Claude Code 或 Amp)能够连接并使用此服务器,您需要提供 MCP 服务器的连接信息。该服务器以多端口架构运行,每个仓库都会分配一个专用端口。
以下是一个 MCP 客户端的 JSON 配置示例,假定您的 MCP 服务器在 '8081' 端口上为 'my-project' 仓库提供服务:
{ "mcpServers": { "github-mcp-server-my-project": { "url": "http://localhost:8081/mcp/", "name": "GitHub PR Agent (my-project)", "description": "连接到 my-project 仓库的 GitHub MCP 代理服务器" } } }
配置说明:
- 'url': MCP 服务器的访问地址。对于每个仓库,这通常是 'http://localhost:<端口>/mcp/'。
- 'name': 一个用户友好的名称,用于在客户端界面中识别此服务器。建议包含仓库名称以便区分。
- 'description': 对该 MCP 服务器实例的简要描述。
- 'command' 和 'args' 参数: 该服务器设计为作为独立的系统服务运行,因此 MCP 客户端通常无需提供 'command' 和 'args' 参数,只需配置服务器的 'url' 即可与已运行的服务建立连接。
- 如何获取仓库端口: 您可以通过以下命令行工具查询已配置仓库的名称和端口号:
# Linux: sudo /opt/github-agent/.venv/bin/python /opt/github-agent/repository_cli.py list # macOS: ~/.local/share/github-agent/.venv/bin/python ~/.local/share/github-agent/repository_cli.py list
基本使用方法
- 管理仓库:
使用 'repository_cli.py' 工具来添加、移除或列出您希望 MCP 服务器管理的 Git 仓库。
- 列出所有已配置的仓库及其状态:
python3 repository_cli.py list - 添加一个新仓库:
python3 repository_cli.py add <仓库名称> <仓库路径> --description="您的仓库描述" - 移除一个仓库:
python3 repository_cli.py remove <仓库名称> - 自动分配端口:
python3 repository_cli.py assign-ports --start-port=8081
- 列出所有已配置的仓库及其状态:
- 在 MCP 客户端中使用工具:
启动您的 MCP 客户端(例如 Claude Code 或 Amp),并确保已配置正确的服务器 URL。您可以通过在客户端中提问来调用服务器提供的工具,例如:
- "Can you check the current Git branch and find any associated pull requests?" (请检查当前 Git 分支并查找任何关联的拉取请求吗?)
- "What are the CI lint errors for this project?" (这个项目有哪些 CI lint 错误?)
- "Find the definition of 'DataProcessor' in 'main.py'." (请在 'main.py' 中查找 'DataProcessor' 的定义。) 客户端将通过 MCP 协议向服务器发送请求,服务器执行相应的 GitHub 或代码库工具,并将结果返回给客户端。
信息
分类
开发者工具