Skip to content

MCP ツール

概要

swag2mcp は 19 の MCP ツール を提供し、LLM エージェントが Model Context Protocol を通じて API に完全にアクセスできるようにします。これらのツールは、利用可能な API の発見、スペック階層のナビゲーション、エンドポイントの検索と検査、API 呼び出しの実行、大規模レスポンスの処理まで、完全なワークフローをカバーします。

ツールが解決する課題

  • 発見 — LLM は ID を事前に知らなくてもスペック、コレクション、タグを見つけられます
  • ナビゲーション — スペック → コレクション → タグ → エンドポイントの構造化された階層を掘り下げます
  • 検索 — ID がない場合に全エンドポイントを全文検索
  • 検査 — 呼び出し前に完全な OpenAPI 操作オブジェクトを取得
  • 実行 — 自動認証付きで実際の API 呼び出しを実行
  • 大規模レスポンス処理 — インラインに収まらない大きなレスポンスの概要表示、圧縮、スライス

読み取り専用 vs 可変

タイプツール
読み取り専用17すべての発見、エンドポイント、検索、検査、情報、レスポンスツール
可変2invoke(実際の HTTP 呼び出し)、auth(トークン取得)

読み取り専用ツールは MCP プロトコルで ReadOnlyHint=true および IdempotentHint=true とマークされ、LLM に副作用なく安全に呼び出せることを示します。

エラーハンドリング

すべてのツールは、機械可読なコードと人間可読なメッセージを含む構造化された LLMError オブジェクトとしてエラーを返します:

エラーコード意味
validation_failed無効な入力(不正な ID 形式、必須フィールドの欠落)
not_foundインデックスまたはワークスペースにエンティティが見つからない
rate_limit同じエンドポイントへの 10 秒以内の 2 回目の invoke 呼び出し
invoke_errorHTTP 呼び出しの失敗、ダウンロードの失敗
auth_error認証トークン取得の失敗
config_error設定ファイルの読み込みまたは保存の失敗
parse_errorスペックファイルの解析の失敗

カテゴリ

カテゴリツール説明
発見spec_list, spec_by_id, collection_by_spec, collection_by_id, tag_by_spec, tag_by_collection, tag_by_idスペック階層をナビゲート:スペック、コレクション、タグを検索
エンドポイントendpoint_by_spec, endpoint_by_collection, endpoint_by_tag, endpoint_by_id階層の異なるレベルでエンドポイントを表示
実行search, inspect, invoke検索、完全な契約の検査、API の呼び出し
ユーティリティauth, info, response_outline, response_compress, response_slice認証トークン、ランタイム情報、大規模レスポンス処理
スキルフォーマットガイドツールレスポンスの表示方法をカスタマイズ

全リスト

ツール説明
spec_listワークスペース内のすべての API スペックを一覧表示
spec_by_idコレクションを含む詳細なスペック情報を取得
collection_by_specスペック内のコレクションを一覧表示
collection_by_idタグを含むコレクションの詳細を取得
tag_by_specスペック全体のすべてのタグを一覧表示
tag_by_collectionコレクション内のタグを一覧表示
tag_by_idタグの詳細(ID、タイトル、メソッド数)を取得
endpoint_by_specスペック内のすべてのエンドポイントを一覧表示
endpoint_by_collectionコレクション内のエンドポイントを一覧表示
endpoint_by_tagタグ内のエンドポイントを一覧表示
endpoint_by_idクイックエンドポイント概要(メソッド、パス、概要)
search全エンドポイントの全文検索
inspect完全な OpenAPI 操作の詳細(パラメータ、スキーマ)
invoke実際の API 呼び出しを実行
authスペックの認証トークンまたはヘッダーを取得
infoランタイム情報(バージョン、スペック、設定)
response_outline大規模レスポンスファイルの構造概要
response_compress大規模レスポンスをインラインに収まるよう圧縮
response_slice大規模レスポンスの断片を抽出

ナビゲーション階層

spec_list
  └── spec_by_id(id)
        └── collection_by_spec(specId)
              └── collection_by_id(id)
                    └── tag_by_collection(collectionId)
                          └── tag_by_id(id)
                                └── endpoint_by_tag(tagId)
                                      └── endpoint_by_id(id)
                                            └── inspect(endpointId)
                                                  └── invoke(endpointId)

ID がない場合は search を使用してクエリでエンドポイントを検索します。invokefileRef を返した場合(レスポンスが大きすぎる場合)、response_outlineresponse_compress または response_slice を使用してデータを探索します。