mcpField
M
Mcp Gateway

Mcp Gateway

本地服务
github.com/Timandes开发工具167 周前更新

关于 Mcp Gateway

Mcp Gateway 将配置的 MCP 工具调用转换为现有 HTTP API 请求,适合希望让 MCP 客户端使用现有 API 的团队。它通过 YAML 配置映射,并支持 SSE 或 stdio 传输。

主要功能

  1. 01将 MCP 工具映射到 HTTP API
  2. 02使用 YAML 配置映射
  3. 03配置请求与响应模板
  4. 04支持 SSE 和 stdio 传输

适用场景

  1. 01将现有 HTTP API 暴露为 MCP 工具
  2. 02配置 API 请求和响应转换

MCP 相关

它作为 MCP 服务,将配置的工具调用转换为 HTTP API 请求,并将 API 响应映射回来。支持 SSE 和 stdio 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Gateway

MCP(Model Context Protocol)Gateway 可以将 MCP 工具调用转换为传统的 HTTP API 请求。它提供了一种可配置的方式,让现有 HTTP API 接入 MCP 生态。

开始使用

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

$ cp config.example.yaml config.yaml

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

然后通过 SSE 传输启动 Gateway:

$ 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 启动 Gateway:

$ 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 传输方式启动 Gateway 毫无意义。你可以在 Cursor 或 Cline 中进行如下配置:

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

也可以在 MCP Inspector 中填写以下表单值:

项目值
传输类型STDIO
命令uv
参数run mcp-gateway --transport=stdio

配置文件

YAML 配置分为两部分:server 和 tools。server 定义 Gateway 服务的基本信息。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 }}
Server
项目说明
name服务名称
config键值对,可在模板中通过变量 {{.config.xxx}} 引用
Tools

tools 是 MCP 工具映射列表。单个工具的属性定义如下:

项目说明
name工具名称(函数名称),会提供给大模型。
description工具说明,大模型可通过它了解工具的功能。
args工具参数(函数参数)。
requestTemplate到目标 HTTP API 的请求映射。
responseTemplate目标 HTTP API 响应的映射。

单个参数的属性定义如下:

项目类型说明
name参数名称,会提供给大模型。
description参数说明,大模型可据此理解并决定应填写什么值。
requiredBoolean参数是否必填。

请求模板的属性定义如下:

项目说明
methodHTTP 方法
url目标 HTTP API 的 URL 模板
headersHTTP 请求头

HTTP 请求头定义如下:

项目说明
key请求头键
value请求头值模板

响应模板的属性定义如下:

项目说明
body响应正文模板

贡献

欢迎各种形式的贡献。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。