MCP Gateway:零侵入式 API 到 MCP 协议的转换网关

在这里插入图片描述

概述

MCP狂欢迎来了很多玩乐的MCP Server,但是也有很多产品和B端开始接入MCP,当MCP真正应用到生产环境的时候,势必会遇到大量存量的服务、API需要改造,涉及投入资源去做,因此就需要有一个MCP层面的“Nginx”来反向代理存量的API,让个人和企业可以快速接入MCP生态,快速验证想法验证市场,而不需要一开始大量effort去投入改造。

目前市场上只有Higress在支持MCP网关后迎来第二春,但是我觉得Higress并不一定适合所有人,他的接入成本略高,文档缺失,配置难以捉摸,基于istio、envoy、wasm这一套的学习成本不低,尤其希望能做一定的二开,极其痛苦。但是不可否认阿里在大规模场景下是有技术护城河的,这边只是客观描述现存问题,不拉不踩。基于这样的背景,我觉得市面上是需要存在一个更低成本、平台中立、轻量化的方案,因此我开源了这个项目,目前我们在生产环境也在持续接入MCP,因此未来会持续迭代,目前v0.2.2版本已经支持Docker allinone,集简易管理平台+核心网关服务,轻松低负担配置后可直接使用。


✨ MCP Gateway 是什么?

MCP Gateway 是一个用 Go 编写的轻量高可用网关服务,帮助个人与企业将已有的 API 通过配置方式转换为符合 MCP 协议 的服务,无需改动任何代码。


官网

GitHub: https://github.com/AmoyLab/Unla
文档:https://mcp.ifuryst.com


核心设计理念

✅ 零侵入:平台中立,适配物理机、虚拟机、ECS、K8s 等环境,无需改动现有基础设施
🔄 配置驱动:通过 YAML 配置即可将存量 API 转换为 MCP Server,无需改代码
🪶 轻量高效:架构极致轻量,拒绝在性能与高可用性上妥协
🧭 内置管理界面:开箱即用的 Web UI,降低学习与运维成本

架构图

在这里插入图片描述

快速开始

一键启动 MCP Gateway

这边需要注意几个环境变量的内容要改一下:

export OPENAI_API_KEY="sk-eed837fb0b4a62ee69abc29a983492b7PlsChangeMe"
export OPENAI_MODEL="gpt-4o-mini"
export APISERVER_JWT_SECRET_KEY="fec6d38f73d4211318e7c85617f0e333PlsChangeMe"
export SUPER_ADMIN_USERNAME="admin"
export SUPER_ADMIN_PASSWORD="297df52fbc321ebf7198d497fe1c9206PlsChangeMe"

一键拉起

docker run -d \
  --name unla \
  -p 8080:80 \
  -p 5234:5234 \
  -p 5235:5235 \
  -p 5335:5335 \
  -p 5236:5236 \
  -e ENV=production \
  -e TZ=Asia/Shanghai \
  -e OPENAI_API_KEY=${OPENAI_API_KEY} \
  -e OPENAI_MODEL=${OPENAI_MODEL} \
  -e APISERVER_JWT_SECRET_KEY=${APISERVER_JWT_SECRET_KEY} \
  -e SUPER_ADMIN_USERNAME=${SUPER_ADMIN_USERNAME} \
  -e SUPER_ADMIN_PASSWORD=${SUPER_ADMIN_PASSWORD} \
  --restart unless-stopped \
  ghcr.io/amoylab/unla/allinone:latest

中国境内的设备可以拉阿里云仓库的镜像并自定义模型(这边示例是千问)

export OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1/"
export OPENAI_API_KEY="sk-eed837fb0b4a62ee69abc29a983492b7PlsChangeMe"
export OPENAI_MODEL="qwen-turbo"
export APISERVER_JWT_SECRET_KEY="fec6d38f73d4211318e7c85617f0e333PlsChangeMe"
export SUPER_ADMIN_USERNAME="admin"
export SUPER_ADMIN_PASSWORD="297df52fbc321ebf7198d497fe1c9206PlsChangeMe"

一键拉起

docker run -d \
  --name unla \
  -p 8080:80 \
  -p 5234:5234 \
  -p 5235:5235 \
  -p 5335:5335 \
  -p 5236:5236 \
  -e ENV=production \
  -e TZ=Asia/Shanghai \
  -e OPENAI_BASE_URL=${OPENAI_BASE_URL} \
  -e OPENAI_API_KEY=${OPENAI_API_KEY} \
  -e OPENAI_MODEL=${OPENAI_MODEL} \
  -e APISERVER_JWT_SECRET_KEY=${APISERVER_JWT_SECRET_KEY} \
  -e SUPER_ADMIN_USERNAME=${SUPER_ADMIN_USERNAME} \
  -e SUPER_ADMIN_PASSWORD=${SUPER_ADMIN_PASSWORD} \
  --restart unless-stopped \
  registry.ap-southeast-1.aliyuncs.com/amoylab/unla-allinone:latest

访问和配置

访问 Web 界面:

在浏览器中打开 http://localhost:8080/
使用配置的管理员账号密码登录

添加 MCP Server:

复制配置文件:https://github.com/amoylab/unla/blob/main/configs/mock-server.yaml
在 Web 界面上点击 “Add MCP Server”
粘贴配置并保存
添加 MCP Server 示例
在这里插入图片描述

可用端点
配置完成后,服务将在以下端点可用:

MCP SSE: http://localhost:5235/mcp/user/sse
MCP SSE Message: http://localhost:5235/mcp/user/message
MCP Streamable HTTP: http://localhost:5235/mcp/user/mcp

在MCP Client中配置/sse或/mcp后缀的url即可开始使用

测试

您可以通过以下两种方式测试服务:

使用 Web 界面中的 MCP Chat 页面
使用您自己的 MCP Client(推荐)
高级配置(可选)
如果您需要更细粒度的配置控制,可以通过挂载配置文件的方式启动:

创建必要的目录并下载配置文件:

mkdir -p unla/{configs,data}
cd unla/
curl -sL https://raw.githubusercontent.com/amoylab/unla/refs/heads/main/configs/apiserver.yaml -o configs/apiserver.yaml
curl -sL https://raw.githubusercontent.com/amoylab/unla/refs/heads/main/configs/mcp-gateway.yaml -o configs/mcp-gateway.yaml
curl -sL https://raw.githubusercontent.com/amoylab/unla/refs/heads/main/.env.example -o .env.allinone

使用 Docker 运行 MCP Gateway:

docker run -d \
           --name unla \
           -p 8080:80 \
           -p 5234:5234 \
           -p 5235:5235 \
           -p 5335:5335 \
           -p 5236:5236 \
           -e ENV=production \
           -v $(pwd)/configs:/app/configs \
           -v $(pwd)/data:/app/data \
           -v $(pwd)/.env.allinone:/app/.env \
           --restart unless-stopped \
           ghcr.io/amoylab/unla/allinone:latest

在这里插入图片描述

### MCP-Gateway 技术概述与使用指南 MCP-Gateway 是一种微服务架构下的网关解决方案,旨在为分布式系统提供高效的流量管理和路由能力[^1]。它通常用于支持 API 网关模式,以实现请求转发、负载均衡、身份验证和监控等功能。 #### 1. MCP-Gateway 的核心功能 MCP-Gateway 提供了一系列关键功能来支持现代微服务架构的需求: - **动态路由**:支持基于路径、主机名或头部信息的灵活路由规则配置[^2]。 - **服务发现集成**:能够与主流的服务注册中心(如 Eureka、Consul)无缝集成,自动获取服务实例列表[^3]。 - **安全性增强**:内置 OAuth2 和 JWT 支持,确保 API 请求的安全性[^4]。 - **限流与熔断**:通过策略配置实现对高并发场景下的保护机制[^5]。 #### 2. 配置与部署 MCP-Gateway 的配置文件通常采用 YAML 格式,以下是一个简单的示例: ```yaml spring: cloud: gateway: routes: - id: service_a_route uri: lb://service-a predicates: - Path=/service-a/** filters: - StripPrefix=1 ``` 上述配置定义了一个名为 `service_a_route` 的路由规则,将所有匹配路径 `/service-a/**` 的请求转发到后端服务 `service-a`,并移除路径中的第一级前缀[^6]。 #### 3. 常见问题与解决方案 - **问题 1**:客户端无法访问网关暴露的 API。 - **解决方法**:检查网关是否正确配置了路由规则,并确认防火墙或安全组未阻止相关端口的流量[^7]。 - **问题 2**:网关返回 404 错误。 - **解决方法**:验证请求路径是否与配置的路由规则匹配,同时确保后端服务正常运行[^8]。 #### 4. 监控与日志 为了更好地管理和调试 MCP-Gateway,可以启用以下功能: - **指标收集**:集成 Prometheus 或 Micrometer 来监控网关的性能指标[^9]。 - **日志记录**:通过调整日志级别(如 DEBUG 或 TRACE),捕获详细的请求和响应信息[^10]。 ```properties logging.level.org.springframework.cloud.gateway=DEBUG management.metrics.export.prometheus.enabled=true ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小工匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值