GitHub仓库管理服务器

一个基于Docker的GitHub API集成服务,提供文件操作、仓库管理、搜索等功能,适用于开发者进行高效的代码管理。

  • by yuki-koma2
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 yuki-koma2/my-mcp-servers

使用说明

Docker化GitHub MCP服务器

GitHub的,之API提供资料档案库的文件操作、资料档案库管理、检索功能等Model Context Protocol(MCP)打开服务器Docker作为集装箱提供。

机能

  • 创建自动分支:在创建/更新文件时push有时,自动创建不存在的分支
  • 全面的错误处理:为常见问题提供明确的错误消息
  • Git保留历史记录:强制操作push不使用适当的Git保留历史记录
  • 批量操作:支持单个文件和多个文件操作
  • 高级搜索:代码、标题/PR、支持用户搜索

安装,安装

1.GitHub个人访问令牌の準備

  1. GitHub个人访问令牌创建

    • GitHubの设定>开発者设定>Personal access tokenに移动
    • 选择此标记可访问的存储库(公共、全部或特定存储库)
    • repo选择范围(完全控制专用存储库)
      • 或者,如果仅使用公共存储库public_repo仅选择范围
    • 复制生成的标记
  2. .env为文件设置标记:

    GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here
    

2. 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服务器提供以下功能:

  1. create_or_update_file -在存储库中创建/更新单个文件
  2. push_files -一次提交即可推送多个文件
  3. search_repositories - GitHub搜索存储库
  4. create_repository -新的GitHub创建存储库
  5. get_file_contents -获取文件或目录内容
  6. create_issue -创建新问题
  7. create_pull_request -创建新的拉式请求
  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 -查找问题和拉式请求
  16. search_users - GitHub查找用户
  17. get_issue -获取特定问题的详细信息
  18. get_pull_request -获取特定抽取请求的详细信息
  19. list_pull_requests -获取拉式请求列表
  20. create_pull_request_review -创建拉式请求审核
  21. merge_pull_request -合并抽取请求
  22. get_pull_request_files -获取拉式请求更改文件列表
  23. get_pull_request_status -获取拉式请求状态
  24. update_pull_request_branch -更新拉式请求分支
  25. get_pull_request_comments -获取拉式请求注释
  26. 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是在许可证下提供的。