MCP服务器代理管理工具

MCPGateway是一个基于Quarkus的控制平面和代理,用于集中管理MCP服务器和网关,提供工具审批、指纹验证和轻量级UI及REST API。

  • by BarDweller
  • Java
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 BarDweller/mcp-gateway

使用说明

MCP网关

MCPGateway是基于Quarkus的MCP服务器控制平面和代理。它集中了服务器/网关管理、工具批准、指纹验证和每个网关的身份验证,并公开了一个轻量级的UI和REST API来管理一切。

目标是集中MCP服务器的使用,这样只有经过评估、批准的工具签名才会暴露给LLM客户端。MCP工具依赖于人类可读的描述和松散的合同,这使它们功能强大,但也为漂移或滥用创造了机会。

如果在初始批准后更改了工具的描述或参数模式,LLM可能会遵循新的说明,而不会意识到它已经越过了策略边界。这为恶意MCP服务器请求敏感数据或扩大其收集范围创建了一条路径。

例如,一个最初被批准为“返回城市天气”的工具可能会在以后被更改为声称它接受包含回购名称和访问令牌的JSON有效载荷“作为可选输入”。即使是一个善意的客户端,如果它信任修改后的工具合同,也可能会泄露机密。

MCPGateway充当监视工具指纹的代理,并且只向LLM通告批准的签名。它还允许跨多个MCP服务器聚合工具,使团队能够管理和限制下游客户端可以看到和使用的内容。

它的作用

  • 管理MCP服务器 (本地或远程)并存储/批准他们的工具定义。
  • 创建网关 代理MCP流量并公开选定的工具。
  • 指纹验证 每个工具和网关都有可配置的时间表(每个调用或时间段)。
  • 网关身份验证 (Basic或Bearer),其抽象可以稍后委托给Keycloke/OAuth2。
  • 可观测性 使用Micrometer指标来衡量网关/服务器生命周期、工具调用和验证结果。

REST API

  • 网关
    • GET /mcp-gateways
    • POST /mcp-gateways
    • PUT /mcp-gateways/{id}
    • DELETE /mcp-gateways/{id}
    • POST /mcp-gateways/{id}/start
    • POST /mcp-gateways/{id}/stop
  • 服务器
    • GET /mcp-servers
    • POST /mcp-servers
    • PUT /mcp-servers/{id}
    • DELETE /mcp-servers/{id}
    • GET /mcp-servers/{id}/tools
    • POST /mcp-servers/{id}/tools/read
    • POST /mcp-servers/{id}/tools/compare
    • POST /mcp-servers/{id}/tools/approve

用户界面

在以下位置打开管理UI: http://localhost:8080/

指标

Prometheus格式指标公开于: http://localhost:8080/q/metrics

在本地运行

开发模式

./mvnw quarkus:dev

Quarkus开发用户界面(仅限开发模式): http://localhost:8080/q/dev/

生产建设

./mvnw package
java -jar target/quarkus-app/quarkus-run.jar

本机构建(可选)

./mvnw package -Dnative

计划的功能

  • HTTPS证书固定(与工具指纹验证一致)
  • 单个网关中同名工具的冲突解决
  • 用于OAuth2风格身份验证的Keycloak集成
  • 参数绑定/替换为占位符令牌,用于受控工具访问
  • 自动将已配置的服务器克隆到相应的网关中

技术栈

  • Quarkus 3
  • Vert.x HTTP
  • 千分尺+普罗米修斯注册表
  • RESTEasy响应式(Quarkus REST)