OpenAPI生成工具

解析OpenAPI规范并生成MCP工具定义和服务器脚手架的开发工具。

  • by BUZDOLAPCI
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 BUZDOLAPCI/openapi-generate

使用说明

openapi生成

解析OpenAPI规范并生成MCP工具模式和支架。

概述

此MCP服务器提供以下工具:

  1. 解析OpenAPI 3.0和3.1规范
  2. 根据解析的规范生成MCP工具定义
  3. 用TypeScript或Python生成完整的MCP服务器支架

安装

npm install
npm run build

用法

运行服务器

STDIO传输(默认)

npm start

HTTP传输

MCP_TRANSPORT=http npm start
# or
npm start -- --transport http --port 8080

开发模式

npm run dev

CLI选项

-t, --transport <type>   Transport type: 'stdio' (default) or 'http'
-p, --port <number>      Port for HTTP transport (default: 3000)
-H, --host <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_parse
  • language (字符串,必填): "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.md

python

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

许可证

麻省理工学院