OpenAPI to MCP について
OpenAPI 仕様を MCP ツールに変換し、AI エージェントなどの MCP クライアントから記載された API を呼び出せるサーバーです。OpenAPI 2.0 と 3.x に対応し、Streamable HTTP と旧式の SSE を利用できます。
主な機能
- 01OpenAPI 操作をツールに変換
- 02OpenAPI 2.0 と 3.x に対応
- 03Streamable HTTP と SSE に対応
- 04API ベース URL の自動検出
- 05バイナリレスポンスの処理
- 06詳細なデバッグログ
活用シーン
- 01既存の Web API を MCP クライアントに公開
- 02OpenAPI 仕様からクライアントを API に接続
MCP 対応
OpenAPI 仕様の操作を MCP ツールとして公開します。MCP クライアントは Streamable HTTP または旧式の SSE で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OpenAPI から MCP へ
OpenAPI 仕様で記述された既存の Web API と連携するために、OpenAPI 仕様ファイルを MCP サーバーに変換します。
これにより、MCP を理解する AI エージェントやその他のクライアントが、OpenAPI 仕様で記述された既存の Web API と連携できます。
機能
- OpenAPI の操作を MCP ツールに自動変換
- 最新の Streamable HTTP と従来の SSE トランスポートの両方に対応
- OpenAPI 仕様から API ベース URL を自動検出
- OpenAPI/Swagger 2.0 および OpenAPI 3.x に対応
- バイナリレスポンスの処理
- スムーズなシャットダウン処理
- デバッグ用の詳細なログ記録
前提条件
- Node.js(v16 以降を推奨)
インストール
- リポジトリをクローンします(または
openapi-to-mcpディレクトリがあることを確認します)。 openapi-to-mcpディレクトリに移動します:cd openapi-to-mcp- 依存関係をインストールします:
npm install
ビルド
TypeScript コードを JavaScript にコンパイルします:
npm run build
これにより、コンパイル済みの JavaScript ファイルを含む dist ディレクトリが作成されます。
使用方法
start スクリプトを使用してサーバーを起動します。-f または --file オプションで OpenAPI 仕様ファイルのパスを指定します:
# Example using a local petstore.yaml file
npm start -- serve -f ./path/to/your/openapi.json
# Example with different port and host
npm start -- serve --file ./specs/petstore.json --port 9090 --host 0.0.0.0
./path/to/your/openapi.jsonを実際の OpenAPI ファイルのパスに置き換えます。- サーバーはファイルを解析し、API 操作を MCP 関数に適合させて、待ち受けを開始します。
- 最新および従来の MCP 接続用に利用可能なエンドポイントが表示されます。
MCP クライアントとして接続する
最新の接続方法(推奨)
サーバーは、MCP SDK によって管理される最新の Streamable HTTP トランスポートを提供します。サーバーへの接続には、この方法を推奨します。
従来の SSE 接続
後方互換性のため、サーバーは SSE 接続にも対応しています:
-
SSE エンドポイント(例:
http://localhost:8080/sse)に接続します。 -
接続時に
mcp-helloイベントを受信します。 -
関数を呼び出すには、SSE 接続 ID と一致する
sessionIdクエリパラメーターを付けて、/messagesエンドポイントに POST リクエストを送信し、MCP のfunction_callメッセージを渡します。/messages?sessionId=<your_session_id>への POST の例:ヘッダー:
Content-Type: application/json本文:
{ "type": "function_call", "id": "call-123", "function_name": "get_pets_by_status", "parameters": { "status": "available" } } -
サーバーは対応する API 呼び出しを実行し、確立済みの SSE 接続を通じて
function_returnまたはerrorイベントを返します。
開発
自動再コンパイルを有効にして開発モードで実行します:
# Make sure to provide the OpenAPI file path
npm run dev -- -f ./path/to/your/openapi.yaml
現在の制限事項
- 認証:未実装です
- スキーマ検証:基本的なスキーマ検証は実装されていますが、一部の複雑な OpenAPI スキーマ機能(ディスクリミネーター、複雑な合成)は完全にはサポートされない場合があります。
- テスト:現在、自動テストは含まれていません。
- ドキュメント:個々のツールのドキュメントは、例やパラメーターの説明をさらに充実させることができます。
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。