MCP中心服务器

一个基于Spring Boot构建的模型上下文协议(MCP)中心服务器,用于注册工具和提示,并提供HTTP MCP端点供组织内部使用。

  • by lmsamarawickrama
  • Java
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 lmsamarawickrama/Mcp-Hub

使用说明

MCP集线器服务器

一个使用Spring Boot构建的中央模型上下文协议(MCP)中心服务器,用于注册工具和提示,并公开一个HTTP MCP端点供整个组织使用。

特性

  • HTTP MCP端点位于 /mcp 用于工具和快速调用
  • GitHub工具(例如。, fetch_repositories)当前使用应用程序属性中的令牌
  • 提示注册(例如,提交消息提示)
  • 通过Spring beans可扩展的工具/提示注册表

需求

  • Java 17+
  • Maven 3.8+

构建并运行

  1. 构建项目:
./mvnw clean package

在Windows PowerShell上:

./mvnw.cmd clean package
  1. 运行服务器:
java -jar target/mcp-hub-*.jar

默认情况下,服务器在端口8081上启动(检查 src/main/resources/application.yaml).

身份验证(当前行为)

目前,GitHub令牌是从应用程序属性中读取的(github.token)定义于 application.yaml。您可以在启动服务器之前通过环境变量覆盖它:

Windows PowerShell:

$env:GITHUB_TOKEN = "<your_personal_access_token>"; java -jar target/mcp-hub-*.jar

application.yaml代码段:

github:
  token: ${GITHUB_TOKEN:ghp_example_default}

通过自定义标头进行计划身份验证

基于报头的每请求认证(例如。, X-GITHUB-TOKEN)计划中,不同的用户可以通过MCP客户端(如Copilot)传递自己的令牌。一旦实现,工具将从MCP传输上下文中提取令牌。在此之前,请按照上述说明使用应用程序属性。

MCP客户端配置(示例)

您可以将MCP客户端(例如Copilot)配置为调用集线器,但请注意,截至目前,服务器尚未消耗 X-GITHUB-TOKEN 对于工具调用:

{
  "servers": {
    "mcp-hub": {
      "type": "http",
      "url": "http://localhost:8081/mcp"
      // headers like X-GITHUB-TOKEN will be supported in a future update
    }
  }
}

工具

  • fetch_repositories:列出经过身份验证的用户的存储库
    • 路径: com.saliam.ai.mcp.hub.tool.github.FetchRepositoriesTool
    • 用途 github.token 从运行时的应用程序属性

在下面添加更多工具 src/main/java/com/saliam/ai/mcp/hub/tool/**.

提示

  • 提示可以添加在 src/main/java/com/saliam/ai/mcp/hub/prompt/** 并在 McpRegistryConfig.

开发笔记

  • 工具和提示注册发生在 McpRegistryConfig 使用 McpAsyncServer 和 McpServerFeatures.
  • GitHub身份验证当前从以下位置读取 github.token 在 application.yaml.

故障排除

  • 如果MCP请求超时或返回500:
    • 确保服务器在端口8081上运行 /mcp 可以联系到
    • 验证 GITHUB_TOKEN 环境变量或 application.yaml 值设置正确
    • 在工具调度期间检查服务器日志是否有异常
  • 使用PowerShell验证您的令牌:
Invoke-RestMethod -Headers @{ Authorization = "Bearer <token>"; Accept = "application/vnd.github+json" } -Uri "https://api.github.com/user" -Method Get
Invoke-RestMethod -Headers @{ Authorization = "Bearer <token>"; Accept = "application/vnd.github+json" } -Uri "https://api.github.com/user/repos?per_page=100&sort=updated" -Method Get

许可证

专有——组织内部使用。