c

cyanheads

@cyanheads/github-mcp-server
0 Stars 327 次浏览 cyanheads 更新于 2026-08-23
该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

GitHub MCP 服务器

TypeScript
Model Context Protocol
Version
License
Status
GitHub

一个实现模型上下文协议(MCP)的服务器,提供与GitHub API交互的工具。该服务器允许LLM代理通过标准化接口管理GitHub仓库、问题、拉取请求、分支、文件和发布。

目录

概述

github-mcp-server 实现了模型上下文协议(MCP),通过以下方式实现了LLM与外部系统之间的标准化通信:

  • 客户端:Claude Desktop、IDE和其他MCP兼容客户端
  • 服务器:用于项目管理和协作的工具和资源
  • LLM代理:利用程序化执行GitHub操作能力的人工智能模型

它充当AI模型与GitHub API之间的桥梁,提供了一组定义良好的工具,这些工具遵循一致的模式,并处理身份验证、验证、错误处理和速率限制。

主要功能包括:

  • GitHub API集成:安全无缝地与GitHub REST API集成
  • 全面的GitHub功能:对仓库、分支、问题、PR等进行全面管理
  • 原子化功能架构:为可维护性而设计的模块化代码结构
  • 输入验证:所有操作均使用Zod模式进行强大的验证
  • 错误处理:一致的错误分类和报告
  • 速率限制:内置GitHub API速率限制处理
  • 性能优化:优化的操作和响应格式

架构与组件

核心系统架构:

mermaid
flowchart TB
subgraph API["API层"]
direction LR
MCP["MCP协议"]
Val["验证"]
Rate["速率限制"]

    MCP --> Val --> Rate
end

subgraph Features["功能模块"]
    direction LR
    Repo["仓库管理"]
    Branch["分支管理"]
    Issue["问题管理"]
    PR["拉取请求管理"]
    File["文件管理"]
    Release["发布管理"]

    Repo <--> Branch
    Repo <--> Issue
    Repo <--> PR
    Repo <--> File
    Branch <--> PR
end

subgraph Services["服务层"]
    direction LR
    GitHub["GitHub服务"]
    Mapper["响应映射器"]
    RateLimiter["速率限制器"]

    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 个人访问令牌

设置

  1. 克隆仓库:

    bash
    git clone https://github.com/cyanheads/github-mcp-server.git
    cd github-mcp-server

  2. 安装依赖项:

    bash
    npm install

  3. 在项目根目录下创建一个 .env 文件,并在其中添加您的 GitHub 令牌:

    GITHUB_TOKEN=your_github_personal_access_token
    LOG_LEVEL=info
    SERVER_NAME=github-mcp-server

  4. 构建项目:

    bash
    npm run build

  5. 启动服务器:
    bash
    node build/index.js

配置

可以通过环境变量来配置服务器:

环境变量 描述 默认值
GITHUB_TOKEN GitHub 个人访问令牌(必需) -
LOG_LEVEL 日志级别(debug, info, warn, error, fatal) info
SERVER_NAME MCP 服务器名称 github-mcp-server
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 客户端设置中:

json
{
"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 // 应用程序配置
/dependencyInjection // 工具注册表和 DI 容器
/features // 按领域组织的功能模块
/repositoryManagement
/resources // 读操作
/modifications // 写操作
/branchManagement
/issueManagement
/pullRequestManagement
/fileManagement
/releaseManagement
/services // 外部服务集成
/githubAccess // GitHub API 客户端和工具
/types // 核心类型定义
/utilities // 辅助函数和工具每个功能域被划分为:

  • 资源:不修改数据的读取操作
  • 修改:创建、更新或删除数据的写入操作

每个操作都包含在自己的目录中,包括:

  • 操作实现文件
  • 类型定义文件
  • 导出索引文件

工具

GitHub MCP 服务器提供了一整套与 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 创建一个新的拉取请求参数: owner, repo, title, head, base, body (可选)
merge_pull_request 合并一个拉取请求参数: owner, repo, pull_number, commit_title (可选), commit_message (可选), merge_method (可选)
update_pull_request 更新现有的拉取请求参数: 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特定问题)
    • 系统错误(意外故障)
  • 详细日志记录:对所有操作和错误进行结构化日志记录

贡献

欢迎贡献!请随时提交Pull Request。

  1. 分叉仓库
  2. 创建你的功能分支 (git checkout -b feature/amazing-feature)
  3. 提交你的更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开一个Pull Request

许可证

Apache License 2.0


相关 MCP 服务