GitHub MCP服务器
该项目实现了一个用于GitHub API访问的模型上下文协议(MCP)服务器。它提供了一组工具,允许LLM代理与GitHub存储库、问题、拉取请求和其他GitHub资源进行交互。
特性
服务器提供以下GitHub操作:
- 库管理
- 列出经过身份验证的用户的存储库 - 获取存储库详细信息 - 搜索存储库
- 问题管理
- 列出筛选选项的问题 - 获取有关问题的详细信息 - 创建新问题 - 为问题添加评论 - 搜索问题
- 拉取请求管理
- 列出带有过滤选项的拉取请求 - 获取有关拉取请求的详细信息 - 对pull请求创建评论 - 合并拉取请求
- 分行管理
- 列出存储库中的分支 - 创建新分支
- 提交管理
- 获取有关提交的详细信息 - 带有筛选选项的列表提交 - 按消息搜索提交
- 内容管理
- 从存储库获取文件内容 - 列出目录内容 - 创建或更新文件 - 在存储库中搜索代码
这些操作被公开为使用模型上下文协议(MCP)的大型语言模型的工具,允许人工智能系统通过其API与GitHub安全交互。
克劳德桌面
DevoxxGenie IDEA插件
入门指南
先决条件
- Java 17或更高版本
- Maven 3.6+
- 弹簧靴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_TOKEN或GITHUB_PERSONAL_ACCESS_TOKEN:您的GitHub个人访问令牌GITHUB_HOST:GitHub实例的基本URL(例如。,github.com或github.mycompany.comGitHub企业版)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客户端一起使用
- 在您的MCP客户端中,访问MCP服务器配置屏幕
- 使用以下设置配置服务器:
- 名字: 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服务器,则只需询问:
Can you get a list of open issues in my GitHub repository?Claude将使用具有预配置身份验证详细信息的GitHub服务从您的GitHub存储库中获取未解决的问题并对其进行总结。
使用显式存储库
您可以通过在请求中指定默认存储库来覆盖它:
Can you list the pull requests for the anthropics/claude-playground repository?GitHub服务将使用您的身份验证令牌,但查询指定的存储库而不是默认存储库。
可用服务
GitHub MCP服务器分为几个服务类,每个服务类提供不同的功能:
- 仓库服务
- listRepositories:列出经过身份验证的用户的存储库 - getRepository:获取特定存储库的详细信息 - searchRepositories:搜索与查询匹配的存储库
- 问题服务
- listIssues:使用筛选选项列出存储库的问题 - getIssue:获取有关特定问题的详细信息 - createIssue:在存储库中创建新问题 - addIssueComment:向问题添加评论 - searchIssues:搜索与查询匹配的问题
- PullRequest服务
- listPullRequests:列出具有筛选选项的存储库拉取请求 - getPullRequest:获取特定拉取请求的详细信息 - createPullRequestComment:向pull请求添加注释 - mergePullRequest:使用指定的合并方法合并拉取请求
- 分支服务
- listBranches:列出存储库中具有筛选选项的分支 - createBranch:从指定引用创建新分支
- 委托服务
- getCommitDetails:获取特定提交的详细信息 - listCommits:列出存储库中具有筛选选项的提交 - findCommitByMessage:搜索消息中包含特定文本的提交
- 内容服务
- getFileContents:获取存储库中文件的内容 - listDirectoryContents:列出存储库中目录的内容 - createOrUpdateFile:在存储库中创建或更新文件 - searchCode:在存储库中搜索代码
每个服务都提供了LLM代理可以通过MCP协议调用的方法,允许他们以结构化和受控的方式与GitHub交互。
企业GitHub支持
此MCP服务器支持GitHub.com和GitHub Enterprise实例。要与GitHub Enterprise一起使用,请设置 GITHUB_HOST 环境变量到您的企业GitHub URL。
局限性
- 服务器需要具有适当权限的有效GitHub个人访问令牌
- 速率限制受GitHub API限制
- 某些操作可能需要对令牌具有特定权限
- 大型存储库或文件可能会遇到性能限制
贡献
欢迎投稿!请随时提交拉取请求。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
