基于Spring Boot的模型上下文协议(MCP)服务器,提供与AI助手如Claude Desktop集成的GitHub工具。
此服务器实现了模型上下文协议,以暴露可以由MCP客户端使用的GitHub操作。它利用GitHub CLI(gh)执行各种GitHub操作,包括仓库管理、问题跟踪、拉取请求管理和更多。这提供了轻量级替代官方GitHub MCP服务器的选择,无需使用Docker。
要使用此服务器与Claude Desktop结合,请在您的Claude配置文件中添加以下内容:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "java",
"args": ["-jar", "/path/to/gh_mcp_server/build/libs/gh_mcp_server.jar"],
"env": {}
}
}
}
将/path/to/gh_mcp_server替换为您项目的实际路径。
gh) - 必须安装并经过身份验证安装GitHub CLI
# macOS
brew install gh
# 或从https://cli.github.com/下载
与GitHub进行身份验证
gh auth login
克隆并构建项目
git clone <repository-url>
cd gh_mcp_server
./gradlew build
注意:构建会自动创建一个版本无关的符号链接
gh_mcp_server.jar→gh_mcp_server-1.0.0.jar
配置Claude Desktop
构建后,配置Claude以使用此MCP服务器。您有两个选项:
选项A:使用JAR文件(推荐)
{
"mcpServers": {
"github": {
"command": "java",
"args": ["-jar", "/path/to/gh_mcp_server/build/libs/gh_mcp_server.jar"],
"env": {}
}
}
}
注意:符号链接
gh_mcp_server.jar指向当前版本(gh_mcp_server-1.0.0.jar)。这提供了版本无关的部署。对于特定版本的部署,请使用完整的版本文件名。
选项B:使用Gradle
{
"mcpServers": {
"github": {
"command": "./gradlew",
"args": ["bootRun"],
"cwd": "/path/to/gh_mcp_server",
"env": {}
}
}
}
重启Claude Desktop以加载新的服务器配置
配置Claude Desktop后,您可以使用自然语言与GitHub交互:
如果服务器无法启动,请检查:
gh auth status)要独立测试服务器(不使用Claude):
./gradlew bootRun
服务器将以STDIO模式启动并等待MCP协议消息。然而,为了正常用途,服务器应按照上述配置自动由Claude Desktop运行。
# 构建项目并运行所有测试
./gradlew build
# 运行测试(仅验证命令语法)
./gradlew test
# 运行包括GitHub CLI集成测试的测试
./gradlew test -Dtest.gh.integration=true
# 使用Spotless(Google Java格式)格式化代码
./gradlew spotlessApply
# 检查代码格式而不应用更改
./gradlew spotlessCheck
# 清理构建工件
./gradlew clean
# 本地运行服务器进行测试
./gradlew bootRun
项目包括全面的测试覆盖:
gh命令构造详见src/test/java/com/kousenit/gh_mcp_server/TEST_README.md中的详细测试文档。
服务器使用Spring Boot的默认配置。您可以在src/main/resources/application.properties中自定义设置。
github.defaultBranch - 操作的默认分支名称(默认:main)spring.threads.virtual.enabled - 启用虚拟线程以提高性能(默认:true)listRepositories - 列出用户的仓库,可选可见性筛选(公开/私有/内部)searchRepositories - 搜索GitHub仓库getRepository - 获取详细的仓库信息getCommitHistory - 获取仓库提交历史,可配置限制listBranches - 列出仓库分支createBranch - 创建新分支listIssues - 列出仓库中的问题getIssue - 获取特定问题的详细信息createIssue - 创建新问题closeIssue - 关闭问题commentOnIssue - 向问题添加评论editIssue - 编辑问题标题/正文listPullRequests - 列出拉取请求getPullRequest - 获取PR详细信息createPullRequest - 创建新的拉取请求mergePullRequest - 合并PR(合并/压缩/重新基准化)closePullRequest - 关闭拉取请求commentOnPullRequest - 向PR添加评论listWorkflows - 列出仓库工作流listWorkflowRuns - 列出带有过滤的工作流运行getWorkflowRun - 获取工作流运行详细信息listReleases - 列出仓库发布getRelease - 获取发布详细信息createRelease - 创建新的发布(草稿/预发布选项)getFileContents - 从仓库获取文件内容getMe - 获取已认证用户详细信息所有操作返回优化的JSON响应,并支持全面的错误处理。
"gh: 命令未找到"
gh在系统PATH中gh --version测试身份验证错误
gh auth login进行身份验证gh auth status检查状态服务器启动失败
java --version命令超时
权限被拒绝错误
gh help构建过程生成带有版本号的JAR文件(例如,gh_mcp_server-1.0.0.jar)。在部署或更新时:
初始部署:在您的Claude Desktop配置中使用当前版本:
"args": ["-jar", "/path/to/gh_mcp_server/build/libs/gh_mcp_server-1.0.0.jar"]
版本更新:当更新到新版本时,您必须:
./gradlew build版本无关部署:为了更轻松地部署,您可以:
gh_mcp_server.jar(构建过程中自动创建)自动符号链接管理:构建过程自动创建和维护符号链接:
./gradlew build创建gh_mcp_server.jar → gh_mcp_server-X.Y.Z.jar./gradlew clean build重新创建正确的版本符号链接String.formatted()进行更干净的字符串构造本项目根据MIT许可证授权 - 详情参见LICENSE文件。