1 项目简介
GitHub MCP Server
Model Context Protocol Server for GitHub
GitHub MCP Server 使 AI 工具能够直接与 GitHub 平台进行交互。它赋予 AI 代理、助手和聊天机器人读取代码库和代码文件、管理 Issue 和 PR、分析代码以及自动化工作流程的能力。
仓库管理
浏览代码、搜索文件、分析提交、理解项目结构
Issue & PR 自动化
创建、更新和管理 Issue 与 Pull Request
CI/CD 智能
监控 GitHub Actions 工作流程,分析构建信息
代码安全分析
审查安全发现、检查依赖警报
2 架构概述
技术栈
目录结构
github-mcp-server/
├── cmd/github-mcp-server/ # 主程序入口
├── docs/ # 文档目录
│ └── installation-guides/ # IDE 安装指南
├── internal/ # 内部实现
├── pkg/ # 公共包
├── script/ # 脚本工具
├── .github/ # GitHub 工作流
├── Dockerfile # Docker 构建文件
├── go.mod / go.sum # Go 依赖管理
├── server.json # 服务器配置
└── README.md # 项目说明
3 核心功能
- 浏览和查询代码
- 搜索文件和内容
- 分析提交历史
- 理解项目结构
- 获取分支和标签信息
- 创建和更新 Issue
- 搜索和过滤 Issue
- 管理 Issue 标签
- 分配和关闭 Issue
- 添加评论
- 创建 Pull Request
- 查看 PR 差异和文件变更
- 管理 PR 审查
- 合并和关闭 PR
- 添加 PR 评论
- 查看工作流程运行状态
- 分析构建失败原因
- 触发工作流程
- 查看运行日志
- 代码扫描警报
- Secret 扫描
- Dependabot 警报
- 安全公告
4 工具集
默认工具集
未指定配置时,服务器加载:context, issues, pull_requests, repos, users
| 工具集 | 说明 |
|---|---|
context |
用户和 GitHub 上下文信息 |
repos |
仓库操作 |
issues |
Issue 管理 |
pull_requests |
Pull Request 操作 |
git |
Git 分支操作 |
users |
用户信息 |
organizations |
组织管理 |
actions |
GitHub Actions 工作流 |
code_security |
代码扫描和安全警报 |
secret_protection |
Secret 扫描保护 |
dependabot |
依赖管理 |
discussions |
讨论区 |
gists |
Gist 代码片段 |
projects |
GitHub Projects |
labels |
标签管理 |
notifications |
通知管理 |
copilot |
Copilot 功能 |
5 获取 GitHub PAT
什么是 PAT?
Personal Access Token(个人访问令牌)是 GitHub 提供的一种身份验证方式,用于替代密码访问 GitHub API。MCP Server 需要 PAT 来代表你与 GitHub 交互。
进入开发者设置
在左侧菜单最底部,点击 Developer settings
生成新 Token
点击右上角 Generate new token → 选择 Generate new token (classic)
配置 Token
-
Note:输入描述性名称,如
github-mcp-server - Expiration:选择过期时间(推荐 90 天或自定义)
选择权限范围(Scopes)
根据需要勾选以下权限:
repo
- 完整仓库访问(必选)
read:org
- 读取组织信息(推荐)
read:packages
- 读取包信息(推荐)
gist
- Gist 操作(可选)
read:project
- Projects 操作(可选)
生成并复制 Token
点击底部 Generate token 按钮
重要:Token 只会显示一次!请立即复制并安全保存。如果丢失,需要重新生成。
Fine-grained PAT 提供更精细的权限控制,可以限制到特定仓库。
进入 Fine-grained tokens 页面
打开 Fine-grained tokens 页面配置 Token
- • Token name:描述性名称
- • Expiration:过期时间
- • Repository access:选择 All repositories 或特定仓库
设置 Repository permissions
• Contents: Read and write
• Issues: Read and write
• Pull requests: Read and write
• Metadata: Read-only (自动选中)
6 安装配置
重要提醒
npm 包 @modelcontextprotocol/server-github 自 2025 年 4 月起不再受支持。请使用官方 Docker 镜像。
远程服务器
由 GitHub 托管,自动更新,无需本地安装。
服务器地址:
https://api.githubcopilot.com/mcp/
本地服务器 - Docker
使用官方 Docker 镜像运行:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=your_token \
ghcr.io/github/github-mcp-server
从源码构建
需要 Go 1.24+:
git clone https://github.com/github/github-mcp-server.git
cd github-mcp-server/cmd/github-mcp-server
go build
7 IDE 安装指南
远程设置(推荐):
claude mcp add-json github '{
"type": "http",
"url": "https://api.githubcopilot.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_GITHUB_PAT"
}
}'
本地设置(Docker):
claude mcp add github \
-e GITHUB_PERSONAL_ACCESS_TOKEN=YOUR_GITHUB_PAT \
-- docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN \
ghcr.io/github/github-mcp-server
验证:运行 claude mcp list
编辑 claude_desktop_config.json:
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PAT"
}
}
}
}
编辑 ~/.cursor/mcp.json:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_GITHUB_PAT"
}
}
}
}
需要 Cursor v0.48.0+ 以支持 Streamable HTTP
编辑 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_GITHUB_PAT"
}
}
}
}
也可通过 Plugin Store 搜索 "GitHub MCP Server" 安装
1. 存储 PAT 到 ~/.gemini/.env:
GITHUB_MCP_PAT=your_token_here
2. 编辑 ~/.gemini/settings.json:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_MCP_PAT}"
}
}
}
}
验证:运行 /mcp list
支持 OAuth 认证,创建 .mcp.json:
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
通过 CodeLens 进行 OAuth 认证,然后在 Agent 模式启用工具
配置远程 URL 和 PAT 认证头:
URL: https://api.githubcopilot.com/mcp/
Header: Authorization: Bearer YOUR_GITHUB_PAT
JetBrains IDE 尚不支持 OAuth 认证
8 配置选项
远程服务器 HTTP 头
| Header | 说明 |
|---|---|
X-MCP-Toolsets |
启用指定工具集(逗号分隔) |
X-MCP-Tools |
启用指定单个工具 |
X-MCP-Readonly |
只读模式,禁止修改操作 |
X-MCP-Lockdown |
锁定模式,限制公开仓库访问 |
X-MCP-Insiders |
启用实验性功能 |
URL 路径修饰符
/x/{toolset}
指定工具集,如 /x/issues
/x/all
加载所有可用工具集
/readonly
只读访问模式
/insiders
实验性功能
环境变量(本地服务器)
| 变量 | 说明 |
|---|---|
GITHUB_PERSONAL_ACCESS_TOKEN |
必需,GitHub PAT |
GITHUB_TOOLSETS |
默认工具集 |
GITHUB_TOOLS |
默认单个工具 |
GITHUB_READ_ONLY |
启用只读模式 |
GITHUB_DYNAMIC_TOOLSETS |
启用动态工具集发现 |
GITHUB_HOST |
GitHub Enterprise Server 地址 |
9 安全最佳实践
使用环境变量存储 PAT
不要将令牌硬编码在配置文件中
最小权限原则
仅授予必要的 OAuth 范围:repo, read:packages, read:org
将 .env 添加到 .gitignore
防止意外提交敏感信息
定期轮换令牌
设置令牌过期时间,定期更新
限制配置文件权限
使用 chmod 600 保护配置文件
10 使用示例
指定工具集配置
{
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_GITHUB_PAT",
"X-MCP-Toolsets": "repos,issues,pull_requests"
}
}
只读模式配置
{
"type": "http",
"url": "https://api.githubcopilot.com/mcp/readonly",
"headers": {
"Authorization": "Bearer YOUR_GITHUB_PAT"
}
}
Docker 运行指定工具集
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=your_token \
-e GITHUB_TOOLSETS=repos,issues,actions \
ghcr.io/github/github-mcp-server
工具搜索命令
使用内置命令搜索可用工具:
github-mcp-server tool-search "create issue"