Docker化GitHub MCP服务器
GitHub的,之API提供资料档案库的文件操作、资料档案库管理、检索功能等Model Context Protocol(MCP)打开服务器Docker作为集装箱提供。
机能
- 创建自动分支:在创建/更新文件时push有时,自动创建不存在的分支
- 全面的错误处理:为常见问题提供明确的错误消息
- Git保留历史记录:强制操作push不使用适当的Git保留历史记录
- 批量操作:支持单个文件和多个文件操作
- 高级搜索:代码、标题/PR、支持用户搜索
安装,安装
1.GitHub个人访问令牌の準備
- 创建
- GitHubの设定>开発者设定>Personal access tokenに移动 - 选择此标记可访问的存储库(公共、全部或特定存储库) - repo选择范围(完全控制专用存储库) - 或者,如果仅使用公共存储库public_repo仅选择范围 - 复制生成的标记
.env为文件设置标记:
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here2. Docker构建和启动
构建过程
# Dockerイメージのビルド
docker build -t mcp/github -f src/github/Dockerfile .启动步骤(对于docker run)
docker run -it --rm -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN -p 5000:5000 mcp/github多容器启动
# .envファイルを作成してトークンを設定
cp .env.template .env
# 環境変数を編集
nano .env
# 起動
docker-compose up -d这允许在两个不同端口(5002和5003)上GitHub MCP服务器启动。 集装箱是tty模式启动stdio通过接口等待通信。
3. Cursor使用方法
MCP服务器设计为通过标准输入/输出(stdio)进行通信。Cursor的明细栏样式中定义的设置claude_desktop_config.json中添加以下设置:
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}通过该设定Cursor只在需要的时候MCP启动服务器,处理完成后自动退出。
使用方法
MCP服务器以包含工具名称及其输入参数的消息格式接受请求。
请求示例(/respond端点)
创建或更新文件
curl -X POST http://localhost:5002/respond \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": {
"tool_name": "create_or_update_file",
"input": {
"owner": "your-username",
"repo": "your-repo",
"path": "example.txt",
"content": "Hello, world!",
"message": "Add example file",
"branch": "main"
}
}
}
]
}'存储库搜索
curl -X POST http://localhost:5002/respond \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": {
"tool_name": "search_repositories",
"input": {
"query": "modelcontextprotocol"
}
}
}
]
}'文件内容获取
curl -X POST http://localhost:5002/respond \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": {
"tool_name": "get_file_contents",
"input": {
"owner": "octocat",
"repo": "Hello-World",
"path": "README.md"
}
}
}
]
}'支持的工具
GitHub MCP服务器提供以下功能:
create_or_update_file-在存储库中创建/更新单个文件push_files-一次提交即可推送多个文件search_repositories- GitHub搜索存储库create_repository-新的GitHub创建存储库get_file_contents-获取文件或目录内容create_issue-创建新问题create_pull_request-创建新的拉式请求fork_repository-分叉存储库create_branch-创建新分支list_commits-获取分支提交列表list_issues-获取存储库问题列表update_issue-更新现有问题add_issue_comment-将评论添加到主题search_code-查找代码search_issues-查找问题和拉式请求search_users- GitHub查找用户get_issue-获取特定问题的详细信息get_pull_request-获取特定抽取请求的详细信息list_pull_requests-获取拉式请求列表create_pull_request_review-创建拉式请求审核merge_pull_request-合并抽取请求get_pull_request_files-获取拉式请求更改文件列表get_pull_request_status-获取拉式请求状态update_pull_request_branch-更新拉式请求分支get_pull_request_comments-获取拉式请求注释get_pull_request_reviews-获取抽取请求审核
单击功能区上的官方存储库文档来修改标记元素的显示属性。
注意事项
- 访问标记: GitHub Personal Access Token是所需的范围(repo或public_repo)中所述修改相应参数的值。API请注意汇率限制。
- 请求格式: MCP的协议,每个消息role打开content(在里面tool_name打开input)中所述修改相应参数的值。
- stdio模式:此MCP服务器是HTTP它被设计为通过标准输入/输出(stdio)而不是服务器进行通信。Cursor中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
许可证
此项目包含MCP server相同的MIT是在许可证下提供的。

