协议转换网关

MCP Gateway是一个将MCP工具调用转换为传统HTTP API请求的协议转换网关,适用于需要将现有HTTP API集成到MCP领域的场景。

  • by Timandes
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 timandes/mcp-gateway

使用说明

MCP网关

MCP(模型上下文协议)网关可以将MCP工具调用转换为传统的HTTP API请求。它可以提供一种可配置的方式,使现有的HTTP API进入MCP区域。

入门指南

从创建配置文件 config.example.yaml:

$ cp config.example.yaml config.yaml

编辑 config.yaml 文件,将所有API映射到MCP工具。

然后开始使用SSE传输启动它:

$ uv run mcp-gateway
INFO:     Started server process [15400]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:3001 (Press CTRL+C to quit)

默认值为3001。

服务器控件

更改端口

提供参数 --port=<port_no> 在命令行中,将端口更改为SSE传输。

使用端口3002启动网关:

$ uv run mcp-gateway --port=3002
INFO:     Started server process [15400]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:3002 (Press CTRL+C to quit)

stdio运输

提供参数 --transport=stdio 在命令行中,将传输更改为stdio。

例如。:

$ uv run mcp-gateway --transport=stdio

这毫无意义 手动地 在stdio传输中启动网关。您可以在Cursor或Cline中进行配置,如下所示:

{
    "mcpServers": {
        "mcp-gateway": {
          "command": "uv",
          "args": ["run", "mcp-gateway", "--transport=stdio"]
        }
      }
}

或具有表单值的MCP检查器:

项目 价值
传输类型 STDIO
命令 uv
参数 运行mcp网关--transport=stdio

配置文件

配置YAML中有两个部分, server 和 tools. server 定义网关服务器使用的基本信息。 tools 定义了从单个MCP工具到HTTP API请求的映射。

server:
  name: rest-amap-server
  config:
    apiKey: foo
tools:
- name: maps-geo
  description: "将详细的结构化地址转换为经纬度坐标。支持对地标性名胜景区、建筑物名称解析为经纬度坐标"
  args:
  - name: address
    description: "待解析的结构化地址信息"
    required: true
  - name: city
    description: "指定查询的城市"
    required: false
  requestTemplate:
    url: "https://restapi.amap.com/v3/geocode/geo?key={{.config.apiKey}}&address={{.args.address}}&city={{.args.city}}&source=ts_mcp"
    method: GET
    headers:
    - key: x-api-key
      value: "{{.config.apiKey}}"
    - key: Content-Type
      value: application/json
  responseTemplate:
    body: |
      # 地理编码信息
      {{- range $index, $geo := .Geocodes }}
      ## 地点 {{add $index 1}}

      - **国家**: {{ $geo.Country }}
      - **省份**: {{ $geo.Province }}
      - **城市**: {{ $geo.City }}
      - **城市代码**: {{ $geo.Citycode }}
      - **区/县**: {{ $geo.District }}
      - **街道**: {{ $geo.Street }}
      - **门牌号**: {{ $geo.Number }}
      - **行政编码**: {{ $geo.Adcode }}
      - **坐标**: {{ $geo.Location }}
      - **级别**: {{ $geo.Level }}
      {{- end }}

服务器

项目 描述
name 服务器名称
config 可以被var引用的键/值对 {{.config.xxx}} 在模板中

工具

tools 是MCP工具映射列表。单工具道具。定义如下:

项目 描述
name 工具名(函数名),提供给LLM。
description 工具描述,LLM可以通过该工具了解工具的功能
args 工具的参数(函数参数)。
requestTemplate 请求映射到目标HTTP API。
responseTemplate 目标HTTP API响应的响应映射。

单一论点支持。定义如下:

项目 类型 描述
name 参数名称,提供给LLM。
description 参数描述,LLM可以通过它理解和决定应该填写什么值。
required Boolean 是否为必需参数。

请求模板道具。定义如下:

项目 描述
方法 HTTP方法
url 目标HTTP API url模板
headers HTTP标头

HTTP标头定义如下:

项目 描述
key 标题键
value 标题值模板

响应模板道具定义如下:

项目 描述
body 响应正文模板

贡献

欢迎各种贡献。