GitHub MCP 服务器是一个与 GitHub API 集成的模型上下文协议(MCP)服务器,使 AI 模型能够与 GitHub 仓库、问题、拉取请求和其他 GitHub 功能进行交互。它充当大型语言模型(LLMs)与 GitHub 生态系统之间的桥梁,允许 AI 驱动的工具执行复杂的 GitHub 操作。
有关服务器架构的详细信息,请参见架构。有关安装说明,请参见入门。
来源:README.md
目的和应用场景
GitHub MCP 服务器为 AI 模型通过工具和资源访问 GitHub 功能提供了一种标准化的方式。它允许 AI 工具:
- 自动化 GitHub 工作流和过程
- 从 GitHub 仓库中提取和分析数据
- 构建基于 GitHub 生态系统的 AI 应用
- 通过简单的工具调用执行复杂的 GitHub 操作
通过实现模型上下文协议,服务器使 AI 模型能够理解 GitHub 的功能,并在适当的认证和权限控制下执行操作。
系统架构
GitHub MCP 服务器采用模块化架构,围绕工具和工具集展开。以下是组件如何协同工作的概述:
arduino
Communication
Core Components
AI Client/LLM
MCP Protocol Interface
GitHub MCP Server (MCPServer)
Tools System (Toolsets)
Resource Templates
GitHub API Client
服务器处理来自 AI 客户端的请求,将它们路由到相应的工具处理程序,执行 GitHub API 调用,并将结果返回给客户端。它使用标准 I/O 而非 HTTP 进行操作,使其与各种 MCP 宿主环境兼容。
来源: pkg/github/server.go13-30README.md3-5
工具和工具集组织
GitHub MCP 服务器将其功能组织成逻辑工具集,这些工具集可以单独启用或禁用。这种模块化设计提供了对哪些功能向 AI 工具暴露的控制。
diff
MCPServer
Tools System
Repos Toolset
Issues Toolset
Pull Requests Toolset
Users Toolset
Code Security Toolset
Dynamic Toolset
Repository Tools:
- create_or_update_file
- list_branches
- push_files
- get_file_contents
- etc.
Issue Tools:
- get_issue
- create_issue
- add_issue_comment
- etc.
PR Tools:
- create_pull_request
- merge_pull_request
- get_pull_request_files
- etc.
User Tools:
- get_me
- search_users
Security Tools:
- get_code_scanning_alert
- list_secret_scanning_alerts
- etc.
Management Tools:
- enable_toolset
- list_available_toolsets
- get_toolsets_tools
每个工具集中的工具对应于一个特定的 GitHub API 操作,具有明确定义的参数和返回值。工具系统处理参数验证、GitHub API 调用和响应格式化。
来源: README.md110-127README.md234-495
请求处理流程
当 AI 客户端向 GitHub MCP 服务器发送请求时,它会遵循以下处理流程:
vbscript
"GitHub API""Tool Handler""GitHub MCP Server""AI Client/LLM""GitHub API""Tool Handler""GitHub MCP Server""AI Client/LLM"alt[Dynamic Toolsets Enabled]Using OptionalParam, RequiredParam functionsCall Tool with ParametersValidate Request FormatParse ParametersCheck if required toolset is enabledEnable toolset if neededExecute Tool HandlerExtract & Validate ParametersMake GitHub API RequestReturn API ResponseProcess ResponseReturn Tool ResultReturn Formatted Response
服务器包括用于参数处理的辅助函数,如 RequiredParam
、OptionalParam
和 OptionalPaginationParams
,这些函数确保类型安全并提供适当的错误消息。
源代码: pkg/github/server.go32-216
资源模板系统
除了工具,GitHub MCP 服务器还提供了访问 GitHub 仓库内容的资源模板:
资源模板 | 描述 | 用途 |
---|---|---|
repo://{owner}/{repo}/contents{/path*} |
默认分支内容 | 查看默认分支中的文件 |
repo://{owner}/{repo}/refs/heads/{branch}/contents{/path*} |
分支内容 | 在特定分支中访问文件 |
repo://{owner}/{repo}/sha/{sha}/contents{/path*} |
提交内容 | 在特定提交中访问文件 |
repo://{owner}/{repo}/refs/tags/{tag}/contents{/path*} |
标记内容 | 访问特定标签下的文件 |
repo://{owner}/{repo}/refs/pull/{prNumber}/head/contents{/path*} |
PR 内容 | 在拉取请求中访问文件 |
这些模板允许 AI 工具以标准化的方式在不同的参考点访问仓库内容。
来源: README.md527-578
配置和部署
GitHub MCP 服务器可以以几种方式配置和部署:
-
Docker 容器 :大多数用户的推荐方法。
bashdocker run -i --rm \ -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \ ghcr.io/github/github-mcp-server
-
直接运行编译后的二进制文件 :直接运行编译后的二进制文件。
bash./github-mcp-server stdio
-
与 AI 工具集成 :提供了 VS Code 和 Claude Desktop 的配置。
配置选项包括:
- GitHub 认证(通过个人访问令牌)
- 工具集选择(
--toolsets
标志或GITHUB_TOOLSETS
环境变量) - 动态工具集发现(
--dynamic-toolsets
标志) - GitHub 企业服务器支持(
--gh-host
标志)
来源: README.md15-108README.md128-191
关键技术组件
GitHub MCP 服务器基于几个核心技术组件构建:
- MCPServer:处理 MCP 协议通信的主要服务器组件(pkg/github/server.go14-30)
- ToolSystem: 将工具组织成具有独立功能的逻辑工具集****
- 参数处理:所有工具参数的稳健验证(pkg/github/server.go62-174)
- 分页支持 : 列表操作的标准分页处理 (pkg/github/server.go176-216)
- 资源模板 : 基于 URI 的仓库内容访问 (README.md527-578)
- 翻译系统 : 工具描述的国际化支持 (README.md198-233)
这些组件共同提供了一种安全且可扩展的接口,使 AI 系统与 GitHub 之间能够交互,从而实现广泛的自动化场景,同时保持对 AI 工具所能访问的功能的精确控制。