关于 Mcp Gateway
Mcp Gateway 将配置的 MCP 工具调用转换为现有 HTTP API 请求,适合希望让 MCP 客户端使用现有 API 的团队。它通过 YAML 配置映射,并支持 SSE 或 stdio 传输。
主要功能
- 01将 MCP 工具映射到 HTTP API
- 02使用 YAML 配置映射
- 03配置请求与响应模板
- 04支持 SSE 和 stdio 传输
适用场景
- 01将现有 HTTP API 暴露为 MCP 工具
- 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 | 参数说明,大模型可据此理解并决定应填写什么值。 | |
| required | Boolean | 参数是否必填。 |
请求模板的属性定义如下:
| 项目 | 说明 |
|---|---|
| method | HTTP 方法 |
| url | 目标 HTTP API 的 URL 模板 |
| headers | HTTP 请求头 |
HTTP 请求头定义如下:
| 项目 | 说明 |
|---|---|
| key | 请求头键 |
| value | 请求头值模板 |
响应模板的属性定义如下:
| 项目 | 说明 |
|---|---|
| body | 响应正文模板 |
贡献
欢迎各种形式的贡献。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。