关于 OpenAPI to MCP server Generator
OpenAPI to MCP server Generator 是一个命令行工具,可根据 OpenAPI 规范生成 MCP 服务项目。它为 API 端点生成工具,并创建运行服务所需的文件。
主要功能
- 01为每个 API 端点生成工具
- 02支持嵌套的 $ref 引用
- 03生成服务配置和项目文件
- 04通过环境变量配置生成的服务
- 05向客户端发送日志通知
适用场景
- 01从本地 OpenAPI 规范创建 MCP 服务
- 02根据远程 OpenAPI URL 生成服务项目
MCP 相关
生成 MCP 服务代码,将 OpenAPI 端点作为工具开放。生成的服务支持 stdio 传输,并可配置为供 MCP 客户端使用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
OpenAPI 到 MCP 服务生成器
一个命令行工具,可根据 OpenAPI 规范生成 Model Context Protocol(MCP)服务代码。此工具可帮助你快速创建 MCP 服务,在大模型(Large Language Models,LLM)与 API 之间充当桥梁。
English | 简体中文
起源
此仓库最初从 openapi-mcp-generator 分叉而来,并添加了一些额外功能:
- 支持 OpenAPI 规范中的嵌套
$ref - 除源代码外,还可生成 MCP 服务配置
- 允许客户端设置日志级别,并以通知的形式向客户端发送日志消息
- 发生错误时,向 stderr 发送消息
- 支持构建 Docker 镜像,并引导客户端在 Docker 容器中运行(2025/5/8 更新)
功能
- 自动生成工具:将 OpenAPI 规范中的每个 API 端点转换为 MCP 工具
- 传输选项:仅支持 stdio;对于 sse,可使用 mcp-proxy
- 完整的项目配置:生成运行 MCP 服务所需的所有文件
- 轻松配置:为生成的服务提供简单的基于环境变量的配置
安装
# Install globally from npm
npm install -g openapi-mcpserver-generator
# Or with yarn
yarn global add openapi-mcpserver-generator
# Or with pnpm
pnpm add -g openapi-mcpserver-generator
使用方法
根据 OpenAPI 规范生成 MCP 服务:
openapi-mcpserver-generator --openapi path/to/openapi.json --output /Path/to/output
命令行选项
| 选项 | 别名 | 描述 | 默认值 |
|---|---|---|---|
--openapi | -o | OpenAPI 规范的路径或 URL | (必填) |
--output | -d | 生成文件的输出目录 | ./mcp-server |
--name | -n | MCP 服务的名称 | openapi-mcp-server |
--version | -v | MCP 服务的版本 | 1.0.0 |
--transport | -t | 传输机制(stdio、websocket、http) | stdio |
--help | -h | 显示帮助信息 |
示例
根据本地 OpenAPI 文件生成:
openapi-mcpserver-generator --openapi ./specs/petstore.json --output ./petstore-mcp
根据远程 OpenAPI URL 生成:
openapi-mcpserver-generator --openapi https://petstore3.swagger.io/api/v3/openapi.json --output ./petstore-mcp
生成的文件
此工具会在输出目录中生成以下文件:
server.js- MCP 服务的主要实现package.json- 依赖项和脚本README.md- 生成的服务的文档.env.example- 环境变量模板types.d.ts- API 的 TypeScript 类型定义tsconfig.json- TypeScript 配置Dockerfile- Dockerfile.dockerignore- Docker 忽略文件
使用生成的服务
生成 MCP 服务后:
-
进入生成的目录:
cd my-mcp-server -
安装依赖项:
npm install -
创建环境文件:
cp .env.example .env -
编辑
.env,设置 API 基础 URL 和任何必需的标头:API_BASE_URL=https://api.example.com API_HEADERS=Authorization:Bearer your-token-here -
启动服务:
npm start
要求
- Node.js 16.x 或更高版本
- npm 7.x 或更高版本
端到端示例
建议使用 mcpclihost 作为 MCP 宿主进行尝试。
此工具(mcpclihost)支持 Azure Openai 和 deepseek
你可以像这样添加生成的 MCP 服务配置:
{
"mcpServers": {
"petstore-mcp": {
"command": "/usr/local/bin/node",
"args": [
"/Users/lipeng/workspaces/github.com/vincent-pli/openapi-mcpserver-generator/petstore-mcp/server.js",
"run"
]
}
}
}
将其添加到 ~/.mcp.json(mcpclihost 的默认 MCP 服务配置路径)中,然后尝试使用
Openapi 中的安全方案
Openapi 3.0 支持4 种安全类型:
- apiKey: 例如:
"securitySchemes": {
"my_api_key": {
"type": "apiKey",
"name": "api_key",
"in": "header"
}
}
需要在 .env 中定义一个名为大写形式 MY_API_KEY_{securitySchemes.my_api_key.name} 的环境参数,在此例中应为:MY_API_KEY_API_KEY
- http:
"securitySchemes": {
basicAuth: {
type: "http",
scheme: "basic"
}
}
它会尝试在 .env 中查找 BASICAUTH_USERNAME 和 BASICAUTH_PASSWORD
"securitySchemes": {
basicAuth: {
type: "http",
scheme: "bearer"
}
}
它会尝试在 .env 中查找 BASICAUTH_BEARERTOKEN
- oauth2:
由于 oauth2 较为复杂,无法自动处理,我们建议手动获取
access token,然后按如下方式将其设置到.env中:
API_HEADERS=Authorization:Bearer your-access-token-here
- openIdConnect 暂不支持
许可证
Apache 2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。