OpenAPI到MCP服务器生成器
一个命令行工具,根据OpenAPI规范生成模型上下文协议(MCP)服务器代码。该工具可帮助您快速创建一个MCP服务器,作为LLM(大型语言模型)和API之间的桥梁。
](https://www.npmjs.com/package/openapi-mcpserver-generator) 
英语| 简体中文
起初
此repo最初是从 openapi mcp生成器,并添加一些附加功能:
- 支持嵌套
$ref在openapi规范中 - 除了源代码,生成MCP服务器配置
- 允许客户端设置日志级别,并将日志消息作为通知发送给客户端
- 当出现错误时,向stderr发送消息
- 支持构建docker镜像,引导客户端在docker容器中运行(2025/5/8更新)
特性
- 自动生成刀具:将OpenAPI规范中的每个API端点转换为MCP工具
- 运输选项:仅支持stdio,对于sse,您可以使用leveral mcp代理
- 完成项目设置:生成运行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配置DockerfileDocker 文件.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或更高版本
E2E示例
建议使用 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(默认mcp服务器配置路径为 mcpclihost),那就试试吧
Openapi中的安全方案
Openapi 3.0支持 4种安全类型:
- apiKey:
例如:
"securitySchemes": {
"my_api_key": {
"type": "apiKey",
"name": "api_key",
"in": "header"
}
}预期一个名为大写的环境参数 MY_API_KEY\_{securitySchemes.my_api_key.name}在这种情况下,它应该是: MY_API_KEY_API_KEY 定义于 .env
- http:
"securitySchemes": {
basicAuth: {
type: "http",
scheme: "basic"
}
}它试图找到 BASICAUTH_USERNAME 和 BASICAUTH_PASSWORD 在……里面 .env
"securitySchemes": {
basicAuth: {
type: "http",
scheme: "bearer"
}
}它试图找到 BASICAUTH_BEARERTOKEN 在……里面 .env
- oauth2:
由于oauth2的复杂性,无法自动处理,我们建议手动获取 access token,然后将其设置为 .env 如:
API_HEADERS=Authorization:Bearer your-access-token-here- openIdConnect
尚不支持
许可证
Apache 2.0
