使用说明
🚨 此存储库已弃用。 🚨
请使用官方GitHub MCP服务器: https://github.com/github/github-mcp-server
🚨 此存储库已弃用。 🚨
GitHub MCP服务器
一个模型上下文协议(MCP)服务器,提供与GitHub API交互的工具。此服务器允许LLM代理通过标准化的界面管理GitHub存储库、问题、拉取请求、分支、文件和发布。
目录
概述
github mcp服务器实现了模型上下文协议(mcp),通过以下方式实现了LLM和外部系统之间的标准化通信:
- 客户:Claude Desktop、IDE和其他MCP兼容客户端
- 服务器:项目管理和协作的工具和资源
- LLM代理:利用以编程方式执行GitHub操作的能力的AI模型。
它是人工智能模型和GitHub API之间的桥梁,提供了一套定义良好的工具,遵循一致的模式,处理身份验证、验证、错误处理和速率限制。
关键能力:
- GitHub API集成:与GitHub的REST API安全无缝集成
- 全面的GitHub功能:完整管理回购、分支机构、问题、PR等
- 原子特征体系结构:组织良好的模块化代码结构,便于维护
- 输入验证:使用Zod模式对所有操作进行稳健验证
- 错误处理:一致的错误分类和报告
- 速率限制:内置GitHub API速率限制处理
- 绩效重点:优化操作和响应格式
架构和组件
核心系统架构:
Click to expand Mermaid diagram
flowchart TB
subgraph API["API Layer"]
direction LR
MCP["MCP Protocol"]
Val["Validation"]
Rate["Rate Limiting"]
MCP --> Val --> Rate
end
subgraph Features["Feature Modules"]
direction LR
Repo["Repository Management"]
Branch["Branch Management"]
Issue["Issue Management"]
PR["Pull Request Management"]
File["File Management"]
Release["Release Management"]
Repo <--> Branch
Repo <--> Issue
Repo <--> PR
Repo <--> File
Branch <--> PR
end
subgraph Services["Services Layer"]
direction LR
GitHub["GitHub Service"]
Mapper["Response Mapper"]
RateLimiter["Rate Limiter"]
GitHub <--> RateLimiter
GitHub <--> Mapper
end
Rate --> Repo
Rate --> Branch
Rate --> Issue
Rate --> PR
Rate --> File
Rate --> Release
Repo --> GitHub
Branch --> GitHub
Issue --> GitHub
PR --> GitHub
File --> GitHub
Release --> GitHub
classDef layer fill:#2d3748,stroke:#4299e1,stroke-width:3px,rx:5,color:#fff
classDef component fill:#1a202c,stroke:#a0aec0,stroke-width:2px,rx:3,color:#fff
classDef api fill:#3182ce,stroke:#90cdf4,stroke-width:2px,rx:3,color:#fff
classDef features fill:#319795,stroke:#81e6d9,stroke-width:2px,rx:3,color:#fff
classDef services fill:#2f855a,stroke:#9ae6b4,stroke-width:2px,rx:3,color:#fff
class API,Features,Services layer
class MCP,Val,Rate api
class Repo,Branch,Issue,PR,File,Release features
class GitHub,Mapper,RateLimiter services
核心组件:
- MCP协议层:处理与AI助手的通信
- 验证层:通过模式验证确保数据完整性
- GitHub服务:与GitHub REST API的核心集成
- 速率限制器:防止API速率限制耗尽
- 功能模块:特定于域的GitHub操作
- 错误处理:全面的错误处理和记录系统
特性
库管理
- 创建、列出、获取:创建新存储库,列出用户存储库,并获取详细的存储库信息
- 验证和配置:验证存储库设置并管理配置选项
分行管理
- 创建、删除、列出:通过安全验证完成分支生命周期管理
- 受保护分支支持:受保护分支的过滤和操作
问题管理
- 创建并列出:使用标签创建详细问题,并使用过滤选项列出问题
- 状态跟踪:按问题状态筛选(打开、关闭、全部)
拉取请求管理
- 创建、更新、合并、列出:完整的拉取请求生命周期管理
- 审查和评论整合:添加评论和评论以拉取请求
- 合并选项:支持不同的合并策略(合并、挤压、重基)
文件管理
- 创建和更新文件:使用提交消息添加和修改存储库内容
- Base64编码支持:处理文本和二进制文件内容
发布管理
- 创建发布:创建带有可自定义选项的标记版本
- 草稿和预发布支持:支持草稿和预发布工作流
安装
先决条件
- Node.js(v16或更新版本)
- 具有适当权限的GitHub个人访问令牌
设置
-
克隆存储库:
git clone https://github.com/cyanheads/github-mcp-server.git cd github-mcp-server -
安装依赖项:
npm install -
创建一个
.env使用GitHub令牌在项目根目录中创建文件:GITHUB_TOKEN=your_github_personal_access_token LOG_LEVEL=info SERVER_NAME=github-mcp-server -
构建项目:
npm run build -
启动服务器:
node build/index.js
配置
服务器可以通过环境变量进行配置:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
GITHUB_TOKEN |
GitHub个人访问令牌(必填) | - |
LOG_LEVEL |
日志记录级别(调试、信息、警告、错误、致命) | info |
SERVER_NAME |
MCP服务器名称 | github MCP服务器 |
SERVER_VERSION |
MCP服务器版本 | 0.1.0 |
API_TIMEOUT_MS |
API调用超时(以毫秒为单位) | 10000 |
RATE_LIMITING_ENABLED |
是否启用速率限制 | true |
RATE_LIMITING_MIN_REMAINING |
限制前的最小剩余请求数 | 100 |
RATE_LIMITING_RESET_BUFFER_MS |
添加到速率限制重置时间的时间缓冲 | 5000 |
MCP客户端设置
添加到MCP客户端设置中:
{
"mcpServers": {
"github": {
"command": "node",
"args": ["/path/to/github-mcp-server/build/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_personal_access_token",
"LOG_LEVEL": "info",
"SERVER_NAME": "github-mcp-server"
}
}
}
}
项目结构
此项目遵循面向原子特征的体系结构模式:
/src
/configuration // Application configuration
/dependencyInjection // Tool registry and DI container
/features // Feature modules organized by domain
/repositoryManagement
/resources // Read operations
/modifications // Write operations
/branchManagement
/issueManagement
/pullRequestManagement
/fileManagement
/releaseManagement
/services // External service integrations
/githubAccess // GitHub API client and utilities
/types // Core type definitions
/utilities // Helper functions and utilities
每个特征域分为:
- 资源:读取不修改数据的操作
- 修改:创建、更新或删除数据的写入操作
每个操作都包含在自己的目录中,其中包含:
- 操作实施文件
- 类型定义文件
- 导出索引文件
工具
GitHub MCP Server提供了一套全面的与GitHub交互的工具:
存储库管理工具
| 工具 | 说明 |
|---|---|
get_repository |
获取特定存储库的详细信息 参数: owner, repo |
list_repositories |
列出经过身份验证的用户的存储库 参数: type (可选), sort (可选) |
create_repository |
创建新的GitHub存储库 参数: name, description (可选), private (可选) |
分行管理工具
| 工具 | 说明 |
|---|---|
list_branches |
列出存储库中的分支 参数: owner, repo, protected (可选), per_page (可选) |
create_branch |
创建新分支 参数: owner, repo, branch, sha |
delete_branch |
删除分支 参数: owner, repo, branch |
问题管理工具
| 工具 | 说明 |
|---|---|
create_issue |
在存储库中创建新问题 参数: owner, repo, title, body (可选), labels (可选) |
list_issues |
在存储库中列出问题 参数: owner, repo, state (可选), labels (可选) |
拉取请求管理工具
| 工具 | 说明 |
|---|---|
create_pull_request |
创建新的pull请求 参数: owner, repo, title, head, base, body (可选) |
merge_pull_request |
合并拉取请求 参数: owner, repo, pull_number, commit_title (可选), commit_message (可选), merge_method (可选) |
update_pull_request |
更新现有的pull请求 参数: owner, repo, pull_number, title (可选), body (可选), state (可选), base (可选), maintainer_can_modify (可选) |
list_pull_requests |
在存储库中列出拉取请求 参数: owner, repo, state (可选), head (可选), base (可选), sort (可选), direction (可选) |
文件管理工具
| 工具 | 说明 |
|---|---|
update_file |
在存储库中创建或更新文件 参数: owner, repo, path, message, content, sha (可选), branch (可选) |
发布管理工具
| 工具 | 说明 |
|---|---|
create_release |
创建新版本 参数: owner, repo, tag_name, name (可选), body (可选), draft (可选), prerelease (可选) |
发展
项目结构
该项目遵循严格的命名约定和目录结构:
- 文件命名:
action.entity.type.ts(例如。,create.repository.operation.ts) - 每个模块都有明确的目的
- 类型与其实现位于同一位置
- 所有导出都通过索引文件集中
脚本
npm run build-构建项目npm run watch-观察变化并重建npm run inspector-运行MCP检查器工具npm run clean-清理构建工件npm run rebuild-清理并重建项目npm run tree-生成目录树表示
错误处理
服务器实施了全面的错误处理策略:
- 标准化错误对象:错误格式与分类一致
- 输入验证:使用Zod模式进行预验证
- 速率限制保护:自动处理GitHub API速率限制
- 错误类别:
- 网络错误(连接问题)
- 身份验证错误(令牌问题)
- 验证错误(无效输入)
- GitHub API错误(特定于API的问题)
- 系统错误(意外故障)
- 详细日志记录:所有操作和错误的结构化日志记录
贡献
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
Built with the Model Context Protocol