mcpField
O
open-api-mcp

open-api-mcp

本地服务
github.com/nexpando-com开发工具066 周前更新

关于 open-api-mcp

open-api-mcp 是一个根据 OpenAPI 规范生成 MCP 服务的命令行工具,适合需要将现有 API 提供给 MCP 客户端的开发者。它支持 JSON 和 YAML 规范,并生成基于 Zod 的类型安全 API 客户端。

主要功能

  1. 01从 OpenAPI 规范生成 MCP 服务
  2. 02支持 JSON 与 YAML 格式
  3. 03生成基于 Zod 的 API 客户端
  4. 04通过环境变量或 Docker Compose 配置
  5. 05支持自定义认证方式

适用场景

  1. 01将现有 OpenAPI 接口转为 MCP 工具
  2. 02为 API 请求生成类型安全客户端

MCP 相关

该工具依据 OpenAPI 规范生成 MCP 服务,将规范中的 API 操作作为工具提供给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

open-api-mcp

Open API MCP 是一款命令行工具,可根据 OpenAPI 规范生成 MCP(Model Context Protocol)服务。

它利用 OpenAPI schema,并使用 Zod 生成强类型客户端,从而简化 API 客户端和服务端的创建流程。

功能

  • 根据 OpenAPI 规范生成 MCP 服务。
  • 自动创建基于 Zod 的 API 客户端,实现类型安全的交互。
  • 支持 JSON 和 YAML 格式的 OpenAPI 规范。
  • 可通过环境变量或 Docker Compose 轻松配置。

工作原理

  1. 克隆仓库:

    git clone https://github.com/nexpando-com/open-api-mcp.git
    cd open-api-mcp
    
  2. 安装依赖:

    bun install
    
  3. 准备 OpenAPI 规范:

    • 下载 OpenAPI schema:
      wget -q -O open-api.json https://fakestoreapi.com/fakestoreapi.json
      
    • 或使用 curl:
      curl -o open-api.json https://fakestoreapi.com/fakestoreapi.json
      
  4. 定义环境变量:

    cp .env.template .env
    
  5. 启动 MCP 服务:

    bun dev
    # or
    ./cli.sh open-api.json
    
  6. 控制台输出:

     Tool loginUser added to OpenApi MCP server.
     Tool getAllCarts added to OpenApi MCP server.
     Tool addCart added to OpenApi MCP server.
     Tool getCartById added to OpenApi MCP server.
     Tool updateCart added to OpenApi MCP server.
     Tool deleteCart added to OpenApi MCP server.
     Tool getAllProducts added to OpenApi MCP server.
     Tool addProduct added to OpenApi MCP server.
     Tool getProductById added to OpenApi MCP server.
     Tool updateProduct added to OpenApi MCP server.
     Tool deleteProduct added to OpenApi MCP server.
     Tool getAllUsers added to OpenApi MCP server.
     Tool addUser added to OpenApi MCP server.
     Tool getUserById added to OpenApi MCP server.
     Tool updateUser added to OpenApi MCP server.
     Tool deleteUser added to OpenApi MCP server.
     [FastMCP info] server is running on HTTP Stream at http://localhost:3000/stream
     OpenApi MCP server 0.0.1 running as httpStream
    

Docker 设置

  1. 创建 specs 目录:

    mkdir specs
    
  2. 将 OpenAPI 规范(open-api.json 或 open-api.yml)添加到 specs 目录中。

  3. 创建 docker-compose.yml 文件。配置示例:

    services:
      open-api-mcp:
        image: nexpando/open-api-mcp
        container_name: open-api-mcp
        # ports:
        #  - "3000:3000"
        volumes:
          - ./specs:/app/specs
        environment:
          - OPEN_API_FILE=/app/specs/open-api.json
          - API_URL=  # Example: https://fakestoreapi.com
          # - API_KEY
          # - MCP_NAME=My MCP Server
          # - MCP_VERSION=1.0.0
          # - MCP_TRANSPORT_TYPE=httpStream|sse|stdio
    
  4. 将 API_URL 和 API_KEY 替换为你的数据。

  5. 启动 MCP 服务:

    docker-compose up
    

Librechat 中的 MCP 服务示例

version: 1.1.4
cache: true
...
mcpServers:
  my-mcp:
    type: streamable-http
    url: http://my-mcp:3000/stream
  mailgun:
    type: streamable-http
    url: http://mailgun-mcp:3000/stream

项目结构

.
├── cli.sh                  # CLI script to start the MCP server
├── generate-client.ts      # Script to generate Zod-based API clients
├── get-input-output.ts     # Utility functions for input/output paths
├── specs/                  # Directory for OpenAPI specifications
├── mcp-servers/            # Example MCP server configurations
├── Dockerfile              # Dockerfile for containerized deployment
├── docker-compose.yml      # Example Docker Compose configuration
├── README.md               # Project documentation
└── ...

自定义身份验证

本项目使用 Axios 发送 HTTP 请求,默认身份验证方法在 get-axios.ts 文件中配置。默认情况下,它会使用从 API_KEY 环境变量中获取的 Bearer token。

如果需要自定义身份验证方法(例如,使用不同的标头、令牌类型或身份验证机制),可以覆盖 get-axios.ts 文件。例如:

// filepath: [get-axios.ts](http://_vscodecontentref_/1)
import axios from 'axios'

export const getAxiosInstance = () => {
  const options = {
    headers: {
      'X-Custom-Auth': 'YourCustomAuthValue',
      'Content-Type': 'application/json',
    },
  }
  const instance = axios.create(options)
  return instance
}

使用 Docker Compose 自定义身份验证

本项目使用 Axios 发送 HTTP 请求,默认身份验证方法在 get-axios.ts 文件中配置。默认情况下,它会使用从 API_KEY 环境变量中获取的 Bearer token。

如果使用 Docker Compose,可以通过将自定义版本的文件挂载为卷来覆盖 get-axios.ts 文件。这样无需修改原始源代码,即可自定义身份验证方法。

自定义步骤
  1. 创建一个包含所需身份验证逻辑的自定义 get-axios.ts 文件。例如:

    // filepath: ./custom/get-axios.ts
    import axios from 'axios'
    
    export const getAxiosInstance = () => {
      const options = {
        headers: {
          'X-Custom-Auth': 'YourCustomAuthValue',
          'Content-Type': 'application/json',
        },
      }
      const instance = axios.create(options)
      return instance
    }
    
  2. 更新 docker-compose.yml 文件,用自定义版本覆盖默认的 get-axios.ts 文件:

    services:
      open-api-mcp:
        image: nexpando/open-api-mcp
        container_name: open-api-mcp
        volumes:
          - ./specs:/app/specs
          - ./custom/get-axios.ts:/app/get-axios.ts
        environment:
          - OPEN_API_FILE=/app/specs/open-api.json
          - API_URL= ...
    
  3. 使用 Docker Compose 启动 MCP 服务:

    docker-compose up
    

覆盖 get-axios.ts 文件后,你可以在保留原始源代码不变的同时,让项目适配各种身份验证方案,例如 API 密钥或自定义标头。

参考资料

许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。