MCP网关服务

MCP-Gateway是一个提供MCP Server统一管理能力的服务,帮助AI代理快速连接各种数据源,支持HTTP接口管理、MCP Server管理和路由管理。

  • by adcwa
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 adcwa/mcp-gateway2

使用说明

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网关由三个核心模块组成:

  1. HTTP接口管理:定义和管理API配置。
  2. MCP服务器管理:管理MCP服务器实例,将其编译为WebAssembly,并处理运行时执行。
  3. 路由管理:管理MCP服务器的路由规则。

入门指南

先决条件

  • 上涨1.19或更高
  • Git

安装

  1. 克隆存储库:

    git clone https://github.com/wangfeng/mcp-gateway2.git
    cd mcp-gateway2
    
  2. 安装依赖项:

    go mod tidy
    
  3. 运行服务器:

    go run cmd/server/main.go
    
  4. 默认情况下,服务器将在端口8080上启动。您可以通过设置来自定义端口 PORT 环境变量。

测试

若要测试API,请运行测试客户端:

go run test/client.go

这将:

  1. 列出可用的HTTP接口
  2. 使用其中一个接口创建MCP服务器
  3. 将MCP服务器编译为WebAssembly
  4. 激活MCP服务器
  5. 调用MCP服务器上的工具

要测试curl转换功能,请运行curl测试客户端:

go run test/curl/curl_client.go

这将:

  1. 将多个curl命令转换为HTTP接口
  2. 使用转换后的接口创建MCP服务器
  3. 编译并激活MCP服务器
  4. 从MCP服务器调用工具

要测试OpenAPI转换功能,请运行OpenAPI测试客户端:

go run test/openapi/openapi_client.go

这将:

  1. 将现有HTTP接口导出为OpenAPI格式
  2. 导入示例OpenAPI规范以创建新的HTTP接口
  3. 执行往返转换(导出到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服务器编译为WebAssembly
  • POST /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接口。

许可证

麻省理工学院

参考文献