
!openapi-mcp logo
直接从Swagger/OpenAPI规范文件生成MCP工具定义。
OpenAPI-MCP是一个Docker化的MCP服务器,它读取swagger.json或openapi.yaml文件并生成相应的模型上下文协议(MCP)工具集。这允许像Cursor这样的MCP兼容客户端与标准OpenAPI规范描述的API进行交互。现在,只需提供API的OpenAPI/Swagger规范,即可让AI代理访问任何API,无需额外编码。
亲自运行演示:运行Weatherbit示例(分步指南)
!https://github.com/user-attachments/assets/4d457137-5da4-422a-b323-afd4b175bd56
header、query、path、cookie)。
--api-key)、环境变量(--api-key-env)或本地规范旁的.env文件加载API密钥。--include-tag、--exclude-tag、--include-op、--exclude-op)。REQUEST_HEADERS环境变量传递自定义头(如额外认证、追踪)。运行此工具的推荐方式是通过Docker。
使用预构建Docker Hub镜像(推荐)
您可以使用Docker Hub上提供的预构建镜像。
bashdocker pull ckanthony/openapi-mcp:latest
docker run示例操作,将openapi-mcp:latest替换为ckanthony/openapi-mcp:latest。本地构建(可选)
本地构建Docker镜像:
bash# 导航到仓库根目录 cd openapi-mcp # 构建Docker镜像(可自定义标签,如openapi-mcp:latest) docker build -t openapi-mcp:latest .
运行容器: 运行容器时需要提供OpenAPI规范和必要的API密钥配置。
示例1:使用本地规范文件和.env文件:
./my-api),包含openapi.json或swagger.yaml。.env文件(如./my-api/.env),内容为API_KEY=your_actual_key(如果--api-key-env标志不同,替换API_KEY)。bashdocker run -p 8080:8080 --rm \ -v $(pwd)/my-api:/app/spec \ --env-file $(pwd)/my-api/.env \ openapi-mcp:latest \ --spec /app/spec/openapi.json \ --api-key-env API_KEY \ --api-key-name X-API-Key \ --api-key-loc header
(根据需要调整--spec、--api-key-env、--api-key-name、--api-key-loc和-p。)
示例2:使用远程规范URL和直接环境变量:
bashdocker run -p 8080:8080 --rm \ -e SOME_API_KEY="your_actual_key" \ openapi-mcp:latest \ --spec https://petstore.swagger.io/v2/swagger.json \ --api-key-env SOME_API_KEY \ --api-key-name api_key \ --api-key-loc header
关键Docker Run选项:
-p <host_port>:8080:将主机端口映射到容器的默认端口8080。--rm:容器退出时自动删除。-v <host_path>:<container_path>:将包含规范的本地目录挂载到容器中。使用绝对路径或$(pwd)/...。常用容器路径:/app/spec。--env-file <path_to_host_env_file>:从本地文件加载环境变量(如API密钥等)。路径为主机上的路径。-e <VAR_NAME>="<value>":直接传递单个环境变量。openapi-mcp:latest:本地构建的镜像名称。--spec ...:必填。容器内规范文件的路径(如/app/spec/openapi.json)或公共URL。--port 8080:(可选)更改服务器监听的内部端口(必须与-p中的容器端口匹配)。--api-key-env、--api-key-name、--api-key-loc:如果目标API需要API密钥,则为必填项。docker run --rm openapi-mcp:latest --help查看所有命令行选项。)本仓库包含使用Weatherbit API的示例。以下是使用公共Docker镜像运行它的方法:
查找OpenAPI规范(可选知识):
许多公共API提供OpenAPI/Swagger规范。发现它们的好资源是APIs.guru。本示例中使用的Weatherbit规范(weatherbitio-swagger.json)来源于此。
获取Weatherbit API密钥:
克隆本仓库: 需要仓库中的示例文件。
bashgit clone https://github.com/ckanthony/openapi-mcp.git cd openapi-mcp
准备环境文件:
cd example/weathercp .env.example .env.env文件,将YOUR_WEATHERBIT_API_KEY_HERE替换为从Weatherbit获取的实际API密钥。运行Docker容器:
从openapi-mcp根目录(包含example文件夹的目录)运行以下命令:
bashdocker run -p 8080:8080 --rm \ -v $(pwd)/example/weather:/app/spec \ --env-file $(pwd)/example/weather/.env \ ckanthony/openapi-mcp:latest \ --spec /app/spec/weatherbitio-swagger.json \ --api-key-env API_KEY \ --api-key-name key \ --api-key-loc query
-v $(pwd)/example/weather:/app/spec:将本地example/weather目录(包含规范和.env文件)挂载到容器内的/app/spec。--env-file $(pwd)/example/weather/.env:告诉Docker从.env文件加载环境变量(特别是API_KEY)。ckanthony/openapi-mcp:latest:使用公共Docker镜像。--spec /app/spec/weatherbitio-swagger.json:指向容器内的规范文件。--api-key-*标志配置工具如何注入API密钥(从API_KEY环境变量读取,命名为key,放置在query字符串中)。访问MCP服务器:
MCP服务器现在应运行并可通过http://localhost:8080供兼容客户端访问。
使用Docker Compose(示例):
example/目录中提供了docker-compose.yml文件,演示使用本地构建镜像运行Weatherbit API示例。
准备环境文件:将example/weather/.env.example复制到example/weather/.env并添加实际的Weatherbit API密钥:
dotenv# example/weather/.env API_KEY=YOUR_ACTUAL_WEATHERBIT_KEY
使用Docker Compose运行:导航到example目录并运行:
bashcd example # 基于../Dockerfile本地构建镜像 # 不使用公共Docker Hub镜像 docker-compose up --build
--build:强制Docker Compose在启动服务前使用项目根目录的Dockerfile构建镜像。example/docker-compose.yml,构建镜像,挂载./weather,读取./weather/.env,并使用指定的命令行参数启动openapi-mcp容器。http://localhost:8080可用。停止服务:在运行Compose的终端按Ctrl+C,或在另一个终端的example目录中运行docker-compose down。
openapi-mcp命令接受以下标志:
| 标志 | 描述 | 类型 | 默认值 |
|---|---|---|---|
--spec | 必填。OpenAPI规范文件的路径或URL。 | string | (无) |
--port | MCP服务器运行端口。 | int | 8080 |
--api-key | 直接提供API密钥值(为安全起见,建议使用--api-key-env或.env文件)。 | string | (无) |
--api-key-env | 包含API密钥的环境变量名称。如果规范是本地的,也会检查规范目录中的.env文件。 | string | (无) |
--api-key-name | 使用密钥时必填。API密钥参数的名称(头、查询、路径或Cookie名称)。 | string | (无) |
--api-key-loc | 使用密钥时必填。API密钥位置:header、query、path或cookie。 | string | (无) |
--include-tag | 要包含的标签(可重复)。如果使用包含标志,仅公开包含的项目。 | string slice | (无) |
--exclude-tag | 要排除的标签(可重复)。排除在包含之后应用。 | string slice | (无) |
--include-op | 要包含的操作ID(可重复)。 | string slice | (无) |
--exclude-op | 要排除的操作ID(可重复)。 | string slice | (无) |
--base-url | 手动覆盖从规范中检测到的目标API服务器基础URL。 | string | (无) |
--name | 生成的MCP工具集的默认名称(如果规范没有标题则使用)。 | string | "OpenAPI-MCP Tools" |
--desc | 生成的MCP工具集的默认描述(如果规范没有描述则使用)。 | string | "从OpenAPI规范生成的工具" |
注意:通过运行工具的--help标志可获取此列表(例如docker run --rm ckanthony/openapi-mcp:latest --help)。
REQUEST_HEADERS:将此环境变量设置为JSON字符串(例如'{"X-Custom": "Value"}'),以向所有发往目标API的请求添加自定义头。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务