
Dockerized GitHub MCP Server

2025.04.01
0
PythonGitHub 管理代码协作开发效率
my-mcp-servers 是一个 Docker 化的 GitHub MCP 服务器,通过与 GitHub API 集成,提供文件操作、仓库管理、搜索等功能。它支持自动分支创建、错误处理、Git 历史保持、批量操作和高级搜索等功能,适用于开发者在 GitHub 上进行高效的代码管理和协作。
View on GitHub
Overview
基本能力
产品定位
my-mcp-servers 是一个基于 Docker 的 GitHub MCP 服务器,旨在通过 GitHub API 提供文件操作、仓库管理和搜索功能,帮助开发者高效管理代码仓库。
核心功能
- 自动分支创建:在文件创建/更新或推送时自动创建不存在的分支。
- 错误处理:提供清晰的错误消息以解决常见问题。
- Git 历史保持:不使用强制推送,保持适当的 Git 历史记录。
- 批量操作:支持单文件和批量文件操作。
- 高级搜索:支持代码、问题/PR 和用户的搜索。
适用场景
- 自动化 GitHub 仓库管理
- 批量文件操作
- 代码搜索和仓库搜索
- 与 Cursor 等开发工具集成
工具列表
create_or_update_file
- 创建或更新单个文件push_files
- 批量推送文件search_repositories
- 搜索 GitHub 仓库create_repository
- 创建新仓库get_file_contents
- 获取文件内容create_issue
- 创建问题create_pull_request
- 创建 PRfork_repository
- 分叉仓库create_branch
- 创建分支list_commits
- 获取提交列表list_issues
- 获取问题列表update_issue
- 更新问题add_issue_comment
- 添加问题评论search_code
- 搜索代码search_issues
- 搜索问题和 PRsearch_users
- 搜索用户get_issue
- 获取问题详情get_pull_request
- 获取 PR 详情list_pull_requests
- 获取 PR 列表create_pull_request_review
- 创建 PR 评论merge_pull_request
- 合并 PRget_pull_request_files
- 获取 PR 文件列表get_pull_request_status
- 获取 PR 状态update_pull_request_branch
- 更新 PR 分支get_pull_request_comments
- 获取 PR 评论get_pull_request_reviews
- 获取 PR 评论
常见问题解答
- 访问令牌:确保 GitHub Personal Access Token 具有必要的权限(repo 或 public_repo)。
- 请求格式:遵循 MCP 协议,消息必须包含 role 和 content(包含 tool_name 和 input)。
- stdio 模式:服务器设计为通过标准输入输出通信,建议与 Cursor 等工具集成使用。
使用教程
使用依赖
- 准备 GitHub Personal Access Token:
- 访问 GitHub Personal Access Token
- 选择
repo
或public_repo
权限 -
复制生成的令牌
-
在
.env
文件中设置令牌:GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here
安装教程
构建 Docker 镜像
docker build -t mcp/github -f src/github/Dockerfile .
启动容器
docker run -it --rm -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN -p 5000:5000 mcp/github
使用 docker-compose
cp .env.template .env
nano .env
docker-compose up -d
调试方式
文件创建/更新示例
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"
}
}
}
]
}'