关于 MCP-Gateway
MCP-Gateway 为需要连接 API 等数据源的团队管理 HTTP 接口定义和 MCP 服务。它支持转换 curl 命令与 OpenAPI 规范、管理版本,并将 MCP 服务编译为 WebAssembly 后激活。
主要功能
- 01管理 HTTP 接口及其版本
- 02将 curl 命令转为 HTTP 定义
- 03导入和导出 OpenAPI 规范
- 04管理 MCP 服务及版本
- 05将服务编译为 WebAssembly
- 06配置服务路由
适用场景
- 01将现有 curl 命令转换为 API 定义
- 02将 OpenAPI 路径导入为 HTTP 接口
- 03基于已管理的 HTTP 接口发布工具
MCP 相关
它根据 HTTP 接口定义创建和管理 MCP 服务,将其编译为 WebAssembly 并激活,同时路由 MCP 客户端的工具调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP-Gateway
MCP-Gateway 是一项提供 MCP Server 统一管理能力的服务,可帮助 AI Agent 快速连接各种数据源。借助 MCP Server,AI Agent 无需关注具体的连接细节,即可轻松访问数据库、REST API 和其他外部服务。
功能
- HTTP 接口管理:支持导出 OpenAPI 结构、将 HTTP 转换为 MCP Server YAML 格式,以及对接口进行版本管理。
- 将 curl 命令转换为 HTTP 接口:轻松将 curl 命令转换为格式规范的 HTTP 接口。
- 导入/导出 OpenAPI:在 HTTP 接口与 OpenAPI 规范之间进行转换,便于与现有 API 框架集成。
- MCP Server 管理:支持管理 MCP Server 元数据、选择多个 HTTP 结构来更新元数据、发布 MCP Server(编译为 WebAssembly 以便动态加载)以及版本控制。
- 路由管理:支持路由配置,例如将
xxx/mcp-server/{name}匹配到名称为{name}的 MCP Server。
架构
MCP-Gateway 由三个核心模块组成:
- HTTP 接口管理:定义和管理 API 配置。
- MCP Server 管理:管理 MCP Server 实例,将其编译为 WebAssembly,并处理运行时执行。
- 路由管理:管理 MCP Server 的路由规则。
开始使用
前置条件
- Go 1.19 或更高版本
- Git
安装
-
克隆仓库:
git clone https://github.com/wangfeng/mcp-gateway2.git cd mcp-gateway2 -
安装依赖项:
go mod tidy -
运行服务:
go run cmd/server/main.go -
服务默认会在端口 8080 上启动。你可以通过设置
PORT环境变量来自定义端口。
测试
如需测试 API,请运行测试客户端:
go run test/client.go
此操作将:
- 列出可用的 HTTP 接口
- 使用其中一个接口创建 MCP Server
- 将 MCP Server 编译为 WebAssembly
- 激活 MCP Server
- 调用 MCP Server 上的工具
如需测试 curl 转换功能,请运行 curl 测试客户端:
go run test/curl/curl_client.go
此操作将:
- 将多个 curl 命令转换为 HTTP 接口
- 使用转换后的接口创建 MCP Server
- 编译并激活 MCP Server
- 调用 MCP Server 上的工具
如需测试 OpenAPI 转换功能,请运行 OpenAPI 测试客户端:
go run test/openapi/openapi_client.go
此操作将:
- 将现有 HTTP 接口导出为 OpenAPI 格式
- 导入示例 OpenAPI 规范以创建新的 HTTP 接口
- 执行往返转换(导出为 OpenAPI 后再导入)
API 文档
HTTP 接口
GET /api/http-interfaces:列出所有 HTTP 接口GET /api/http-interfaces/:id:获取指定的 HTTP 接口POST /api/http-interfaces:创建新的 HTTP 接口PUT /api/http-interfaces/:id:更新 HTTP 接口DELETE /api/http-interfaces/:id:删除 HTTP 接口GET /api/http-interfaces/:id/versions:获取 HTTP 接口的所有版本GET /api/http-interfaces/:id/versions/:version:获取 HTTP 接口的指定版本GET /api/http-interfaces/:id/openapi:将 HTTP 接口导出为 OpenAPI 格式POST /api/http-interfaces/from-curl:根据 curl 命令创建新的 HTTP 接口POST /api/http-interfaces/from-openapi:根据 OpenAPI 规范创建新的 HTTP 接口
MCP Servers
GET /api/mcp-servers:列出所有 MCP ServerGET /api/mcp-servers/:id:获取指定的 MCP ServerPOST /api/mcp-servers:根据 HTTP 接口创建新的 MCP ServerPUT /api/mcp-servers/:id:更新 MCP ServerDELETE /api/mcp-servers/:id:删除 MCP ServerGET /api/mcp-servers/:id/versions:获取 MCP Server 的所有版本GET /api/mcp-servers/:id/versions/:version:获取 MCP Server 的指定版本POST /api/mcp-servers/:id/compile:将 MCP Server 编译为 WebAssemblyPOST /api/mcp-servers/:id/activate:激活 MCP ServerPOST /api/mcp-servers/:id/tools/:tool:调用 MCP Server 中的工具
curl 转 HTTP 接口
系统支持将 curl 命令转换为 HTTP 接口。只需向 /api/http-interfaces/from-curl 发送 POST 请求,并附上以下 JSON 正文:
{
"command": "curl -H \"Content-Type: application/json\" https://api.example.com/resource",
"name": "example-api",
"description": "Example API endpoint"
}
系统将解析 curl 命令,并创建格式规范的 HTTP 接口,可用于创建 MCP 服务。
OpenAPI 转换
导出为 OpenAPI
向 /api/http-interfaces/:id/openapi 发送 GET 请求,即可将任意 HTTP 接口导出为 OpenAPI 格式。响应将是格式规范的 OpenAPI 3.0.0 规范,可与其他 OpenAPI 工具配合使用。
从 OpenAPI 导入
向 /api/http-interfaces/from-openapi 发送 POST 请求,并附上以下 JSON 正文,即可从 OpenAPI 规范创建新的 HTTP 接口:
go run test/openapi/openapi_client.go
{
"name": "my-api",
"description": "My API description",
"spec": {
"openapi": "3.0.0",
"info": {
"title": "Sample API",
"description": "A sample API",
"version": "1.0.0"
},
"paths": {
"/users": {
"get": {
"summary": "Get all users",
"responses": {
"200": {
"description": "A list of users"
}
}
}
}
}
}
}
系统将解析 OpenAPI 规范,并为每个路径/操作组合创建 HTTP 接口。
许可证
MIT
参考资料
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。