OpenAPI转MCP服务器生成器

一个命令行工具,用于从OpenAPI规范生成模型上下文协议(MCP)服务器代码,作为大型语言模型(LLM)与API之间的桥梁。

  • by vincent-pli
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 vincent-pli/openapi-mcpserver-generator

使用说明

OpenAPI到MCP服务器生成器

一个命令行工具,根据OpenAPI规范生成模型上下文协议(MCP)服务器代码。该工具可帮助您快速创建一个MCP服务器,作为LLM(大型语言模型)和API之间的桥梁。

英语| 简体中文

起初

此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配置
  • Dockerfile Docker 文件
  • .dockerignore -Docker忽略文件

使用生成的服务器

生成MCP服务器后:

  1. 导航到生成的目录:

    cd my-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 创建环境文件:

    cp .env.example .env
    
  4. 编辑 .env 设置您的API基础URL和任何所需的标题:

    API_BASE_URL=https://api.example.com
    API_HEADERS=Authorization:Bearer your-token-here
    
  5. 启动服务器:

    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