OpenAPI-MCP: Dockerized MCP Server to allow your AI agent to access any API with existing api docs について
OpenAPI-MCP は、Swagger/OpenAPI 仕様ファイルを読み込み、対応する MCP ツールセットを生成する Docker 版 MCP サーバーです。既存の API をコーディングなしで AI エージェントから利用したい開発者に向いています。API キーはサーバー側でリクエストに付与され、MCP クライアントからは見えません。
主な機能
- 01Swagger v2 と OpenAPI v3 からのツール生成
- 02header・query・path・cookie によるキー注入
- 03フラグ、環境変数、.env ファイルからのキー読み込み
- 04tag や操作 ID によるツールの絞り込み
- 05REQUEST_HEADERS によるカスタムヘッダー追加
活用シーン
- 01Cursor から既存の REST API を呼び出す
- 02認証が必要なサードパーティ API へのエージェントアクセス
- 03一部のエンドポイントだけを AI アシスタントに公開
MCP 対応
本プロジェクトは MCP サーバーとして動作し、OpenAPI の操作を MCP ツールに変換して Cursor などの MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OpenAPI-MCP:既存の API ドキュメントを使い、AI エージェントがあらゆる API にアクセスできる Docker 化 MCP サーバー

Swagger/OpenAPI 仕様ファイルから MCP ツール定義を直接生成します。
OpenAPI-MCP は、swagger.json または openapi.yaml ファイルを読み込み、対応する Model Context Protocol (MCP) ツールセットを生成する、Docker 化された MCP サーバーです。これにより、Cursor などの MCP 対応クライアントが、標準的な OpenAPI 仕様で記述された API を利用できるようになります。OpenAPI/Swagger 仕様を用意するだけで、追加のコーディングなしに AI エージェントがあらゆる API にアクセスできるようになります。
目次
デモ
自分でデモを実行する:Weatherbit の例を実行する(ステップごとの手順)
OpenAPI-MCP を選ぶ理由
- 標準への準拠: 既存の OpenAPI/Swagger ドキュメントを活用できます。
- ツールの自動生成: エンドポイントごとの手動設定なしに MCP ツールを作成できます。
- 柔軟な API キー管理: API キーを MCP クライアントに公開せず、プロキシ対象 API の API キー認証を安全に管理できます。
- ローカルおよびリモートの仕様: ローカルの仕様ファイルとリモート URL のどちらにも対応します。
- Docker 化されたツール: Docker でコンテナ化されたサービスとして、簡単にデプロイして実行できます。
機能
- OpenAPI v2(Swagger)および v3 に対応: 標準的な仕様形式を解析します。
- スキーマ生成: OpenAPI の操作パラメーターとリクエスト/レスポンス定義から MCP ツールのスキーマを作成します。
- API キーの安全な管理:
- コマンドライン設定に基づいて、API キーをリクエスト(
header、query、path、cookie)に挿入します。- API キーはフラグ(
--api-key)、環境変数(--api-key-env)、またはローカル仕様ファイルと同じ場所にある.envファイルから直接読み込みます。 - API キーをエンド MCP クライアント(例:AI アシスタント)から隠します。
- API キーはフラグ(
- コマンドライン設定に基づいて、API キーをリクエスト(
- サーバー URL の検出: 仕様内のサーバー URL をツール連携のベースとして使用します(上書き可能)。
- フィルタリング: 特定の操作またはタグを対象に含める/除外するオプションがあります(
--include-tag、--exclude-tag、--include-op、--exclude-op)。 - リクエストヘッダーの挿入:
REQUEST_HEADERS環境変数を使用して、カスタムヘッダー(追加の認証情報やトレーシングなど)を渡せます。
インストール
Docker
このツールの実行には、Docker を使用する方法を推奨します。
Docker Hub のビルド済みイメージを使用する(推奨)
代わりに、Docker Hub で公開されているビルド済みイメージを使用できます。
- イメージを取得する:
docker pull ckanthony/openapi-mcp:latest - コンテナを実行する:
上記の
docker runの例に従い、openapi-mcp:latestをckanthony/openapi-mcp:latestに置き換えてください。
ローカルでビルドする(任意)
-
Docker イメージをローカルでビルドする:
# Navigate to the repository root cd openapi-mcp # Build the Docker image (tag it as you like, e.g., openapi-mcp:latest) docker build -t openapi-mcp:latest . -
コンテナを実行する: コンテナの実行時に、OpenAPI 仕様と必要な API キー設定を指定する必要があります。
-
例 1:ローカルの仕様ファイルと
.envファイルを使用する場合:openapi.jsonまたはswagger.yamlを含むディレクトリ(例:./my-api)を作成します。- API キーが必要な場合は、同じディレクトリ(例:
./my-api/.env)にAPI_KEY=your_actual_keyを記述した.envファイルを作成します(--api-key-envフラグが異なる場合は、API_KEYを置き換えてください)。
docker 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 と直接指定する環境変数を使用する場合:
docker 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 の実行オプション:
-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を実行して--helpを参照してください。)
-
Weatherbit の例を実行する(ステップごとの手順)
このリポジトリには、Weatherbit API を使用する例が含まれています。公開 Docker イメージを使用して実行する方法は次のとおりです。
-
OpenAPI 仕様を見つける(任意の知識): 多くの公開 API では、OpenAPI/Swagger 仕様をオンラインで入手できます。見つけるための優れたリソースとして、APIs.guru があります。この例で使用している Weatherbit の仕様(
weatherbitio-swagger.json)も、そこから取得しました。 -
Weatherbit API キーを取得する:
- Weatherbit.io にアクセスしてアカウントを登録します(無料プランがあります)。
- Weatherbit アカウントのダッシュボードで API キーを確認します。
-
このリポジトリをクローンする: このリポジトリにあるサンプルファイルが必要です。
git clone https://github.com/ckanthony/openapi-mcp.git cd openapi-mcp -
環境ファイルを準備する:
- サンプルディレクトリに移動します:
cd example/weather - サンプル環境ファイルをコピーします:
cp .env.example .env - 新しい
.envファイルを編集し、YOUR_WEATHERBIT_API_KEY_HEREを Weatherbit から取得した実際の API キーに置き換えます。
- サンプルディレクトリに移動します:
-
Docker コンテナを実行する:
openapi-mcpのルートディレクトリ(exampleフォルダーがあるディレクトリ)から、次のコマンドを実行します。docker 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 を使用する(例):
Weatherbit API の例をローカルでビルドしたイメージを使用して実行する方法を示す docker-compose.yml ファイルが、example/ ディレクトリに用意されています。
-
環境ファイルを準備する:
example/weather/.env.exampleをexample/weather/.envにコピーし、実際の Weatherbit API キーを追加します。# example/weather/.env API_KEY=YOUR_ACTUAL_WEATHERBIT_KEY -
Docker Compose で実行する:
exampleディレクトリに移動し、次を実行します。cd example # これは ../Dockerfile に基づいてイメージをローカルでビルドします # 公開 Docker Hub イメージは使用しません docker-compose up --build--build:サービスを開始する前に、Docker Compose にプロジェクトルートのDockerfileを使用してイメージをビルドさせます。- Compose は
example/docker-compose.ymlを読み込み、イメージをビルドし、./weatherをマウントして./weather/.envを読み込み、指定されたコマンドライン引数でopenapi-mcpコンテナを起動します。 - MCP サーバーには
http://localhost:8080でアクセスできます。
-
サービスを停止する: Compose を実行しているターミナルで
Ctrl+Cを押すか、別のターミナルからexampleディレクトリでdocker-compose downを実行します。
コマンドラインオプション
openapi-mcp コマンドでは、次のフラグを使用できます。
| フラグ | 説明 | 型 | デフォルト |
|---|---|---|---|
--spec | 必須。 OpenAPI 仕様ファイルのパスまたは URL です。 | string | (none) |
--port | MCP サーバーを実行するポートです。 | int | 8080 |
--api-key | API キーの値を直接指定します(セキュリティのため、代わりに --api-key-env または .env ファイルを使用してください)。 | string | (none) |
--api-key-env | API キーを含む環境変数名です。仕様ファイルがローカルにある場合は、仕様ファイルのディレクトリにある .env ファイルも確認します。 | string | (none) |
--api-key-name | キーを使用する場合は必須。 API キーパラメーターの名前(ヘッダー、クエリ、パス、または Cookie の名前)です。 | string | (none) |
--api-key-loc | キーを使用する場合は必須。 API キーの場所です。header、query、path、または cookie を指定します。 | string | (none) |
--include-tag | 含めるタグです(繰り返し指定できます)。include フラグを使用すると、指定した項目のみが公開されます。 | string slice | (none) |
--exclude-tag | 除外するタグです(繰り返し指定できます)。除外は包含の後に適用されます。 | string slice | (none) |
--include-op | 含める Operation ID です(繰り返し指定できます)。 | string slice | (none) |
--exclude-op | 除外する Operation ID です(繰り返し指定できます)。 | string slice | (none) |
--base-url | 仕様から検出された接続先 API サーバーのベース URL を手動で上書きします。 | string | (none) |
--name | 生成する MCP ツールセットのデフォルト名です(仕様にタイトルがない場合に使用されます)。 | string | "OpenAPI-MCP Tools" |
--desc | 生成する MCP ツールセットのデフォルトの説明です(仕様に説明がない場合に使用されます)。 | string | "Tools generated from OpenAPI spec" |
注: ツールに --help フラグを付けて実行すると、この一覧を表示できます(例:docker run --rm ckanthony/openapi-mcp:latest --help)。
環境変数
REQUEST_HEADERS:この環境変数に JSON 文字列(例:'{"X-Custom": "Value"}')を設定すると、接続先 API へのすべての送信リクエストにカスタムヘッダーが追加されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。