Dockerized GitHub MCP Server

Dockerized GitHub MCP Server

site icon
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 等开发工具集成

工具列表

  1. create_or_update_file - 创建或更新单个文件
  2. push_files - 批量推送文件
  3. search_repositories - 搜索 GitHub 仓库
  4. create_repository - 创建新仓库
  5. get_file_contents - 获取文件内容
  6. create_issue - 创建问题
  7. create_pull_request - 创建 PR
  8. fork_repository - 分叉仓库
  9. create_branch - 创建分支
  10. list_commits - 获取提交列表
  11. list_issues - 获取问题列表
  12. update_issue - 更新问题
  13. add_issue_comment - 添加问题评论
  14. search_code - 搜索代码
  15. search_issues - 搜索问题和 PR
  16. search_users - 搜索用户
  17. get_issue - 获取问题详情
  18. get_pull_request - 获取 PR 详情
  19. list_pull_requests - 获取 PR 列表
  20. create_pull_request_review - 创建 PR 评论
  21. merge_pull_request - 合并 PR
  22. get_pull_request_files - 获取 PR 文件列表
  23. get_pull_request_status - 获取 PR 状态
  24. update_pull_request_branch - 更新 PR 分支
  25. get_pull_request_comments - 获取 PR 评论
  26. get_pull_request_reviews - 获取 PR 评论

常见问题解答

  • 访问令牌:确保 GitHub Personal Access Token 具有必要的权限(repo 或 public_repo)。
  • 请求格式:遵循 MCP 协议,消息必须包含 role 和 content(包含 tool_name 和 input)。
  • stdio 模式:服务器设计为通过标准输入输出通信,建议与 Cursor 等工具集成使用。

使用教程

使用依赖

  1. 准备 GitHub Personal Access Token:
  2. 访问 GitHub Personal Access Token
  3. 选择 repopublic_repo 权限
  4. 复制生成的令牌

  5. .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"
          }
        }
      }
    ]
  }'

许可证

该项目遵循 MIT 开源许可条款。