内容
# mcpify
将任何 OpenAPI 3.x 规范转换为可用的 MCP 服务器只需一条命令。
指向一个规范(文件或 URL),每个 API 操作都成为一个 MCP 工具。无需生成代码,也无需连接:mcpify 读取规范,暴露每个操作对应的工具,并将每个工具调用代理到真实的 API。
```
mcpify ls openapi.yaml # 预览规范中暴露的工具
mcpify openapi.yaml # 通过 stdio 将其作为 MCP 服务器提供服务
```
## 安装
Homebrew:
```
brew install aloki-alok/tap/mcpify
```
或安装脚本:
```
curl -fsSL https://raw.githubusercontent.com/aloki-alok/mcpify/main/install.sh | sh
```
或使用 Go(1.26+):
```
go install github.com/aloki-alok/mcpify@latest
```
或从[发布页面](https://github.com/aloki-alok/mcpify/releases)获取预编译的二进制文件,或从源代码构建:
```
git clone https://github.com/aloki-alok/mcpify
cd mcpify
go build -o mcpify .
```
## 使用
预览规范转换后的内容,而不启动任何服务:
```
mcpify ls https://petstore3.swagger.io/api/v3/openapi.json
```
通过 stdio 提供规范服务,这是 MCP 客户端在启动服务器时使用的传输方式:
```
mcpify ./petstore.yaml
```
改为通过 HTTP 提供服务:
```
mcpify --http :8080 ./petstore.yaml
```
转发身份验证并覆盖上游基准 URL:
```
mcpify --base https://api.example.com -H "Authorization: Bearer $TOKEN" spec.json
```
仅暴露读取操作(GET 和 HEAD):
```
mcpify --read-only spec.yaml
```
更新到最新版本:
```
mcpify upgrade
```
### 连接到 MCP 客户端
任何通过 stdio 启动服务器的客户端都可以使用。例如:
```json
{
"mcpServers": {
"petstore": {
"command": "mcpify",
"args": ["--base", "https://api.example.com", "/path/to/openapi.json"]
}
}
}
```
## 参数映射
每个操作的路径、查询、头部和 Cookie 参数都成为工具参数。JSON 请求正文的模式为对象时会被展平,因此其字段也是顶级参数;如果参数名称相同,则参数优先。其他正文形状(数组、标量)被视为单个 `body` 参数。mcpify 在构建上游请求时,会将每个参数路由到正确的位置。
## 选项
| 参数 | 含义 |
| --- | --- |
| `--base <url>` | 上游基准 URL,覆盖规范中的 `servers` |
| `-H, --header "Name: value"` | 每个上游请求发送的头部(可重复) |
| `--http <addr>` | 在 `addr` 处通过 HTTP 提供服务,而不是 stdio |
| `--read-only` | 仅暴露 GET 和 HEAD 操作 |
| `--timeout <dur>` | 上游请求超时(默认为 `30s`) |
## 范围
OpenAPI 3.0 和 3.1,支持 JSON 或 YAML 格式。一个操作映射到一个工具。请求正文为 JSON。模板化的服务器 URL 从其变量默认值解析,或使用 `--base` 覆盖基准 URL。身份验证为直通:您提供的头部会转发到上游。Swagger 2.0 不受支持。
## 许可证
MIT