MCP网关
MCP网关是一种提供MCP服务器统一管理功能的服务,帮助AI代理快速连接到各种数据源。通过MCP Server,AI代理可以轻松访问数据库、REST API和其他外部服务,而无需担心特定的连接细节。
特性
- HTTP接口管理:支持导出OpenAPI结构,将HTTP转换为MCP Server YAML格式,以及对接口进行版本控制。
- 将curl命令转换为HTTP接口:轻松地将curl命令转化为格式正确的HTTP接口。 - 导入/导出OpenAPI:在HTTP接口和OpenAPI规范之间进行转换,以便与现有的API框架轻松集成。
- MCP服务器管理:支持管理MCP服务器元数据、选择多个HTTP结构来更新元数据、发布MCP服务器(编译为WebAssembly以进行动态加载)和版本控制。
- 路由管理:支持路由配置,如匹配
xxx/mcp-server/{name}到名为的MCP服务器{name}.
建筑
MCP网关由三个核心模块组成:
- HTTP接口管理:定义和管理API配置。
- MCP服务器管理:管理MCP服务器实例,将其编译为WebAssembly,并处理运行时执行。
- 路由管理:管理MCP服务器的路由规则。
入门指南
先决条件
- 上涨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服务器
- 将MCP服务器编译为WebAssembly
- 激活MCP服务器
- 调用MCP服务器上的工具
要测试curl转换功能,请运行curl测试客户端:
go run test/curl/curl_client.go这将:
- 将多个curl命令转换为HTTP接口
- 使用转换后的接口创建MCP服务器
- 编译并激活MCP服务器
- 从MCP服务器调用工具
要测试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服务器
GET /api/mcp-servers:列出所有MCP服务器GET /api/mcp-servers/:id:获取特定的MCP服务器POST /api/mcp-servers:从HTTP接口创建新的MCP服务器PUT /api/mcp-servers/:id:更新MCP服务器DELETE /api/mcp-servers/:id:删除MCP服务器GET /api/mcp-servers/:id/versions:获取MCP服务器的所有版本GET /api/mcp-servers/:id/versions/:version:获取MCP服务器的特定版本POST /api/mcp-servers/:id/compile:将MCP服务器编译为WebAssemblyPOST /api/mcp-servers/:id/activate:激活MCP服务器POST /api/mcp-servers/:id/tools/:tool:调用MCP服务器中的工具
卷曲到HTTP接口转换
系统支持将curl命令转换为HTTP接口。只需向发送POST请求 /api/http-interfaces/from-curl 具有以下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
您可以通过向发送GET请求将任何HTTP接口导出为OpenAPI格式 /api/http-interfaces/:id/openapi。响应将是一个格式正确的OpenAPI 3.0.0规范,可以与其他OpenAPI工具一起使用。
从OpenAPI导入
您可以通过向以下对象发送POST请求,从OpenAPI规范创建新的HTTP接口 /api/http-interfaces/from-openapi 具有以下JSON正文:
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接口。
许可证
麻省理工学院
