openapi生成
解析OpenAPI规范并生成MCP工具模式和支架。
概述
此MCP服务器提供以下工具:
- 解析OpenAPI 3.0和3.1规范
- 根据解析的规范生成MCP工具定义
- 用TypeScript或Python生成完整的MCP服务器支架
安装
npm install
npm run build用法
运行服务器
STDIO传输(默认)
npm startHTTP传输
MCP_TRANSPORT=http npm start
# or
npm start -- --transport http --port 8080开发模式
npm run devCLI选项
-t, --transport Transport type: 'stdio' (default) or 'http'
-p, --port Port for HTTP transport (default: 3000)
-H, --host Host for HTTP transport (default: 127.0.0.1)
-h, --help Show help message
-v, --version Show version information工具
openapi_parse
从URL或JSON字符串解析OpenAPI规范。
输入:
spec_url_or_json(string,必填):OpenAPI规范的URL或原始JSON字符串
输出:
- 结构化表示包括:
- openapi_versionOpenAPI版本(3.0.x或3.1.x) - info:API标题、版本、说明 - servers:服务器URL和变量 - paths:带操作的解析路径 - schemas:组件架构 - security_schemes:安全方案定义
例子:
{
"spec_url_or_json": "https://petstore3.swagger.io/api/v3/openapi.json"
}generate_tool_schemas
根据解析的OpenAPI规范生成MCP工具定义。
输入:
parsed_spec(object,必填):输出来自openapi_parse
输出:
tools:MCP工具定义数组summary:统计数据包括工具总数和标签计数
例子:
{
"parsed_spec": { /* output from openapi_parse */ }
}generate_server_scaffold
按照Dedalus惯例生成一个完整的MCP服务器脚手架。
输入:
parsed_spec(object,必填):输出来自openapi_parselanguage(字符串,必填):"typescript"或"python"options(对象,可选):
- server_name:生成的服务器的名称 - server_version:版本字符串 - author:作者姓名 - include_tests:是否包含测试文件(默认值:true) - base_url:API调用的基本URL
输出:
files:包含路径和内容的生成文件数组language:目标语言tool_count:生成的工具数量
例子:
{
"parsed_spec": { /* output from openapi_parse */ },
"language": "typescript",
"options": {
"server_name": "my-api-server",
"include_tests": true
}
}响应格式
所有工具都遵循标准的Dedalus响应信封:
成功响应
{
"ok": true,
"data": { /* tool-specific output */ },
"meta": {
"source": "optional source info",
"retrieved_at": "2024-01-15T12:00:00.000Z",
"pagination": { "next_cursor": null },
"warnings": []
}
}错误响应
{
"ok": false,
"error": {
"code": "INVALID_INPUT",
"message": "Human-readable error message",
"details": {}
},
"meta": {
"retrieved_at": "2024-01-15T12:00:00.000Z"
}
}错误代码
INVALID_INPUT:提供的参数无效UPSTREAM_ERROR:无法获取远程资源RATE_LIMITED:超出费率限制TIMEOUT:操作超时PARSE_ERROR:无法解析输入INTERNAL_ERROR:意外内部错误
配置
复制 .env.example 到 .env 并配置:
cp .env.example .env环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_TRANSPORT | 传输类型(stdio/http) | stdio |
MCP_PORT | HTTP端口 | 3000 |
MCP_HOST | HTTP主机 | 127.0.0.1 |
MCP_SERVER_NAME | 服务器名称 | openapi生成 |
MCP_SERVER_VERSION | 服务器版本 | 1.0.0 |
发展
测试
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch类型检查
npm run typecheck建筑
npm run build生成的脚手架结构
TypeScript
generated-server/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server setup
│ ├── config.ts # Configuration
│ ├── types.ts # Type definitions
│ ├── cli.ts # CLI argument parsing
│ ├── tools/
│ │ ├── index.ts # Tool exports
│ │ └── [tool].ts # Individual tool files
│ └── transport/
│ ├── index.ts
│ ├── stdio.ts
│ └── http.ts
├── tests/
│ ├── unit/
│ │ └── tools.test.ts
│ └── e2e/
│ └── server.test.ts
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── .env.example
├── .gitignore
└── README.mdpython
generated-server/
├── src/
│ ├── main.py # Entry point
│ ├── server.py # MCP server setup
│ ├── config.py # Configuration
│ ├── types.py # Type definitions
│ └── tools/
│ ├── __init__.py
│ └── [tool].py # Individual tool files
├── tests/
│ ├── __init__.py
│ └── test_tools.py
├── pyproject.toml
├── .env.example
├── .gitignore
└── README.md许可证
麻省理工学院
