GitHub管理服务器

一个基于模型上下文协议(MCP)的服务器,提供与GitHub API交互的工具,用于管理仓库、分支、问题、拉取请求、文件和发布。

  • by cyanheads
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 cyanheads/github-mcp-server

使用说明

🚨 此存储库已弃用。 🚨

请使用官方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个人访问令牌

设置

  1. 克隆存储库:

    git clone https://github.com/cyanheads/github-mcp-server.git
    cd github-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 创建一个 .env 使用GitHub令牌在项目根目录中创建文件:

    GITHUB_TOKEN=your_github_personal_access_token
    LOG_LEVEL=info
    SERVER_NAME=github-mcp-server
    
  4. 构建项目:

    npm run build
    
  5. 启动服务器:

    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的问题)
    • 系统错误(意外故障)
  • 详细日志记录:所有操作和错误的结构化日志记录

贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

Apache许可证2.0


Built with the Model Context Protocol