返回市场
GitHub MCP服务器

GitHub MCP服务器

作者:stephanj32 星标更新:2025-04-11

项目介绍

GitHub MCP 服务器

该项目实现了一个用于访问 GitHub API 的模型上下文协议(MCP)服务器。它提供了一组工具,允许大型语言模型代理与 GitHub 存储库、问题、拉取请求和其他 GitHub 资源进行交互。

功能

该服务器提供了以下 GitHub 操作:

  • 存储库管理

    • 列出已认证用户的存储库
    • 获取存储库详情
    • 搜索存储库
  • 问题管理

    • 列出具有过滤选项的问题
    • 获取问题的详细信息
    • 创建新问题
    • 向问题添加评论
    • 搜索问题
  • 拉取请求管理

    • 列出具有过滤选项的拉取请求
    • 获取拉取请求的详细信息
    • 在拉取请求上创建评论
    • 合并拉取请求
  • 分支管理

    • 列出存储库中的分支
    • 创建新的分支
  • 提交管理

    • 获取提交的详细信息
    • 列出具有过滤选项的提交
    • 根据消息搜索提交
  • 内容管理

    • 获取存储库中的文件内容
    • 列出目录内容
    • 创建或更新文件
    • 在存储库中搜索代码

这些操作通过模型上下文协议(MCP)作为工具暴露给大型语言模型,允许AI系统通过其API安全地与GitHub进行交互。

Claude Desktop

<img width="931" alt="GitHubExample" src="https://gips0.baidu.com/it/u=291279839,3821883842&fm=3081&app=3081&f=PNG?w=1862&h=1790" />

DevoxxGenie IDEA 插件

<img width="894" alt="Screenshot 2025-04-11 at 12 32 58" src="https://gips3.baidu.com/it/u=2103182778,753524789&fm=3081&app=3081&f=PNG?w=1788&h=2324" />

开始使用

先决条件

  • Java 17 或更高版本
  • Maven 3.6+
  • Spring Boot 3.3.6
  • Spring AI MCP 服务器组件
  • 一个 GitHub 账户和个人访问令牌

构建项目

使用 Maven 构建项目:

mvn clean package

运行服务器

使用以下命令运行服务器:

java -jar target/GitHubMCP-1.0-SNAPSHOT.jar

该服务器可以使用 STDIO 与 MCP 客户端通信,也可以作为 Web 服务器运行。

环境变量

GitHub MCP 服务器支持以下环境变量用于身份验证:

  • GITHUB_TOKENGITHUB_PERSONAL_ACCESS_TOKEN:您的 GitHub 个人访问令牌
  • GITHUB_HOST:您的 GitHub 实例的基本 URL(例如,github.comgithub.mycompany.com 对于 GitHub Enterprise)
  • GITHUB_REPOSITORY:如果 API 调用中未指定,默认使用的存储库(例如,owner/repo

您可以在启动 MCP 服务器时设置这些环境变量,GitHub 服务将使用它们作为默认值。这允许您避免在每次 API 调用时都提供身份验证详细信息。

使用 MCP 客户端

与 Claude Desktop 一起使用

编辑您的 claude_desktop_config.json 文件如下:

{
  "mcpServers": {
    "github": {
      "command": "java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-Dspring.main.web-application-type=none",
        "-Dlogging.pattern.console=",
        "-jar",
        "/path/to/GitHubMCP/target/GitHubMCP-1.0-SNAPSHOT.jar"
      ],
      "env": {
        "GITHUB_TOKEN": "your-github-token-here",
        "GITHUB_HOST": "github.com",
        "GITHUB_REPOSITORY": "your-username/your-repository"
      }
    }  
  }
}

与 DevoxxGenie 或类似的 MCP 客户端一起使用

  1. 在您的 MCP 客户端中,访问 MCP 服务器配置屏幕
  2. 使用以下设置配置服务器:
    • 名称GitHub(或任何描述性名称)
    • 传输类型STDIO
    • 命令:Java 可执行文件的完整路径
    • 参数
      -Dspring.ai.mcp.server.stdio=true
      -Dspring.main.web-application-type=none
      -Dlogging.pattern.console=
      -jar
      /path/to/GitHubMCP/target/GitHubMCP-1.0-SNAPSHOT.jar
      
    • 环境变量
      GITHUB_TOKEN=your-github-token-here
      GITHUB_HOST=github.com
      GITHUB_REPOSITORY=your-username/your-repository
      

安全注意事项

使用此服务器时,请注意:

  • 您需要提供 GitHub 个人访问令牌进行身份验证
  • LLM 代理将有权创建、读取和修改 GitHub 资源
  • 考虑以适当的权限运行服务器,并在一个受控环境中运行
  • 确保您的令牌仅具有您使用案例所需的最小权限

示例用法

使用环境变量

如果您已经使用环境变量配置了 MCP 服务器,您可以简单地询问:

你能列出我 GitHub 存储库中的开放问题吗?

Claude 将使用预配置的身份验证详细信息的 GitHub 服务来获取您的 GitHub 存储库中的开放问题并总结它们。

显式指定存储库

您可以通过在请求中指定它来覆盖默认存储库:

你能列出 anthropics/claude-playground 存储库的拉取请求吗?

GitHub 服务将使用您的身份验证令牌,但查询指定的存储库而不是默认存储库。

可用的服务

GitHub MCP 服务器组织成几个服务类,每个类提供不同的功能:

  1. RepositoryService

    • listRepositories:列出已认证用户的存储库
    • getRepository:获取特定存储库的详细信息
    • searchRepositories:搜索匹配查询的存储库
  2. IssueService

    • listIssues:列出具有过滤选项的存储库问题
    • getIssue:获取特定问题的详细信息
    • createIssue:在存储库中创建新问题
    • addIssueComment:向问题添加评论
    • searchIssues:搜索匹配查询的问题
  3. PullRequestService

    • listPullRequests:列出具有过滤选项的存储库拉取请求
    • getPullRequest:获取特定拉取请求的详细信息
    • createPullRequestComment:向拉取请求添加评论
    • mergePullRequest:使用指定的合并方法合并拉取请求
  4. BranchService

    • listBranches:列出具有过滤选项的存储库分支
    • createBranch:从指定引用创建新的分支
  5. CommitService

    • getCommitDetails:获取特定提交的详细信息
    • listCommits:列出具有过滤选项的存储库提交
    • findCommitByMessage:根据消息搜索包含特定文本的提交
  6. ContentService

    • getFileContents:获取存储库中文件的内容
    • listDirectoryContents:列出存储库中目录的内容
    • createOrUpdateFile:在存储库中创建或更新文件
    • searchCode:在存储库中搜索代码

每个服务提供了可以通过 MCP 协议由 LLM 代理调用的方法,使它们能够以结构化和受控的方式与 GitHub 进行交互。

企业 GitHub 支持

此 MCP 服务器支持 GitHub.com 和 GitHub Enterprise 实例。要与 GitHub Enterprise 一起使用,请将 GITHUB_HOST 环境变量设置为您企业的 GitHub URL。

限制

  • 服务器需要具有适当权限的有效 GitHub 个人访问令牌
  • 速率限制受 GitHub API 限制
  • 某些操作可能需要令牌上的特定权限
  • 大型存储库或文件可能会遇到性能限制

贡献

欢迎贡献!请随时提交拉取请求。

许可证

本项目根据 MIT 许可证发布 - 请参阅 LICENSE 文件了解详细信息。 </中文翻译>