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.admin、mcp.engineer等)。 - 无状态反向代理,配备分布式会话存储,支持生产级扩展。
- 动态工具路由 – 注册一次新工具,路由器会自动将调用指向它。
- 内置管理门户(
/portal/),支持可视化增删改查、日志检查,以及浏览器内嵌的 JSON-RPC 测试控制台。 - 原生 Kubernetes 部署(StatefulSets、无头服务)和简单的本地 Docker-K8s 部署路径。
- 可选的 LLM 代理,可调用工具和内置的 bash/file 工具,具备沙箱式安全限制。
- 支持本地和远程 MCP 服务器 – 您可以代理现有的 MCP 端点。
典型使用场景
- 企业级 AI 平台 – 在单一网关后托管多个兼容 MCP 的 LLM 后端(例如 Copilot、自定义模型),由网关统一处理认证、路由和生命周期管理。
- 工具即服务 – 一次性注册领域特定工具(天气、金融、代码执行),让任何 MCP 客户端调用它们,无需硬编码端点。
- 多租户开发沙箱 – 开发人员通过 API 启动隔离的适配器/工具,本地测试后,再推送到生产环境。
- 由 LLM 驱动的代理 – 创建可编排多个工具(例如:获取数据、运行脚本、写入文件)的代理,并通过 VS Code 的 Copilot 聊天界面暴露。
- 可观测性与治理 – 在受监管环境中,集中化所有 MCP 流量的日志、遥测和基于角色的访问控制。
快速入门摘要(本地)
- 前置条件 – 安装 .NET 8 SDK、带有 Kubernetes 的 Docker Desktop,以及本地 Docker 注册表。
- 构建镜像 – 编译示例 MCP 服务器和示例工具,并推送到
localhost:5000。 - 发布网关镜像 – 使用提供的发布配置运行
dotnet publish,生成网关和工具路由器容器。 - 部署 – 应用
deployment/k8s/local-deployment.yml并端口转发服务(kubectl port-forward … 8000:8000)。 - 创建适配器 – 向
/adapters发送 POST 请求,携带 JSON{ "name": "mcp-example", "imageName": "mcp-example", "imageVersion": "1.0.0" }。 - 注册工具 – 向
/tools发送 POST 请求,携带工具定义(例如天气工具)及其容器镜像。 - 连接客户端 – 将 VS Code 的 MCP 配置指向
http://localhost:8000/adapters/<name>/mcp以直接访问服务器,或指向http://localhost:8000/mcp以启用工具路由。 - (可选)启用代理 – 添加
FoundrySettings块并提供 Azure Cognitive Services 端点,通过/agents和/sessionsAPI 创建代理/会话。
更多信息获取途径
- 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 代理编排。
相关
- 项目
- 项目
- 项目
- 项目
- 项目