OpenAPI to MCP Generator について
OpenAPI to MCP Generator は、OpenAPI・Swagger 仕様から Quarkus ベースの MCP サーバーを生成する Java ツールです。LLM から標準化されたツールを通じて REST API を呼び出したい開発者に向いています。
主な機能
- 01OpenAPI・Swagger 仕様ファイルの解析
- 02各 API エンドポイントの MCP ツールへの変換
- 03GET・POST・PUT・DELETE・PATCH メソッドへの対応
- 04API キー・Bearer トークン・Basic 認証のサポート
- 05環境変数によるサーバー URL の選択
活用シーン
- 01社内 REST API の MCP サーバーとしての迅速な公開
- 02天気予報などの公開 API を LLM から呼び出す
- 03OpenAPI ファイルからの Clever Cloud リソース管理の公開
MCP 対応
生成されるプログラムは MCP サーバーであり、OpenAPI ファイルの各エンドポイントを MCP クライアントに向けてツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OpenAPI から MCP へのジェネレーター
このプロジェクトは、OpenAPI/Swagger の仕様を MCP サーバーに自動変換する強力なツールを提供します。これにより、LLM は標準化されたツールを通じてあらゆる REST API を操作できます。
コンポーネント
SwaggerToMcpGenerator.java
あらゆる OpenAPI/Swagger 仕様を、完全に機能する MCP サーバーに変換する総合的なユーティリティです。
- OpenAPI 仕様ファイルを解析します
- API エンドポイントを MCP ツールに変換します
- パスパラメーター、クエリパラメーター、リクエストボディを処理します
- 複数の HTTP メソッド(GET、POST、PUT、DELETE、PATCH)をサポートします
- 認証(API キー、Bearer トークン、Basic 認証)をサポートします
- JSON レスポンスを読みやすく整形します
- 堅牢なエラー処理を生成します
- 有効な値やデフォルト値を含むパラメーターのドキュメントを備えています
OpenAPI からの MCP サーバーの生成
任意の OpenAPI 仕様から MCP サーバーを生成するには、次のようにします。
jbang SwaggerToMcpGenerator.java path/to/swagger.json GeneratedMcpServer [options]
パラメーター:
path/to/swagger.json:OpenAPI/Swagger 仕様ファイルのパスGeneratedMcpServer:出力する Java ファイルの名前(.java 拡張子なし)
オプション:
--server-index <index>:OpenAPI 仕様から使用するサーバーのインデックス(0 始まり)--server-url <url>:使用するサーバーの URL(server-index を上書きします)
これにより、swagger ファイルで定義された各 API エンドポイントに対応するツールを備えた MCP サーバーを実装する、新しいファイル GeneratedMcpServer.java が作成されます。OpenAPI 仕様に複数のサーバーが定義されていて、明示的に選択されていない場合、ジェネレーターは警告を出力します。
生成した MCP サーバーの実行
生成した MCP サーバーを実行するには、次のようにします。
jbang GeneratedMcpServer.java
サーバーの選択
生成した MCP サーバーには、OpenAPI 仕様で定義されたすべてのサーバーの定数が含まれているため、実行時に使用するサーバーを選択できます。デフォルトではリストの最初のサーバーが使用されますが、環境変数を使って特定のサーバーを選択できます。
# Select server by index (0-based)
export SERVER_INDEX=1
# Or select server by URL
export SERVER_URL="https://api-example.com/v2"
jbang GeneratedMcpServer.java
認証
生成した MCP サーバーは、環境変数を通じて複数の認証方式をサポートします。
- API キー:環境変数
API_KEYとAPI_KEY_HEADERを設定します - Bearer トークン:環境変数
BEARER_TOKENを設定します - Basic 認証:環境変数
API_USERNAMEとAPI_PASSWORDを設定します
例:
export API_KEY="your-api-key"
export API_KEY_HEADER="X-API-Key"
jbang GeneratedMcpServer.java
例
Open-Meteo Weather API
このプロジェクトには、Open-Meteo Weather API の OpenAPI 仕様の例が examples/open-meteo ディレクトリに含まれています。
Open-Meteo MCP サーバーの生成
cd examples/open-meteo
jbang ../../SwaggerToMcpGenerator.java open-meteo-openapi.yml OpenMeteoMcpServer
これにより、天気予報データにアクセスするための MCP ツールを備えた OpenMeteoMcpServer.java が生成されます。
Open-Meteo MCP サーバーの実行
cd examples/open-meteo
jbang OpenMeteoMcpServer.java
Open-Meteo MCP サーバーの使用
生成した MCP サーバーは、天気予報にアクセスするためのツールを提供します。サーバーを使用する際は、有効な値やデフォルト値を含むパラメーターの説明を確認してください。たとえば、次のとおりです。
wind_speed_unitパラメーターには、メートル毎秒を表すms(「m/s」ではありません)を使用しますwind_speed_unitの有効な値は、kmh(デフォルト)、ms、mph、knです- 温度単位には、
celsius(デフォルト)またはfahrenheitを使用します
スペインのセビリアの天気を問い合わせる例:
latitude: 37.3891
longitude: -5.9845
current_weather: true
wind_speed_unit: ms
Clever Cloud MCP サーバーの生成
cd examples/clever-cloud
jbang ../../SwaggerToMcpGenerator.java clever-cloud-openapi.yml CleverCloudMcpServer --server-index 1
ここでは --server-index 1(リストの2番目のサーバー)を使用しています。これは、トークン認証に必要な API Bridge URL です。これにより、Clever Cloud のリソースを管理するための MCP ツールを備えた CleverCloudMcpServer.java が生成されます。
また、サーバー URL を直接指定することもできます。
cd examples/clever-cloud
jbang ../../SwaggerToMcpGenerator.java clever-cloud-openapi.yml CleverCloudMcpServer --server-url https://api-bridge.clever-cloud.com/v2
Clever Cloud MCP サーバーの実行
cd examples/clever-cloud
# Set your Clever Cloud API token
export BEARER_TOKEN=your_api_token
jbang CleverCloudMcpServer.java
Clever Cloud API トークンの生成
Clever Cloud の API トークンを生成するには、Clever Tools CLI を使用します。
# Install Clever Tools (if not already installed)
npm install -g clever-tools
# Login to Clever Cloud
clever login
# Enable the tokens feature
clever features enable tokens
# Create a token (with optional expiration)
clever tokens create "MCP Server Token"
clever tokens create "Temporary Token" --expiration 24h
トークンの一覧表示や取り消しもできます。
# List existing tokens
clever tokens -F json
# Revoke a token
clever tokens revoke api_tokens_xxx
Clever Cloud MCP サーバーの使用方法
生成された MCP サーバーは、Clever Cloud API とやり取りするためのツールを提供します。利用可能なツールは次のとおりです。
get_self:現在のユーザー情報を取得しますget_summary:ユーザーの概要を取得しますget_organisations__organisationId__applications:組織のアプリケーション一覧を取得しますget_organisations__organisationId__applications__applicationId_:アプリケーションの詳細を取得します
組織のアプリケーション一覧を取得するクエリの例:
organisationId: your_organization_id
動作の仕組み
MCP プロトコル
Model Context Protocol(MCP)は、ツールと LLM が通信するための標準化された方法であり、次のことが可能になります。
- ツールが、MCP 互換のあらゆる LLM に機能を公開できます
- LLM が特定の実装に縛られることなく、ツールを検出して使用できます
- ツールの仕様と呼び出しに一貫したインターフェースを提供できます
OpenAPI から MCP への変換
ジェネレーターは次の手順で動作します。
- Swagger Parser を使用して OpenAPI 仕様を解析します
- 各 API エンドポイントを
@Toolアノテーション付きのメソッドに変換します - パラメーターをマッピングします。
- パスパラメーターは URL に組み込まれます
- クエリパラメーターは URL ビルダーに追加されます
- リクエストボディは適切にフォーマットされ、リクエストに含められます
- 適切なエラー処理を備えた HTTP クライアントコードを生成します
- コンテンツタイプに基づいてレスポンスをフォーマットします(JSON を整形表示します)
- 環境変数に基づいて認証を追加します
高度な機能
- 複数の HTTP メソッド:GET、POST、PUT、DELETE、PATCH をサポートします
- コンテンツタイプの処理:さまざまなコンテンツタイプを適切に処理します
- エラー処理:ステータスコードとレスポンスボディを含む詳細なエラー情報を報告します
- 認証:API キー、Bearer トークン、Basic 認証をサポートします
- タイムアウト:接続、読み取り、書き込みのタイムアウトを設定できます
- 複数のサーバー:OpenAPI 仕様で定義された複数のサーバー URL から選択できます
環境に関する注意事項
jbang-wrapper.sh スクリプトは、Mac で Claude Desktop などの AI アシスタントから実行する際の環境に関する問題に対処し、正しい PATH と環境変数が利用できるようにします。
次のステップ
- フォームデータとマルチパートリクエストのサポートを追加する
- OAuth 2.0 認証フローを実装する
- カスタムレスポンス変換のサポートを追加する
- OpenAPI 仕様をアップロードしてサーバーを生成する Web UI を作成する
- WebSocket エンドポイントのサポートを追加する
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。