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

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 示例

在这里插入图片描述

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

MCPSSE: http://localhost:5235/mcp/user/sse MCPSSEMessage: http://localhost:5235/mcp/user/message MCPStreamableHTTP: 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 
在这里插入图片描述

Read more

Spring IoC和DI

Spring IoC和DI

目录 IoC 引入 传统实现思路 解决方案 IoC的优势 DI Spring 是包含了众多⼯具⽅法的 IoC 容器. IoC 什么是IoC? 像在类上⾯添加 @RestController 和@Controller 注解, 就是把这个对象交给Spring管理, Spring 框架启动时就会加载该类. 把对象交给Spring管理, 就是IoC思想. IoC:Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 什么是控制反转呢? 也就是控制权反转. 什么的控制权发⽣了反转? 获得依赖对象的过程被反转了也就是说, 当需要某个对象时, 传统开发模式中需要⾃⼰通过 new 创建对象, 现在不需要再进⾏

By Ne0inhk
实测对比:ToDesk、向日葵、AnyDesk、RustDesk、Splashtop五大主流远程软件谁最强?2026年选购指南

实测对比:ToDesk、向日葵、AnyDesk、RustDesk、Splashtop五大主流远程软件谁最强?2026年选购指南

实测对比:ToDesk、向日葵、AnyDesk、RustDesk、Splashtop五大主流远程软件谁最强?2026年选购指南 前言 最近,随着工作方式的变化,尤其是远程办公和跨设备协作的需求越来越大,我发现自己也越来越依赖远程控制软件。作为一名自由职业者,我通常在家工作,偶尔需要快速解决电脑上的一些技术问题,或者访问公司工作室的电脑进行任务处理。而在这些情况下,能够迅速、稳定地远程连接和控制另一台电脑,成了我工作的必要条件。 印象很深的一次,我正在准备一个重要的视频会议,突然遇到电脑系统卡顿,导致视频画面卡住,甚至连文件上传都出现了问题。眼看会议马上就要开始了,我急得像热锅上的蚂蚁。这时,我决定试试通过远程控制软件连接到工作室的电脑,看看能不能解决问题。 而市面上有那么多远程控制软件,究竟哪一款能够真正满足我的需求? 我的明确需求是,这款远程软件不仅要能够帮我解决突发的技术问题,还可以在不同设备之间无缝切换,尤其是能从手机、平板等移动设备上进行操作。于是,我花了一些时间,详细测试目前市场上主流的几款远程控制软件,包括ToDesk、向日葵、AnyDesk、RustDesk、

By Ne0inhk
KWDB 硬核实战:30ms 写入千条轨迹,用 SQL 打造物流车队“天眼”系统

KWDB 硬核实战:30ms 写入千条轨迹,用 SQL 打造物流车队“天眼”系统

前言: 随着 5G 和物联网技术的普及,车联网 (Internet of Vehicles, IoV) 正成为数据爆发的新战场。与传统的静态传感器不同,车辆是移动的计算节点,它们每时每刻都在产生海量的时间序列数据:从 GPS 经纬度到发动机转速,从剩余油量到刹车踏板状态。 对于一家拥有数百辆货车的物流公司而言,这些数据就是金矿。通过实时监控,可以有效降低油耗、杜绝违规驾驶、优化配送路线。然而,传统的关系型数据库在面对车辆高频上报(例如每秒 10 次)的轨迹数据时,往往面临写入瓶颈;而单纯的时序数据库又难以处理复杂的车辆档案关联查询。 KWDB (KaiwuDB) 的“多模”特性恰好解决了这一痛点。今天,我们将实战构建一个物流车队实时监控平台,挑战如何在一个数据库内同时搞定“车辆档案管理”与“海量轨迹分析”。 场景设定:我们要为一个拥有 200 辆货车的物流车队构建监控系统。 核心挑战:高频写入:车辆每 10

By Ne0inhk
Windows安装RabbitMQ保姆级教程(图文详解)

Windows安装RabbitMQ保姆级教程(图文详解)

文章目录 * 前言 * 准备工作 * 系统要求 * 安装概述 * 第一步:下载Erlang * 1.1 访问Erlang官网 * 1.2 下载安装包 * 第二步:安装Erlang * 2.1 运行安装程序 * 2.2 安装向导 * 2.3 配置Erlang环境变量 * 2.4 验证环境变量配置 * 第三步:下载RabbitMQ * 3.1 访问RabbitMQ官网 * 3.2 选择Windows安装包 * 第四步:安装RabbitMQ * 4.1 运行安装程序 * 4.2 安装过程 * 4.3 安装完成 * 4.4 配置RabbitMQ环境变量 * 4.

By Ne0inhk