### [GitHub API服务器](https://s.ddm.chat/link/692) **Published:** 2026-07-23T02:00:23 **Author:** 颠倒梦 **Excerpt:** GitHub MCP Server是一个提供文件操作、仓库管理、搜索功能等GitHub API集成的服务工具,… # GitHub MCP服务器 **弃用通知:** 该项目的开发已转移到GitHub[http://github.com/github/github-mcp-server回购。](http://github.com/github/github-mcp-server%E5%9B%9E%E8%B4%AD%E3%80%82) * * * 用于GitHub API的MCP服务器,实现文件操作、存储库管理、搜索功能等。 ### 特性 - **自动创建分支**:在创建/更新文件或推送更改时,如果分支不存在,则会自动创建分支 - **全面的错误处理**:清除常见问题的错误消息 - **Git历史保存**:操作维护正确的Git历史记录,无需强制推送 - **批量操作**:支持单文件和多文件操作 - **高级搜索**:支持搜索代码、问题/PR和用户 ## 工具 1. `create_or_update_file` - 在存储库中创建或更新单个文件 - 输入: - `owner` (string):存储库所有者(用户名或组织) - `repo` (string):存储库名称 - `path` (string):创建/更新文件的路径 - `content` (string):文件内容 - `message` (string):提交消息 - `branch` (string):创建/更新文件的分支 - `sha` (可选字符串):要替换的文件的SHA(用于更新) - 返回:文件内容和提交详细信息 2. `push_files` - 在一次提交中推送多个文件 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `branch` (string):要推送的分支 - `files` (array):要推送的文件,每个文件都有 `path` 和 `content` - `message` (string):提交消息 - 返回:更新了分支引用 3. `search_repositories` - 搜索GitHub存储库 - 输入: - `query` (string):搜索查询 - `page` (可选编号):分页页码 - `perPage` (可选数字):每页结果(最多100个) - 返回:存储库搜索结果 4. `create_repository` - 创建新的GitHub存储库 - 输入: - `name` (string):存储库名称 - `description` (可选字符串):存储库描述 - `private` (可选布尔值):repo是否应该是私有的 - `autoInit` (可选布尔值):使用README进行初始化 - 返回:已创建存储库详细信息 5. `get_file_contents` - 获取文件或目录的内容 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `path` (string):文件/目录的路径 - `branch` (可选字符串):从中获取内容的分支 - 返回:文件/目录内容 6. `create_issue` - 创建新问题 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `title` (string):发行标题 - `body` (可选字符串):问题描述 - `assignees` (可选字符串\[\]):要分配的用户名 - `labels` (可选字符串\[\]):要添加的标签 - `milestone` (可选编号):里程碑编号 - 退货:已创建问题详细信息 7. `create_pull_request` - 创建新的pull请求 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `title` (字符串):PR标题 - `body` (可选字符串):PR描述 - `head` (string):包含更改的分支 - `base` (string):要合并的分支 - `draft` (可选布尔值):创建为PR草稿 - `maintainer_can_modify` (可选布尔值):允许维护者编辑 - 返回:已创建拉取请求详细信息 8. `fork_repository` - 分叉存储库 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `organization` (可选字符串):要分叉的组织 - 返回:分叉存储库详细信息 9. `create_branch` - 创建新分支 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `branch` (string):新分支的名称 - `from_branch` (可选字符串):源分支(默认为repo默认值) - 返回:已创建分支引用 10. `list_issues` - 列出和筛选存储库问题 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `state` (可选字符串):按状态筛选(“打开”、“关闭”、“全部”) - `labels` (可选字符串\[\]):按标签筛选 - `sort` (可选字符串):排序方式(“已创建”、“已更新”、“注释”) - `direction` (可选字符串):排序方向('sc','sec') - `since` (可选字符串):按日期筛选(ISO 8601时间戳) - `page` (可选编号):页码 - `per_page` (可选数字):每页结果 - 返回:问题详细信息数组 11. `update_issue` - 更新现有问题 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `issue_number` (number):要更新的发行号 - `title` (可选字符串):新标题 - `body` (可选字符串):新描述 - `state` (可选字符串):新状态(“打开”或“关闭”) - `labels` (可选字符串\[\]):新标签 - `assignees` (可选字符串\[\]):新受让人 - `milestone` (可选编号):新里程碑编号 - 退货:更新的问题详细信息 12. `add_issue_comment` - 向问题添加评论 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `issue_number` (number):要评论的问题编号 - `body` (string):注释文本 - 返回:已创建评论详细信息 13. `search_code` - 在GitHub存储库中搜索代码 - 输入: - `q` (string):使用GitHub代码搜索语法搜索查询 - `sort` (可选字符串):排序字段(仅“索引”) - `order` (可选字符串):排序顺序(“asc”或“desc”) - `per_page` (可选数字):每页结果(最多100个) - `page` (可选编号):页码 - 返回:带有存储库上下文的代码搜索结果 14. `search_issues` - 搜索问题并提取请求 - 输入: - `q` (string):使用GitHub发布搜索语法的搜索查询 - `sort` (可选字符串):排序字段(注释、反应、创建等) - `order` (可选字符串):排序顺序(“asc”或“desc”) - `per_page` (可选数字):每页结果(最多100个) - `page` (可选编号):页码 - 返回:问题和拉取请求搜索结果 15. `search_users` - 搜索GitHub用户 - 输入: - `q` (string):使用GitHub用户搜索语法搜索查询 - `sort` (可选字符串):排序字段(关注者、存储库、已加入) - `order` (可选字符串):排序顺序(“asc”或“desc”) - `per_page` (可选数字):每页结果(最多100个) - `page` (可选编号):页码 - 返回:用户搜索结果 16. `list_commits` - 获取存储库中分支的提交 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `page` (可选字符串):页码 - `per_page` (可选字符串):每页记录数 - `sha` (可选字符串):分支名称 - 返回:提交列表 17. `get_issue` - 获取存储库中问题的内容 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `issue_number` (number):要检索的问题编号 - 返回:Github Issue对象和详细信息 18. `get_pull_request` - 获取特定拉取请求的详细信息 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - 返回:拉取请求详细信息,包括差异和审核状态 19. `list_pull_requests` - 列出和筛选存储库拉取请求 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `state` (可选字符串):按状态筛选(“打开”、“关闭”、“全部”) - `head` (可选字符串):按主用户/组织和分支机构过滤 - `base` (可选字符串):按基分支筛选 - `sort` (可选字符串):排序方式(“已创建”、“已更新”、“受欢迎程度”、“长期运行”) - `direction` (可选字符串):排序方向('sc','sec') - `per_page` (可选数字):每页结果(最多100个) - `page` (可选编号):页码 - 返回:拉取请求详细信息数组 20. `create_pull_request_review` - 对拉取请求创建评论 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - `body` (string):审阅评论文本 - `event` (string):审核操作(“PPROVE”、“REQUEST\_CHANGES”、“COMMENT”) - `commit_id` (可选字符串):提交审查的SHA - `comments` (可选数组):行特定注释,每个注释都有: - `path` (string):文件路径 - `position` (数字):差速器中的行位置 - `body` (string):注释文本 - 退货:已创建审核详细信息 21. `merge_pull_request` - 合并拉取请求 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - `commit_title` (可选字符串):合并提交的标题 - `commit_message` (可选字符串):合并提交的额外细节 - `merge_method` (可选字符串):Merge方法('Merge','squash','rebase') - 返回:合并结果详细信息 22. `get_pull_request_files` - 获取拉取请求中更改的文件列表 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - 返回:包含补丁和状态详细信息的已更改文件数组 23. `get_pull_request_status` - 获取拉取请求的所有状态检查的组合状态 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - 返回:组合状态检查结果和单个检查详细信息 24. `update_pull_request_branch` - 使用基础分支的最新更改更新拉取请求分支(相当于GitHub的“更新分支”按钮) - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - `expected_head_sha` (可选字符串):拉取请求的HEAD引用的预期SHA - 返回:分支更新时的成功消息 25. `get_pull_request_comments` - 获取拉取请求的评论 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - 返回:拉取请求审核评论数组,包含评论文本、作者和差异中的位置等详细信息 26. `get_pull_request_reviews` - 获取拉取请求的评论 - 输入: - `owner` (string):存储库所有者 - `repo` (string):存储库名称 - `pull_number` (number):拉取请求编号 - 返回:拉取请求审核数组,包含审核状态(APPROVED、CHANGES\_REQUESTED等)、审核者和审核主体等详细信息 ## 搜索查询语法 ### 代码搜索 - `language:javascript`:按编程语言搜索 - `repo:owner/name`:在特定存储库中搜索 - `path:app/src`:在特定路径中搜索 - `extension:js`:按文件扩展名搜索 - 例子: `q: "import express" language:typescript path:src/` ### 问题搜索 - `is:issue` 或 `is:pr`:按类型筛选 - `is:open` 或 `is:closed`:按州筛选 - `label:bug`:按标签搜索 - `author:username`:按作者搜索 - 例子: `q: "memory leak" is:issue is:open label:bug` ### 用户搜索 - `type:user` 或 `type:org`:按帐户类型筛选 - `followers:>1000`:按关注者筛选 - `location:London`:按位置搜索 - 例子: `q: "fullstack developer" location:London followers:>100` 有关详细的搜索语法,请参阅 [GitHub的搜索文档](https://docs.github.com/en/search-github/searching-on-github). ## 设置 ### 个人访问令牌 [创建GitHub个人访问令牌](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) 具有适当的权限: - 首选 [个人访问令牌](https://github.com/settings/tokens) (在GitHub设置>开发者设置中) - 选择您希望此令牌访问的存储库(公共、全部或选择) - 使用创建令牌 `repo` 范围(“完全控制私有存储库”) - 或者,如果仅使用公共存储库,请仅选择 `public_repo` 范围 - 复制生成的令牌 ### 使用Claude Desktop 要在Claude Desktop中使用此功能,请将以下内容添加到您的 `claude_desktop_config.json`: #### 码头工人 ```json { "mcpServers": { "github": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "mcp/github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "" } } } } ``` #### NPX ```json { "mcpServers": { "github": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "" } } } } ``` ### 使用VS代码 为了快速安装,请使用下面的安装按钮之一: [](https://insiders.vscode.dev/redirect/mcp/install?name=github&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22github_token%22%2C%22description%22%3A%22GitHub%20Personal%20Access%20Token%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-github%22%5D%2C%22env%22%3A%7B%22GITHUB_PERSONAL_ACCESS_TOKEN%22%3A%22%24%7Binput%3Agithub_token%7D%22%7D%7D)[](https://insiders.vscode.dev/redirect/mcp/install?name=github&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22github_token%22%2C%22description%22%3A%22GitHub%20Personal%20Access%20Token%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-github%22%5D%2C%22env%22%3A%7B%22GITHUB_PERSONAL_ACCESS_TOKEN%22%3A%22%24%7Binput%3Agithub_token%7D%22%7D%7D&quality=insiders) [](https://insiders.vscode.dev/redirect/mcp/install?name=github&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22github_token%22%2C%22description%22%3A%22GitHub%20Personal%20Access%20Token%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22mcp%2Fgithub%22%5D%2C%22env%22%3A%7B%22GITHUB_PERSONAL_ACCESS_TOKEN%22%3A%22%24%7Binput%3Agithub_token%7D%22%7D%7D)[](https://insiders.vscode.dev/redirect/mcp/install?name=github&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22github_token%22%2C%22description%22%3A%22GitHub%20Personal%20Access%20Token%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22mcp%2Fgithub%22%5D%2C%22env%22%3A%7B%22GITHUB_PERSONAL_ACCESS_TOKEN%22%3A%22%24%7Binput%3Agithub_token%7D%22%7D%7D&quality=insiders) 对于手动安装,请将以下JSON块添加到VS Code中的用户设置(JSON)文件中。您可以按 `Ctrl + Shift + P` 和打字 `Preferences: Open User Settings (JSON)`. 您可以选择将其添加到名为的文件中 `.vscode/mcp.json` 在您的工作空间中。这将允许您与他人共享配置。 > 请注意 `mcp` 中不需要密钥 `.vscode/mcp.json` 文件。 #### 码头工人 ```json { "mcp": { "inputs": [ { "type": "promptString", "id": "github_token", "description": "GitHub Personal Access Token", "password": true } ], "servers": { "github": { "command": "docker", "args": ["run", "-i", "--rm", "mcp/github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}" } } } } } ``` #### NPX ```json { "mcp": { "inputs": [ { "type": "promptString", "id": "github_token", "description": "GitHub Personal Access Token", "password": true } ], "servers": { "github": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}" } } } } } ``` ## 构建 Docker构建: ```bash docker build -t mcp/github -f src/github/Dockerfile . ``` ## 许可证 此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。 ---