该项目实现了一个用于访问 GitHub API 的模型上下文协议(MCP)服务器。它提供了一组工具,允许大型语言模型代理与 GitHub 存储库、问题、拉取请求和其他 GitHub 资源进行交互。
该服务器提供了以下 GitHub 操作:
存储库管理
问题管理
拉取请求管理
分支管理
提交管理
内容管理
这些操作通过模型上下文协议(MCP)作为工具暴露给大型语言模型,允许AI系统通过其API安全地与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.com 对于 GitHub Enterprise)GITHUB_REPOSITORY:如果 API 调用中未指定,默认使用的存储库(例如,owner/repo)您可以在启动 MCP 服务器时设置这些环境变量,GitHub 服务将使用它们作为默认值。这允许您避免在每次 API 调用时都提供身份验证详细信息。
编辑您的 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"
}
}
}
}
GitHub(或任何描述性名称)STDIO-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
使用此服务器时,请注意:
如果您已经使用环境变量配置了 MCP 服务器,您可以简单地询问:
你能列出我 GitHub 存储库中的开放问题吗?
Claude 将使用预配置的身份验证详细信息的 GitHub 服务来获取您的 GitHub 存储库中的开放问题并总结它们。
您可以通过在请求中指定它来覆盖默认存储库:
你能列出 anthropics/claude-playground 存储库的拉取请求吗?
GitHub 服务将使用您的身份验证令牌,但查询指定的存储库而不是默认存储库。
GitHub MCP 服务器组织成几个服务类,每个类提供不同的功能:
RepositoryService
listRepositories:列出已认证用户的存储库getRepository:获取特定存储库的详细信息searchRepositories:搜索匹配查询的存储库IssueService
listIssues:列出具有过滤选项的存储库问题getIssue:获取特定问题的详细信息createIssue:在存储库中创建新问题addIssueComment:向问题添加评论searchIssues:搜索匹配查询的问题PullRequestService
listPullRequests:列出具有过滤选项的存储库拉取请求getPullRequest:获取特定拉取请求的详细信息createPullRequestComment:向拉取请求添加评论mergePullRequest:使用指定的合并方法合并拉取请求BranchService
listBranches:列出具有过滤选项的存储库分支createBranch:从指定引用创建新的分支CommitService
getCommitDetails:获取特定提交的详细信息listCommits:列出具有过滤选项的存储库提交findCommitByMessage:根据消息搜索包含特定文本的提交ContentService
getFileContents:获取存储库中文件的内容listDirectoryContents:列出存储库中目录的内容createOrUpdateFile:在存储库中创建或更新文件searchCode:在存储库中搜索代码每个服务提供了可以通过 MCP 协议由 LLM 代理调用的方法,使它们能够以结构化和受控的方式与 GitHub 进行交互。
此 MCP 服务器支持 GitHub.com 和 GitHub Enterprise 实例。要与 GitHub Enterprise 一起使用,请将 GITHUB_HOST 环境变量设置为您企业的 GitHub URL。
欢迎贡献!请随时提交拉取请求。
本项目根据 MIT 许可证发布 - 请参阅 LICENSE 文件了解详细信息。 </中文翻译>