从OpenAPI规范生成模型上下文协议(MCP)服务器。
此CLI工具自动化生成与MCP兼容的服务器,这些服务器代理请求到现有的REST API——使AI代理和其他MCP客户端能够无缝地使用您选择的传输方法与您的API进行交互。
tsconfig.json、package.json和入口点。npm install -g openapi-mcp-generator
您也可以使用
yarn global add openapi-mcp-generator或pnpm add -g openapi-mcp-generator
# 生成MCP服务器(stdio)
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir
# 生成具有SSE的MCP Web服务器
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir --transport=web --port=3000
# 生成MCP StreamableHTTP服务器
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir --transport=streamable-http --port=3000
| 选项 | 别名 | 描述 | 默认值 |
|---|---|---|---|
--input | -i | OpenAPI规范(YAML或JSON)的路径或URL | 必需 |
--output | -o | 输出生成的MCP项目的目录 | 必需 |
--server-name | -n | MCP服务器名称(package.json:name) | OpenAPI标题或mcp-api-server |
--server-version | -v | MCP服务器版本(package.json:version) | OpenAPI版本或1.0.0 |
--base-url | -b | API请求的基础URL。如果OpenAPI中的servers缺失或不明确,则需要指定。 | 如果可能则自动检测 |
--transport | -t | 传输模式:"stdio"(默认)、"web"或"streamable-http" | "stdio" |
--port | -p | 基于Web的传输端口 | 3000 |
--default-include | 对于x-mcp过滤,默认行为。接受true或false(大小写不敏感)。true = 默认包含,false = 默认排除。 | true | |
--force | 在没有确认的情况下覆盖输出目录中的现有文件 | false |
您还可以在Node.js应用程序中程序化地使用此包:
import { getToolsFromOpenApi } from 'openapi-mcp-generator';
// 从OpenAPI规范提取MCP工具定义
const tools = await getToolsFromOpenApi('./petstore.json');
// 带有选项
const filteredTools = await getToolsFromOpenApi('https://example.com/api-spec.json', {
baseUrl: 'https://api.example.com',
dereference: true,
excludeOperationIds: ['deletePet'],
filterFn: (tool) => tool.method.toLowerCase() === 'get',
});
有关程序化API的完整文档,请参阅PROGRAMMATIC_API.md。
生成的项目包括:
<output_directory>/
├── .gitignore
├── package.json
├── tsconfig.json
├── .env.example
├── src/
│ ├── index.ts
│ └── [transport-specific-files]
└── public/ # 用于基于Web的传输
└── index.html # 测试客户端
核心依赖项:
@modelcontextprotocol/sdk - MCP协议实现axios - API请求的HTTP客户端zod - 运行时验证json-schema-to-zod - 将JSON Schema转换为Zod通过标准输入/输出与MCP客户端通信。适合本地开发或与LLM工具集成。
启动一个完全功能的HTTP服务器,具有:
实现MCP StreamableHTTP传输,提供:
| 功能 | stdio | web (SSE) | streamable-http |
|---|---|---|---|
| 协议 | 通过stdio的JSON-RPC | 通过SSE的JSON-RPC | 通过HTTP的JSON-RPC |
| 连接 | 持久 | 持久 | 请求/响应 |
| 双向通信 | 是 | 是 | 是(状态化) |
| 多个客户端 | 否 | 是 | 是 |
| 浏览器兼容性 | 否 | 是 | 是 |
| 防火墙友好 | 否 | 是 | 是 |
| 负载均衡 | 否 | 有限 | 是 |
| 状态码 | 否 | 有限 | 完整HTTP代码 |
| 标头 | 否 | 有限 | 完整HTTP标头 |
| 测试客户端 | 否 | 是 | 是 |
在环境中配置认证凭据:
| 认证类型 | 变量格式 |
|---|---|
| API密钥 | API_KEY_<SCHEME_NAME> |
| Bearer | BEARER_TOKEN_<SCHEME_NAME> |
| 基本认证 | BASIC_USERNAME_<SCHEME_NAME>, BASIC_PASSWORD_<SCHEME_NAME> |
| OAuth2 | OAUTH_CLIENT_ID_<SCHEME_NAME>, OAUTH_CLIENT_SECRET_<SCHEME_NAME>, OAUTH_SCOPES_<SCHEME_NAME> |
您可以使用供应商扩展标志x-mcp控制哪些操作作为MCP工具公开。此扩展在根、路径和操作级别受支持。默认情况下,端点被包含,除非显式排除。
x-mcp: true | falsetrue(默认包含)--default-include false以更改默认设置为默认排除示例:
# 可选的根级默认
x-mcp: true
paths:
/pets:
x-mcp: false # 排除/pets下的所有操作
get:
x-mcp: true # 无论如何包含此操作
/users/{id}:
get:
# 没有x-mcp -> 默认包含
这使用标准的OpenAPI扩展(x-...字段)。详情请参阅OpenAPI扩展指南。
注意:x-mcp必须是布尔值或字符串"true"/"false"(大小写不敏感)。其他值将被忽略,以优先级更高或默认行为为准。
cd path/to/output/dir
npm install
# 在stdio模式下运行
npm start
# 在Web服务器模式下运行
npm run start:web
# 在StreamableHTTP模式下运行
npm run start:http
对于基于Web和StreamableHTTP的传输,会自动生成一个基于浏览器的测试客户端:
http://localhost:<port>欢迎贡献!
git checkout -b feature/amazing-featurenpm run format.write以格式化您的代码git commit -m "添加惊人的功能"📌 仓库:github.com/harsha-iiiv/openapi-mcp-generator
MIT许可证——详见LICENSE。