openapi-mcp-generator
openapi-mcp-generator 是一款专为开发者设计的命令行工具,旨在将现有的 OpenAPI 规范自动转换为符合模型上下文协议(MCP)的服务器。它主要解决了 AI 智能体难以直接、安全地调用传统 REST API 的痛点,通过生成一个中间代理层,让大语言模型能够无缝理解并操作您的后端服务,无需手动编写繁琐的适配代码。
这款工具特别适合后端工程师、AI 应用开发者以及希望快速集成外部数据源的研究人员使用。其核心技术亮点在于不仅能自动生成类型安全的 TypeScript 项目脚手架,还利用 Zod 库根据 OpenAPI 定义实时校验输入数据,确保交互的可靠性。此外,它灵活支持多种通信传输方式,包括标准的 stdio、基于 Web 的 SSE 以及 StreamableHTTP,并内置了 API 密钥、OAuth2 等多种认证机制。无论是希望将内部系统接入 AI 工作流的企业团队,还是想要快速构建原型的独立开发者,openapi-mcp-generator 都能帮助您高效打通从 API 文档到 AI 能力的“最后一公里”。
使用场景
某电商团队的 AI 助手需要实时调用内部库存与订单系统的 REST API 来回答用户查询,但现有接口仅有标准的 OpenAPI 文档,缺乏直接对接大模型的能力。
没有 openapi-mcp-generator 时
- 开发人员需手动编写大量胶水代码,将 OpenAPI 定义逐个转换为 MCP Server 的工具函数,耗时且易出错。
- 每次后端接口字段变更,都需要同步修改 AI 侧的调用逻辑和参数校验规则,维护成本极高。
- 缺乏统一的运行时验证机制,AI 生成的错误参数往往直到请求失败时才被发现,调试困难。
- 为了支持不同的通信方式(如 Stdio 或 Web SSE),需要重复构建多套服务架构,资源浪费严重。
- 新加入的开发者难以快速理解如何安全地让 AI 访问敏感业务接口,权限配置混乱。
使用 openapi-mcp-generator 后
- 只需一条命令即可基于现有的 OpenAPI 文件自动生成完整的 MCP Server 项目,将集成时间从数天缩短至几分钟。
- 工具自动根据接口定义生成 Zod 校验 schema,确保 AI 传入的参数在发送前就符合规范,大幅减少运行错误。
- 当后端 API 更新时,重新运行生成器即可同步最新逻辑,保证了 AI 能力与业务接口的高度一致。
- 灵活指定
--transport参数,一键切换 Stdio、SSE 或 StreamableHTTP 模式,无缝适配本地调试或云端部署需求。 - 内置支持 API Key 和 OAuth2 等多种认证方式,通过环境变量即可安全管理 AI 对敏感数据的访问权限。
openapi-mcp-generator 通过将标准 API 文档瞬间转化为可交互的 AI 桥梁,彻底消除了传统集成中的手工编码负担与维护断层。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
OpenAPI 至 MCP 生成器 (openapi-mcp-generator)
根据 OpenAPI 规范生成 模型上下文协议 (MCP) 服务器。
此 CLI 工具可自动构建与 MCP 兼容的代理服务器,将请求转发至现有的 REST API,从而使 AI 代理及其他 MCP 客户端能够通过您选择的传输方式无缝地与您的 API 进行交互。
✨ 功能
- 🔧 OpenAPI 3.0 支持:将任何 OpenAPI 3.0 及以上版本的规范转换为与 MCP 兼容的服务器。
- 🔁 代理行为:在验证请求结构和安全性的同时,将调用代理到您的原始 REST API。
- 🔐 身份验证支持:通过环境变量支持 API 密钥、Bearer 令牌、Basic 认证和 OAuth2。
- 🧪 Zod 验证:根据 OpenAPI 定义自动生成 Zod 模式,用于运行时输入验证。
- ⚙️ 类型化服务器:输出完全类型化的、易于维护的 TypeScript 代码。
- 🔌 多种传输方式:可通过标准输入输出、Hono 的 SSE 或 StreamableHTTP 进行通信。
- 🧰 项目脚手架:生成包含
tsconfig.json、package.json和入口文件的完整 Node.js 项目。 - 🧪 内置 HTML 测试客户端:可在浏览器中以可视化方式测试 API 交互(适用于基于 Web 的传输)。
🚀 安装
npm install -g openapi-mcp-generator
您也可以使用
yarn global add openapi-mcp-generator或pnpm add -g openapi-mcp-generator
🛠 使用方法
# 生成一个 stdio 传输的 MCP 服务器
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir
# 生成一个带有 SSE 的 Web MCP 服务器
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir --transport=web --port=3000
# 生成一个 StreamableHTTP 传输的 MCP 服务器
openapi-mcp-generator --input path/to/openapi.json --output path/to/output/dir --transport=streamable-http --port=3000
CLI 选项
| 选项 | 别名 | 描述 | 默认 |
|---|---|---|---|
--input |
-i |
OpenAPI 规范的路径或 URL(YAML 或 JSON) | 必填 |
--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 |
📦 程序化 API
您也可以在自己的 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
│ └── [与传输方式相关的文件]
└── public/ # 用于基于 Web 的传输
└── index.html # 测试客户端
核心依赖项:
@modelcontextprotocol/sdk- MCP 协议实现axios- 用于 API 请求的 HTTP 客户端zod- 运行时验证json-schema-to-zod- 将 JSON Schema 转换为 Zod- 传输特定的依赖项(Hono、uuid 等)
📡 传输模式
Stdio(默认)
通过标准输入输出与 MCP 客户端通信。非常适合本地开发或与 LLM 工具集成。
带有 SSE 的 Web 服务器
启动一个功能齐全的 HTTP 服务器,具备以下特性:
- 服务器发送事件 (SSE),用于双向消息传递
- REST 端点,用于客户端到服务器的通信
- 浏览器内测试客户端 UI
- 多连接支持
- 基于轻量级 Hono 框架构建
StreamableHTTP
实现 MCP 的 StreamableHTTP 传输,提供以下功能:
- 基于 HTTP POST 请求的状态感知 JSON-RPC
- 使用 HTTP 头部进行会话管理
- 正确的 HTTP 响应状态码
- 内置错误处理
- 与 MCP StreamableHTTPClientTransport 兼容
- 浏览器内测试客户端 UI
- 基于轻量级 Hono 框架构建
传输方式对比
| 特性 | 标准输入输出 | Web (SSE) | 可流式 HTTP |
|---|---|---|---|
| 协议 | 基于标准输入输出的 JSON-RPC | 基于 SSE 的 JSON-RPC | 基于 HTTP 的 JSON-RPC |
| 连接 | 长连接 | 长连接 | 请求/响应 |
| 双向通信 | 是 | 是 | 是(有状态) |
| 多客户端支持 | 否 | 是 | 是 |
| 浏览器兼容性 | 否 | 是 | 是 |
| 防火墙友好性 | 否 | 是 | 是 |
| 负载均衡 | 否 | 有限 | 是 |
| 状态码 | 否 | 有限 | 完整 HTTP 状态码 |
| 头信息 | 否 | 有限 | 完整 HTTP 头 |
| 测试客户端 | 否 | 是 | 是 |
🔐 认证用环境变量
在您的环境中配置认证凭据:
| 认证类型 | 变量格式 |
|---|---|
| API 密钥 | API_KEY_<SCHEME_NAME> |
| Bearer 令牌 | BEARER_TOKEN_<SCHEME_NAME> |
| Basic 认证 | BASIC_USERNAME_<SCHEME_NAME>, BASIC_PASSWORD_<SCHEME_NAME> |
| OAuth2 | OAUTH_CLIENT_ID_<SCHEME_NAME>, OAUTH_CLIENT_SECRET_<SCHEME_NAME>, OAUTH_SCOPES_<SCHEME_NAME> |
🔎 使用 OpenAPI 扩展筛选端点
您可以使用供应商扩展标志 x-mcp 来控制哪些操作作为 MCP 工具公开。此扩展在根、路径和操作级别均受支持。默认情况下,端点会被包含,除非被显式排除。
- 扩展:
x-mcp: true | false - 默认值:
true(默认包含) - 优先级:操作 > 曲线 > 根(第一个非未定义值生效)
- CLI 选项:
--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
# 以标准输入输出模式运行
npm start
# 以 Web 服务器模式运行
npm run start:web
# 以可流式 HTTP 模式运行
npm run start:http
测试基于 Web 的服务器
对于 Web 和可流式 HTTP 传输方式,会自动生成一个基于浏览器的测试客户端:
- 使用相应的命令启动服务器
- 在浏览器中打开
http://localhost:<port> - 使用测试客户端与您的 MCP 服务器交互
⚠️ 系统要求
- Node.js v20 或更高版本
星标历史
🤝 贡献
欢迎贡献!
- 分支仓库
- 创建功能分支:
git checkout -b feature/amazing-feature - 运行
npm run format.write来格式化代码 - 提交更改:
git commit -m "添加精彩功能" - 推送并打开拉取请求
📌 仓库:github.com/harsha-iiiv/openapi-mcp-generator
📄 许可证
MIT 许可证 — 详情请参阅 LICENSE 文件。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器