使用说明
GitHub上下文MCP服务器
一个MCP(模型上下文协议)服务器,允许Claude直接从Claude Desktop或Claude Code访问一个或多个GitHub存储库,包括私有存储库。
对存储库进行管理 运行时动态:只需告诉Claude添加或删除一个repo,它就会立即持久化,不需要编辑配置文件。
先决条件
- Node.js 18岁或以后
- A. GitHub 个人访问令牌
安装
npm install
npm run build
GitHub令牌设置
- 首选 GitHub→ 设置→ 开发者设置→ 个人访问令牌→ 代币(经典)
- 点击 生成新令牌(经典)
- 给它起个名字(例如。
claude-mcp) - 选择
repo范围(涵盖公共和私有存储库) - 点击 生成令牌 并复制它
如果你只需要公共仓库
public_repo范围是足够的。
Claude桌面配置
在以下位置编辑配置文件:
- 窗户:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
在内部添加此块 "mcpServers":
{
"mcpServers": {
"github-context": {
"command": "node",
"args": ["path_to_repo/dist/index.js"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}
就是这样——这里不需要回购列表。保存后重新启动Claude Desktop。
管理存储库
Repos在运行时通过Claude本身进行管理。列表存储在 dist/repos.json 并在会话中持续存在。
添加回购
“将仓库myorg/backend添加到GitHub上下文中”
克劳德打电话来 add_repo → 验证是否可以使用您的令牌访问回购→ 保存到 repos.json.
删除repo
“从GitHub上下文中删除myorg/old项目”
克劳德打电话来 remove_repo → 更新 repos.json.
列出当前存储库
“您可以访问哪些存储库?”
克劳德打电话来 list_repos → 显示当前保存的所有内容。
更改立即生效,无需重新启动。
可用工具
回购管理
| 工具 | 说明 |
|---|---|
list_repos |
显示所有已保存的存储库 |
add_repo |
添加仓库(保存前验证访问权限) |
remove_repo |
从列表中删除仓库 |
数据访问
| 工具 | 说明 |
|---|---|
get_repo_info |
元数据:描述、语言、星号、默认分支、可见性 |
list_files |
浏览任何路径的文件和目录 |
get_file |
读取任何文件的全部内容 |
search_code |
跨回购的搜索代码(GitHub搜索API) |
get_commits |
最近的提交历史记录,可选择按分支或文件路径过滤 |
get_branches |
列出所有分支(标记受保护的分支) |
get_pull_requests |
列出打开、关闭或所有拉取请求 |
get_issues |
列出未解决、已解决或所有问题 |
通用参数
repo—"owner/repo"格式,必须在已保存的列表中branch--分支名称、标签或提交SHA(默认为回购的默认分支)path--仓库内的文件或目录路径max_results--要退回多少件物品state—"open","closed",或"all"(用于PR和问题)
示例提示
Add the repo myorg/backend to GitHub context.
List all the files in the src/ directory of myorg/backend.
Read the file src/auth/middleware.ts from myorg/backend.
Search for "function authenticate" in myorg/backend.
Show me the last 10 commits on the main branch of myorg/frontend.
What open issues are there in myorg/backend?
Remove myorg/old-project from GitHub context.
重新存储文件位置
默认情况下,存储库存储在 dist/repos.json 在已构建的脚本旁边。要使用自定义路径,请设置 REPOS_FILE 克劳德桌面配置中的env-var:
"env": {
"GITHUB_TOKEN": "ghp_your_token_here",
"REPOS_FILE": "localpath/.config/github-mcp/repos.json"
}
如果您希望仓库列表在重建后仍然有效,或者希望在多个项目之间共享,这将非常有用。
发展
无需构建即可运行(适用于本地测试):
GITHUB_TOKEN=ghp_... npm run dev
更改源代码后重新编译:
npm run build
然后重新启动Claude Desktop。
项目结构
├── src/
│ └── index.ts # MCP server — all tools, repo persistence logic
├── dist/ # Compiled output (generated by npm run build)
│ ├── index.js
│ └── repos.json # Persisted repo list (auto-created on first add_repo)
├── package.json
├── tsconfig.json
├── .env.example
└── claude-desktop-config.example.json
安全说明
- 您的GitHub令牌通过环境变量传递,从未记录或发送给Claude。
- 只有通过明确添加的repos
add_repo是可访问的——即使您的令牌具有更广泛的访问权限,Claude也无法访问其他存储库。 add_repo在保存之前,验证仓库是否存在,以及是否可以使用您的令牌访问。- 文件内容被截断为100000个字符,以防止上下文溢出。