关于 Self-hosted GitHub MCP server
面向使用多个 MCP 客户端的运维者,这是一款可自托管的 Python GitHub MCP 服务。工具范围聚焦于拉取请求、仓库文件和 Dependabot 警报。
主要功能
- 01PAT 认证与 Keychain 支持
- 02拉取请求列表与管理
- 03仓库文件读写
- 04查看 Dependabot 警报
- 05检查令牌与速率限制
适用场景
- 01通过 MCP 客户端审查并合并拉取请求
- 02读取或更新仓库文件
- 03查看 Dependabot 警报和令牌状态
MCP 相关
通过 stdio 将 GitHub 操作作为 MCP 工具提供给兼容客户端。使用个人访问令牌进行认证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
github-mcp
可自托管的 GitHub MCP 服务。使用个人访问令牌进行身份验证,通过 stdio 传输,与传输方式无关,因此可与 Claude Code(任何账户)、Codex CLI、Cursor 或任何兼容 MCP 的客户端配合使用。无需依赖 claude.ai OAuth。
基于 FastMCP 使用 Python 编写。安装方式与其他社区 Python MCP 服务相同。
为什么开发此项目
官方的 github/github-mcp-server(Go,60 多种工具)非常出色,适合需要包含各种功能、且与单一 Agent 平台身份验证流程绑定的服务。此项目面向以下使用者:
- 在多个 Claude 账户、Codex CLI、Cursor 或其他 MCP 客户端之间切换,并希望所有客户端使用相同的 GitHub 身份验证方式。
- 希望工具范围精简且经过审计,专注于 PR、仓库文件和 Dependabot 操作。
- 希望使用 Python 安装,并与其他 MCP 服务一同运行。
如果以上都不适用,请改用 github/github-mcp-server,这是更合适的选择。
工具范围(v0.1.0)
| 工具 | 用途 |
|---|---|
health_check | 验证 PAT 是否有效,并报告速率限制余量。接入时首先调用。 |
list_prs | 按状态筛选并列出拉取请求。 |
get_pr | 获取单个 PR,包括检查运行状态和可合并状态。 |
merge_pr | 以 squash、merge 或 rebase 方式合并,可选择删除分支。 |
list_dependabot_alerts | 扫描警报并按严重程度分组统计数量。 |
get_file | 通过 Contents API 读取文件。 |
put_file | 通过 Contents API 创建或更新文件(使用 SHA 保证幂等)。 |
未来版本将扩展支持:工作流、发布、问题、规则集、密钥扫描警报、分支保护和仓库设置。
密钥安全(请先阅读)
v0.1.1+ 默认从 macOS 钥匙串读取 PAT。 非 macOS 环境和 CI 仍支持回退到环境变量,但推荐使用钥匙串方式,因为密钥不会进入 argv 或进程环境变量,因此不会被 ps aux、pgrep -fl、lsof、/proc/<pid>/environ、崩溃转储、CI 日志、调试器或任何运行内省命令的 LLM Agent 获取。
# One-time setup (macOS):
security add-generic-password -s github-mcp -a "$USER" -w "<your-fine-grained-PAT>"
# Update later (e.g. after rotation):
security delete-generic-password -s github-mcp -a "$USER" 2>/dev/null
security add-generic-password -s github-mcp -a "$USER" -w "<new-PAT>"
请勿使用内联 --env 安装:
# BAD — bakes the PAT into ~/.claude.json + every Claude child spawn's --mcp-config argv.
# Any pgrep / ps aux dumps it.
claude mcp add github --scope user --env GITHUB_TOKEN=github_pat_... -- <command>
# GOOD — no --env block. The server reads from Keychain at call time.
claude mcp add github --scope user -- <command>
PR/事件溯源:此安全路径于 2026-05-19 添加,此前一次 pgrep -fl chrome-devtools-mcp 操作将包含 PAT 的 claude 进程信息转储到了会话记录中。请参阅 adelaidasofia/github-mcp 钥匙串迁移(待 PR 合并后添加链接)。
在非 macOS 环境中,请回退到环境变量:
export GITHUB_TOKEN=<your-PAT> # set in shell rc, NOT in argv
v0.1 工具范围所需的最低权限:Contents 读写、Pull requests 读写、Dependabot 读取。
安装
打开 Claude Code,然后粘贴:
/plugin marketplace add adelaidasofia/github-mcp
/plugin install github-mcp@github-mcp
旧版安装方式
git clone https://github.com/adelaidasofia/github-mcp ~/.claude/github-mcp
cd ~/.claude/github-mcp
uv tool install --editable .
或者一次性运行,不进行持久安装:
cd ~/.claude/github-mcp
uv run github-mcp
服务器会按以下优先级从环境变量中读取 GitHub PAT:
GITHUB_TOKENGH_TOKEN
建议使用细粒度令牌。
权限范围矩阵
| 权限 | 访问权限 | 解锁的功能 |
|---|---|---|
| Metadata | 读取 | 基础权限(设置任何其他仓库权限时会自动要求) |
| Contents | 读取和写入 | get_file、put_file |
| Pull requests | 读取和写入 | list_prs、get_pr、merge_pr |
| Dependabot alerts | 读取 | list_dependabot_alerts |
| Administration | 读取和写入 | 未来:规则集、分支保护、allow_auto_merge 开关 |
| Workflows | 读取和写入 | 未来:读取/更新 .github/workflows/*.yml |
| Actions | 读取和写入 | 未来:触发并检查工作流运行 |
| Secret scanning alerts | 读取 | 未来:全范围密钥扫描 |
| Code scanning alerts | 读取 | 未来:全范围 CodeQL 扫描 |
v0.1 最低要求:Metadata + Contents(读/写)+ Pull requests(读/写)+ Dependabot alerts(读)即可使用此版本中的所有工具。
面向未来:现在授予表中的全部权限,意味着新增 MCP 工具时无需轮换 PAT。这相当于在细粒度 PAT 界面中勾选“所有仓库权限”。权衡之处在于:令牌泄露时影响范围更广。对于存储在启用了 FileVault 加密的笔记本上的个人开发令牌,这样做是合理的;对于共享或生产部署,请重新评估。
MCP 会通过 health_check 检查权限范围——完成配置后调用它,以确认令牌实际拥有的权限。
可选:使用 GITHUB_API_BASE 配置 GitHub Enterprise Server。默认值为 https://api.github.com。
接入 MCP 客户端
Claude Code
添加到 ~/.claude/.mcp.json(或项目根目录中的任意 .mcp.json):
{
"mcpServers": {
"github": {
"command": "uv",
"args": ["run", "--project", "/Users/<you>/.claude/github-mcp", "github-mcp"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
Codex CLI
添加到 ~/.codex/config.toml:
[mcp_servers.github]
command = "uv"
args = ["run", "--project", "/Users/<you>/.claude/github-mcp", "github-mcp"]
[mcp_servers.github.env]
GITHUB_TOKEN = "${GITHUB_TOKEN}"
Cursor
~/.cursor/mcp.json 使用与 Claude Code 相同的格式。环境变量配置块也相同。
其他兼容 MCP 的客户端
将其配置为启动 github-mcp 命令并通过标准输入/输出传输数据。该服务通过标准输入/输出使用标准 MCP 协议进行通信。
验证
GITHUB_TOKEN=ghp_yourpat uv run github-mcp
服务器会等待从标准输入接收 MCP 通信。在另一个 shell 中,通过客户端调用 health_check 进行验证。
测试
uv pip install -e ".[dev]"
uv run pytest tests/ -v
遥测
此插件会在某台机器上的 Claude Code 会话中首次加载时,向 myceliumai.co 发送一条匿名安装信号。
发送的内容:
- 插件名称(例如
slack-mcp) - 插件版本(例如
0.1.0)
不会发送的内容:
- 不会发送用户标识符、姓名、电子邮件、令牌或 API 密钥
- 不会发送文件路径、消息内容或任何工作相关信息
- 去重处理后不会存储 IP 地址
**原因:**帮助维护者了解大家实际安装了哪些插件,从而将精力投入到有人使用的插件上。
**选择退出:**在启动 Claude Code 前设置环境变量 MYCELIUM_NO_PING=1。钩子将完全跳过网络调用。已发送过信号的安装会在 ~/.mycelium/onboarded-<plugin> 留下一个标记文件——如果要重置状态,请将其删除。
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。