microsoft/mcp-gateway

MCP Gateway is a reverse proxy and management layer for MCP servers, enabling scalable, session-aware stateful routing and lifecycle management of MCP servers in Kubernetes environments.

MCP Gateway – 它是什么

MCP Gateway 是一个为 Model Context Protocol (MCP) 构建的开源反向代理和管理层。它运行在 Kubernetes 集群中,并提供两个主要平面:

  • 控制平面 – 一组 REST API,允许您 创建、更新、列出和删除 MCP 服务器实例(称为 适配器)和 工具,这些工具可提供额外功能。当提供 Azure Cognitive Services 端点时,控制平面还可选择性地管理 代理会话(由 LLM 驱动的工作流)。
  • 数据平面 – 一个无状态的反向代理,负责将传入的 MCP 流量路由到相应的服务器。它提供 会话感知路由(具有相同 session_id 的所有请求都会发送到同一个 Pod)和一个 工具网关路由器,可动态将工具调用转发到正确的工具容器。

该网关专为企业级部署设计:它与 Azure Entra ID 集成以实现承载令牌认证和基于角色的访问控制,自带一个内置的 React 管理门户,并可通过 Docker/Kubernetes 本地部署,或使用一键式 Azure 模板进行部署。


核心概念

概念 含义
MCP 服务器(适配器) 一个实现了 Model Context Protocol 的容器——本质上是一个 LLM 可以通信的可流式传输的 HTTP 端点。
工具 一个注册的服务(容器),实现了特定的 MCP 工具定义(名称、输入模式、执行端点)。
工具网关路由器 位于网关后面的 MCP 服务器;它检查传入的 MCP 请求,查找工具定义,并将调用转发到正确的工具容器。
会话感知路由 确保所有携带相同 session_id 的调用都命中同一个后端 Pod,从而保持有状态的交互。
代理与会话(预览版) 可选的由 LLM 驱动的代理,可调用已注册的工具(以及一些内置的 bash/file 工具)。会话通过服务器发送事件(Server-Sent Events)流式传输事件。

主要特性

  • RESTful 控制平面 API,用于管理适配器、工具、代理和会话(增删改查、状态、日志)。
  • 使用 Azure Entra ID 实现 认证与 RBAC(读/写角色如 mcp.adminmcp.engineer 等)。
  • 无状态反向代理,配备分布式会话存储,支持生产级扩展。
  • 动态工具路由 – 注册一次新工具,路由器会自动将调用指向它。
  • 内置管理门户/portal/),支持可视化增删改查、日志检查,以及浏览器内嵌的 JSON-RPC 测试控制台。
  • 原生 Kubernetes 部署(StatefulSets、无头服务)和简单的本地 Docker-K8s 部署路径。
  • 可选的 LLM 代理,可调用工具和内置的 bash/file 工具,具备沙箱式安全限制。
  • 支持本地和远程 MCP 服务器 – 您可以代理现有的 MCP 端点。

典型使用场景

  1. 企业级 AI 平台 – 在单一网关后托管多个兼容 MCP 的 LLM 后端(例如 Copilot、自定义模型),由网关统一处理认证、路由和生命周期管理。
  2. 工具即服务 – 一次性注册领域特定工具(天气、金融、代码执行),让任何 MCP 客户端调用它们,无需硬编码端点。
  3. 多租户开发沙箱 – 开发人员通过 API 启动隔离的适配器/工具,本地测试后,再推送到生产环境。
  4. 由 LLM 驱动的代理 – 创建可编排多个工具(例如:获取数据、运行脚本、写入文件)的代理,并通过 VS Code 的 Copilot 聊天界面暴露。
  5. 可观测性与治理 – 在受监管环境中,集中化所有 MCP 流量的日志、遥测和基于角色的访问控制。

快速入门摘要(本地)

  1. 前置条件 – 安装 .NET 8 SDK、带有 Kubernetes 的 Docker Desktop,以及本地 Docker 注册表。
  2. 构建镜像 – 编译示例 MCP 服务器和示例工具,并推送到 localhost:5000
  3. 发布网关镜像 – 使用提供的发布配置运行 dotnet publish,生成网关和工具路由器容器。
  4. 部署 – 应用 deployment/k8s/local-deployment.yml 并端口转发服务(kubectl port-forward … 8000:8000)。
  5. 创建适配器 – 向 /adapters 发送 POST 请求,携带 JSON { "name": "mcp-example", "imageName": "mcp-example", "imageVersion": "1.0.0" }
  6. 注册工具 – 向 /tools 发送 POST 请求,携带工具定义(例如天气工具)及其容器镜像。
  7. 连接客户端 – 将 VS Code 的 MCP 配置指向 http://localhost:8000/adapters/<name>/mcp 以直接访问服务器,或指向 http://localhost:8000/mcp 以启用工具路由。
  8. (可选)启用代理 – 添加 FoundrySettings 块并提供 Azure Cognitive Services 端点,通过 /agents/sessions API 创建代理/会话。

更多信息获取途径

  • OpenAPI 规范openapi/mcp-gateway.openapi.json(可导入 Postman、Swagger UI 等)
  • 管理门户源码portal/README.md
  • Entra ID 角色配置指南docs/entra-app-roles.md
  • 示例服务器实现sample-servers/mcp-example/sample-servers/tool-example/
  • Azure 部署指南 – 包含一键式模板和 Entra ID 配置步骤的“部署到 Azure”部分。

总结:MCP Gateway 为任何 Model Context Protocol 服务提供了一个生产就绪、原生 Kubernetes 的外观层,通过一个简洁的 REST API 和现成的 UI,处理认证、会话亲和性、动态工具路由以及可选的 LLM 代理编排。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目