关于 open-api-mcp
open-api-mcp 是一个根据 OpenAPI 规范生成 MCP 服务的命令行工具,适合需要将现有 API 提供给 MCP 客户端的开发者。它支持 JSON 和 YAML 规范,并生成基于 Zod 的类型安全 API 客户端。
主要功能
- 01从 OpenAPI 规范生成 MCP 服务
- 02支持 JSON 与 YAML 格式
- 03生成基于 Zod 的 API 客户端
- 04通过环境变量或 Docker Compose 配置
- 05支持自定义认证方式
适用场景
- 01将现有 OpenAPI 接口转为 MCP 工具
- 02为 API 请求生成类型安全客户端
MCP 相关
该工具依据 OpenAPI 规范生成 MCP 服务,将规范中的 API 操作作为工具提供给 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
open-api-mcp
Open API MCP 是一款命令行工具,可根据 OpenAPI 规范生成 MCP(Model Context Protocol)服务。
它利用 OpenAPI schema,并使用 Zod 生成强类型客户端,从而简化 API 客户端和服务端的创建流程。
功能
- 根据 OpenAPI 规范生成 MCP 服务。
- 自动创建基于 Zod 的 API 客户端,实现类型安全的交互。
- 支持 JSON 和 YAML 格式的 OpenAPI 规范。
- 可通过环境变量或 Docker Compose 轻松配置。
工作原理
-
克隆仓库:
git clone https://github.com/nexpando-com/open-api-mcp.git cd open-api-mcp -
安装依赖:
bun install -
准备 OpenAPI 规范:
- 下载 OpenAPI schema:
wget -q -O open-api.json https://fakestoreapi.com/fakestoreapi.json - 或使用
curl:curl -o open-api.json https://fakestoreapi.com/fakestoreapi.json
- 下载 OpenAPI schema:
-
定义环境变量:
cp .env.template .env -
启动 MCP 服务:
bun dev # or ./cli.sh open-api.json -
控制台输出:
Tool loginUser added to OpenApi MCP server. Tool getAllCarts added to OpenApi MCP server. Tool addCart added to OpenApi MCP server. Tool getCartById added to OpenApi MCP server. Tool updateCart added to OpenApi MCP server. Tool deleteCart added to OpenApi MCP server. Tool getAllProducts added to OpenApi MCP server. Tool addProduct added to OpenApi MCP server. Tool getProductById added to OpenApi MCP server. Tool updateProduct added to OpenApi MCP server. Tool deleteProduct added to OpenApi MCP server. Tool getAllUsers added to OpenApi MCP server. Tool addUser added to OpenApi MCP server. Tool getUserById added to OpenApi MCP server. Tool updateUser added to OpenApi MCP server. Tool deleteUser added to OpenApi MCP server. [FastMCP info] server is running on HTTP Stream at http://localhost:3000/stream OpenApi MCP server 0.0.1 running as httpStream
Docker 设置
-
创建 specs 目录:
mkdir specs -
将 OpenAPI 规范(
open-api.json或open-api.yml)添加到 specs 目录中。 -
创建 docker-compose.yml 文件。配置示例:
services: open-api-mcp: image: nexpando/open-api-mcp container_name: open-api-mcp # ports: # - "3000:3000" volumes: - ./specs:/app/specs environment: - OPEN_API_FILE=/app/specs/open-api.json - API_URL= # Example: https://fakestoreapi.com # - API_KEY # - MCP_NAME=My MCP Server # - MCP_VERSION=1.0.0 # - MCP_TRANSPORT_TYPE=httpStream|sse|stdio -
将
API_URL和API_KEY替换为你的数据。 -
启动 MCP 服务:
docker-compose up
Librechat 中的 MCP 服务示例
- 查看 https://github.com/danny-avila/LibreChat
librechat.yaml
version: 1.1.4
cache: true
...
mcpServers:
my-mcp:
type: streamable-http
url: http://my-mcp:3000/stream
mailgun:
type: streamable-http
url: http://mailgun-mcp:3000/stream
项目结构
.
├── cli.sh # CLI script to start the MCP server
├── generate-client.ts # Script to generate Zod-based API clients
├── get-input-output.ts # Utility functions for input/output paths
├── specs/ # Directory for OpenAPI specifications
├── mcp-servers/ # Example MCP server configurations
├── Dockerfile # Dockerfile for containerized deployment
├── docker-compose.yml # Example Docker Compose configuration
├── README.md # Project documentation
└── ...
自定义身份验证
本项目使用 Axios 发送 HTTP 请求,默认身份验证方法在 get-axios.ts 文件中配置。默认情况下,它会使用从 API_KEY 环境变量中获取的 Bearer token。
如果需要自定义身份验证方法(例如,使用不同的标头、令牌类型或身份验证机制),可以覆盖 get-axios.ts 文件。例如:
// filepath: [get-axios.ts](http://_vscodecontentref_/1)
import axios from 'axios'
export const getAxiosInstance = () => {
const options = {
headers: {
'X-Custom-Auth': 'YourCustomAuthValue',
'Content-Type': 'application/json',
},
}
const instance = axios.create(options)
return instance
}
使用 Docker Compose 自定义身份验证
本项目使用 Axios 发送 HTTP 请求,默认身份验证方法在 get-axios.ts 文件中配置。默认情况下,它会使用从 API_KEY 环境变量中获取的 Bearer token。
如果使用 Docker Compose,可以通过将自定义版本的文件挂载为卷来覆盖 get-axios.ts 文件。这样无需修改原始源代码,即可自定义身份验证方法。
自定义步骤
-
创建一个包含所需身份验证逻辑的自定义
get-axios.ts文件。例如:// filepath: ./custom/get-axios.ts import axios from 'axios' export const getAxiosInstance = () => { const options = { headers: { 'X-Custom-Auth': 'YourCustomAuthValue', 'Content-Type': 'application/json', }, } const instance = axios.create(options) return instance } -
更新
docker-compose.yml文件,用自定义版本覆盖默认的get-axios.ts文件:services: open-api-mcp: image: nexpando/open-api-mcp container_name: open-api-mcp volumes: - ./specs:/app/specs - ./custom/get-axios.ts:/app/get-axios.ts environment: - OPEN_API_FILE=/app/specs/open-api.json - API_URL= ... -
使用 Docker Compose 启动 MCP 服务:
docker-compose up
覆盖 get-axios.ts 文件后,你可以在保留原始源代码不变的同时,让项目适配各种身份验证方案,例如 API 密钥或自定义标头。
参考资料
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。