MCP
BasicRouter MCPガイド
BasicRouter(OpenAI互換のLLMゲートウェイ)をMCPサーバーとしてラップすることで、 AIツールからBasicRouterのチャット、モデル、請求、画像、動画エンドポイントを直接呼び出せます。
特徴
- 🤖 マルチAPIチャット: OpenAI Chat Completions、Anthropic Messages、OpenAI Responses互換のエンドポイントに対応
- 🖼️ マルチモーダル生成: テキストチャットに加え、画像・動画生成(テキストから、画像から、先頭/末尾フレーム、参照アセット)の非同期タスクに対応
- 🔍 モデル・アカウント情報の取得: 利用可能なモデルの一覧、モデル詳細、アカウント残高、使用量・請求の詳細、チャージ履歴を取得
- 🔑 ヘッダー経由のキー渡し: 各呼び出しはリクエストヘッダーからAPIキーを読み取るため、1つのデプロイを複数アカウントで共有できます — サーバー側でキーを保存・キャッシュすることはありません
クイックスタート
Claude Codeでの利用を推奨します。-s userを追加すると、ユーザースコープで登録されます(すべてのプロジェクトで利用可能)。
ステップ1: 接続を追加する
claude mcp add --transport http basicrouter https://api.basicrouter.ai/mcp \
--header "X-Basicrouter-Api-Key: <your BasicRouter API key>" \
-s userステップ2: 接続を確認する
claude mcp list # should show ✓ Connected
claude mcp get basicrouter # should show Scope: User config (available in all your projects)ステップ3: 使ってみる
Claudeに次のように話しかけてみてください。
- 「BasicRouterを使ってclaude-sonnet-5を呼び出し、秋についての詩を書いて」
- 「私のBasicRouterアカウントで利用可能なモデルを一覧表示して」
- 「私のBasicRouterの残高と最近の使用量を確認して」
- 「BasicRouterを使ってサイバーパンクな夜の都市の画像を生成して」
Claudeは自動的に対応するMCPツールを呼び出し、結果を返します。
Claude Desktopで使う
mcpServersセクションに以下を追加してください。
{
"mcpServers": {
"basicrouter": {
"type": "http",
"url": "https://api.basicrouter.ai/mcp",
"headers": {
"X-Basicrouter-Api-Key": "<your BasicRouter API key>"
}
}
}
}Codex CLIで使う
推奨: env_http_headersを使い、環境変数からキーを読み込む方法
まずシェルで環境変数をエクスポートします。
export BASICROUTER_API_KEY=<your BasicRouter API key>次に~/.codex/config.tomlに以下を記述します。
[mcp_servers.basicrouter]
url = "https://api.basicrouter.ai/mcp"
env_http_headers = { "X-Basicrouter-Api-Key" = "BASICROUTER_API_KEY" }別の方法: http_headersを使い、キーを設定ファイルに直接書き込む方法(専用の環境変数を管理したくない場合に便利ですが、キーが設定ファイルに平文で保存される点に注意してください)
[mcp_servers.basicrouter]
url = "https://api.basicrouter.ai/mcp"
http_headers = { "X-Basicrouter-Api-Key" = "<your BasicRouter API key>" }Codexの設定UIから追加する場合:
- タイプ: HTTP / Streamable HTTP
- 名前: basicrouter
- URL:
https://api.basicrouter.ai/mcp - ヘッダー名:
X-Basicrouter-Api-Key - ヘッダー値: あなたのBasicRouter APIキー
接続を確認する
Codex CLIを起動後、/mcp コマンドで設定済みのMCPサーバーとその接続状態が一覧表示されます — 正しく読み込まれているか確認するだけです。使い方はClaudeと同じで、 Codexが自動的に適切なツールを選択します。
設定ファイルに他のMCPサーバーが既に登録されている場合は、同じ階層に追記してください。編集後はClaude Desktopを完全に終了して再起動してください。
ツール
このMCPサーバーは14個のツールを提供し、5つのカテゴリーに分類されています。
1. チャット
1. chat_completion — Chat Completions
一度の対話リクエストを送信し、モデルの完全な返信を返します(ストリーミング非対応)。テキストだけでなく、画像と動画を渡してマルチモーダル理解も可能です(モデルが対応する vision/video 能力をサポートしている必要あり — list_models で input_modalities を確認)——メッセージの content を文字列からコンテンツブロック配列に変更し、text と image_url / video_url を混在させます。
| パラメータ | 必須 | 説明 |
|---|---|---|
| model | ✅ | モデルID。例: "claude-sonnet-5" — 事前にlist_modelsで確認してください |
| messages | ✅ | メッセージリスト。各メッセージは {"role": "user"|"assistant"|"system", "content": "..."}。マルチモーダル時は content はコンテンツブロック配列(下記マルチモーダル入力を参照) |
| temperature | ❌ | サンプリング温度 — 高いほどランダム性が増します |
| max_tokens | ❌ | 生成する最大トークン数 |
マルチモーダル入力(text / image / video)
画像入力(URL 方式):
{"role": "user", "content": [
{"type": "text", "text": "この画像に何が写っていますか?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]}画像入力(Base64 方式):
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64_STRING>"}}対応画像形式:PNG、JPEG、GIF(先頭フレームのみ)、WebP。 1 枚の画像サイズ上限 20MB。
注意:大きな画像の Base64 文字列は非常に長くなり、リクエストボディ超過で 失敗する可能性があります。URL 方式の使用を推奨します。
detail パラメータ(任意、image_url オブジェクトに設定)が画像処理精度を制御:"auto"(デフォルト、モデルが画像サイズで自動決定)/ "low"(512x512 サムネイル、高速・低消費、単純分類向け)/ "high"(フル解像度、小字読取・細部分析向け)。1 メッセージの content 配列に複数の image_url ブロックを置いて複数画像を渡せます。
動画入力(URL):
{"role": "user", "content": [
{"type": "text", "text": "この動画の内容を説明してください。"},
{"type": "video_url", "video_url": {"url": "https://example.com/video.mp4"}}
]}動画入力(Base64):
{"type": "video_url", "video_url": {"url": "data:video/mp4;base64,<BASE64_STRING>"}}BasicRouter で video 入力をサポートするモデルには Qwen、Doubao(dola-seed)、Kimi、MiniMax シリーズの一部モデルが含まれます。詳細は list_models が返す input_modalities で確認してください。 OpenAI 公式 Chat Completions 標準は動画をネイティブサポートしませんが、BasicRouter ゲートウェイは
{"type": "video_url", "video_url": {"url": "..."}}拡張形式で動画入力をサポートします。この形式は OpenRouter、NVIDIA NIM、vLLM などの video_url 形式と一致します。
2. create_message — Anthropic Messages互換
Anthropic Messages 互換インターフェースを呼び出します(ストリーミング非対応)。コンテンツブロックは text、image、tool_use、tool_result、thinking、redacted_thinking をサポート。画像は
{"type": "image", "source": {...}}コンテンツブロックで渡します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| model | ✅ | モデルID。例: "claude-sonnet-4.6" |
| messages | ✅ | メッセージのリスト。contentは文字列またはコンテンツブロックの配列(text/image/tool_use/tool_result/thinkingなど) |
| max_tokens | ✅ | 最大出力トークン数 |
| system | ❌ | システムプロンプト。文字列または[{"type": "text", "text": "..."}] |
| temperature / top_p / top_k | ❌ | サンプリングパラメータ |
| tools | ❌ | ツール定義。各要素は{"name", "description", "input_schema", ...}の形式 |
| tool_choice | ❌ | ツール選択の戦略 |
| thinking | ❌ | 拡張思考の設定 |
| stop_sequences | ❌ | カスタム停止シーケンス |
| metadata | ❌ | 追加のメタデータ |
| anthropic_beta | ❌ | anthropic-betaヘッダー用のベータ機能識別子 |
マルチモーダル入力(text / image / video)
画像入力は 3 種類の source タイプをサポート:
1. Base64 エンコード(注意:data フィールドは純 Base64 文字列で、data: プレフィックスを含まない)。media_type は image/jpeg、image/png、image/gif、image/webp をサポート:
{"type": "image", "source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "<BASE64_STRING>"
}}2. URL 参照:
{"type": "image", "source": {
"type": "url",
"url": "https://example.com/image.jpg"
}}3. File ID(事前に Files API で purpose="vision" で画像をアップロードし file_id を取得):
{"type": "image", "source": {
"type": "file",
"file_id": "<file_id>"
}}1 メッセージの content 配列に複数の image ブロックを置いて複数画像を渡せます。
注意:大きな画像の Base64 文字列は非常に長くなり、リクエストボディ超過で 失敗する可能性があります。URL 方式の使用を推奨します。
動画入力:Anthropic Messages API は動画ファイルをサポートしません。動画理解が必要な場合は ffmpeg 等でキーフレームを抽出し、各フレームを image コンテンツブロックとして渡してください。BasicRouter で動画入力をサポートするモデル(list_models で input_modalities に video が含まれるか確認)の場合は chat_completion または create_response インターフェースを使用してネイティブ動画サポートをご利用ください。
3. create_response — OpenAI Responses互換
messages の代わりに input を、システムメッセージの代わりに instructions を、response_format の代わりに text.format を使います。テキストだけでなく、画像と動画を渡してマルチモーダル理解も可能です(モデルが対応する vision/video 能力をサポートしている必要あり — list_models で input_modalities を確認)——input をメッセージオブジェクト配列にし、content をコンテンツブロック配列でテキストと画像/動画を混在させます。
| パラメータ | 必須 | 説明 |
|---|---|---|
| model | ✅ | モデルID。例: "glm-5.2" |
| input | ✅ | 純文字列(1 つのユーザーメッセージとして)またはメッセージオブジェクト配列(マルチモーダル時に使用、下記参照) |
| instructions | ❌ | システムプロンプト |
| max_output_tokens | ❌ | 最大出力トークン数 |
| temperature / top_p | ❌ | サンプリングパラメータ |
| tools | ❌ | ツール定義。トップレベルの形式は{"type", "name", "description", "parameters"} |
| tool_choice | ❌ | "auto" / "none" / "required" または {"type", "name"} |
| text | ❌ | 出力形式の設定。例: {"format": {"type": "text" | "json_object" | "json_schema", ...}} |
| previous_response_id | ❌ | 複数ターンの会話に使う前回のレスポンスID |
| parallel_tool_calls | ❌ | 並列ツール呼び出しを許可するかどうか |
| metadata | ❌ | 追加のメタデータ |
マルチモーダル入力(text / image / video)
注意:Responses API のコンテンツブロック型は input_text / input_image / input_video を使い(Chat Completions の text / image_url / video_url ではなく)、image_url / video_url はネストオブジェクトではなく直接文字列です。
画像入力(URL 方式):
[{"role": "user", "content": [
{"type": "input_text", "text": "この画像に何が写っていますか?"},
{"type": "input_image", "image_url": "https://example.com/image.jpg"}
]}]画像入力(Base64 方式):
{"type": "input_image", "image_url": "data:image/jpeg;base64,<BASE64_STRING>"}対応画像形式:PNG、JPEG、GIF(先頭フレームのみ)、WebP。 1 枚の画像サイズ上限 20MB。
注意:大きな画像の Base64 文字列は非常に長くなり、リクエストボディ超過で 失敗する可能性があります。URL 方式の使用を推奨します。
画像入力(File ID 方式):
{"type": "input_image", "file_id": "<file_id>"}file_id は Files API で purpose="vision" で画像をアップロードして取得します。
detail パラメータ(任意、input_image オブジェクトに設定)が画像処理精度を制御:"auto"(デフォルト)/ "low"(512x512 サムネイル、高速・低消費)/ "high"(フル解像度、小字読取・細部分析向け)/ "original"(原始解像度、一部の新モデルのみ対応)。1 メッセージの content 配列に複数の input_image ブロックを置いて複数画像を渡せます。
動画入力(URL):
[{"role": "user", "content": [
{"type": "input_text", "text": "この動画の内容を説明してください。"},
{"type": "input_video", "video_url": "https://example.com/video.mp4"}
]}]動画入力(Base64):
{"type": "input_video", "video_url": "data:video/mp4;base64,<BASE64_STRING>"}動画入力(File ID):
{"type": "input_video", "file_id": "<file_id>"}BasicRouter で video 入力をサポートするモデルには Qwen、Doubao(dola-seed)、Kimi、MiniMax シリーズの一部モデルが含まれます。詳細は list_models が返す input_modalities で確認してください。 OpenAI 公式 Responses API 標準は動画をネイティブサポートしませんが、BasicRouter ゲートウェイは
{"type": "input_video", "video_url": "..."}拡張形式で動画入力をサポートします。この形式は BytePlus/Volcengine などの input_video 形式と一致します。
2. モデル・アカウント
4. list_models — 利用可能なモデルの一覧
現在のアカウントで利用可能なモデルを、ベンダー、モダリティ、機能、価格などのメタデータとともに返します。パラメータなし。リストの各項目に price_tiers 価格帯が含まれ、現在の呼び出し元の有効な課金価格(実際の課金と一致)を返します(価格帯フィールド説明を参照)。
5. get_model — 単一モデルの詳細を取得
| パラメータ | 必須 | 説明 |
|---|---|---|
| model | ✅ | モデルID。例: "gpt-5.5" — 存在しない場合は明確なエラーを返します |
出力に price_tiers 価格帯を含みます(価格帯フィールド説明を参照)。モデルが存在しない場合は 404 を返し、価格フィールドは含みません。
6. get_balance — アカウント残高の確認
現在のアカウントの使用量と残高を返します。パラメータなし。
3. 請求
7. list_usage — モデル使用量・請求の詳細
ページネーション対応のモデル使用量請求詳細を、注文作成時刻の降順で返します。通常の使用料のみで、チャージや調整は含みません。
| パラメータ | 必須 | 説明 |
|---|---|---|
| page | ❌ | ページ番号。1から始まり、デフォルトは1 |
| size | ❌ | ページサイズ。デフォルトは20 |
| start_time | ❌ | 開始時刻。形式は"yyyy-MM-ddTHH:mm:ss"(例: "2026-07-01T00:00:00") |
| end_time | ❌ | 終了時刻。同じ形式 |
8. list_transactions — チャージ・パッケージ購入の取引履歴
ページネーション対応の、支払い済みのチャージ/パッケージ購入取引履歴を、作成時刻の降順で返します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| page | ❌ | ページ番号。1から始まり、デフォルトは1 |
| size | ❌ | ページサイズ。デフォルトは20 |
| start_time | ❌ | 開始時刻。形式は"yyyy-MM-dd HH:mm:ss"(注意: 日付と時刻の間はスペースで、"T"ではありません) |
| end_time | ❌ | 終了時刻。同じ形式 |
4. 画像生成
9. list_image_models — 画像モデルの一覧
対応する画像生成モデルを、解像度、アスペクト比、最大画像数(maxCount)、最大参照画像数(fileMax)とともに返します。パラメータなし。画像を生成する前に必ず確認してください — ここで公開されている値のみ指定できます。リストの各項目に priceTiers 価格帯を含みます(価格帯フィールド説明を参照)。
10. create_image_generation — 画像生成タスクを送信
非同期で送信し、即座にtaskIdを返します。アカウントのクレジットを消費します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| text | ✅ | 画像生成のプロンプト |
| model | ✅ | モデル名。list_image_modelsが返すidから指定 |
| count | ❌ | 生成する画像の枚数 |
| resolution | ❌ | 解像度。list_image_modelsのresolutionsから指定 |
| ratio | ❌ | アスペクト比。list_image_modelsのratiosから指定 |
| image_urls | ❌ | 参照画像のURL(画像から画像への生成)。枚数はそのモデルのfileMaxが上限 |
| callback_url | ❌ | 完了時に呼び出されるWebhook。省略した場合はポーリングで確認します |
11. get_image_generation — 画像タスクのポーリング
| パラメータ | 必須 | 説明 |
|---|---|---|
| task_id | ✅ | create_image_generationが返したtaskId |
返却内容: statusはpending / success / failedのいずれか。imagesは画像URLのJSON文字列配列。 textにはモデルからの追加出力(例: Geminiのマルチモーダル出力)が含まれます。
5. 動画生成
12. list_video_models — 動画モデルの一覧
対応する動画生成モデルを、allowedVideoTypes、時間範囲(videoDurationMin/Max)、解像度、アスペクト比、参照アセット数の上限(fileMax)とともに返します。パラメータなし。動画を生成する前に必ず確認してください。リストの各項目に priceTiers 価格帯を含みます(価格帯フィールド説明を参照)。
13. create_video_generation — 動画生成タスクを送信
非同期で送信し、即座にtaskIdを返します。アカウントのクレジットを消費します。
| パラメータ | 必須 | 説明 |
|---|---|---|
| text | ✅ | 動画生成のプロンプト。video_type=5の場合は"@画像 N"/"@動画 N"/"@音声 N"で参照アセットを指定 |
| model | ✅ | モデル名。list_video_modelsが返すidから指定 |
| video_type | ✅ | 生成モードのコード(1〜5、下記参照) — そのモデルのallowedVideoTypesに含まれる値のみ有効 |
| image_urls | ❌ | 画像アセットのURL。意味はvideo_typeによって異なります |
| video_urls | ❌ | 動画アセットのURL。video_type=5の場合のみ使用 |
| audio_urls | ❌ | 音声アセットのURL。video_type=5の場合のみ使用 |
| resolution / ratio | ❌ | 解像度/アスペクト比。list_video_modelsから指定 |
| duration | ❌ | 動画の長さ(秒)。videoDurationMin/Maxの範囲内である必要があります |
| callback_url | ❌ | 完了時に呼び出されるWebhook。省略した場合はポーリングで確認します |
video_typeの意味:
| 値 | モード | 必要なアセット |
|---|---|---|
| 1 | テキストから動画 | アセット不要 |
| 2 | 画像から動画(先頭フレーム) | image_urlsに開始フレームを1枚指定 |
| 3 | 画像から動画(先頭/末尾フレーム) | image_urlsに[先頭フレーム, 末尾フレーム]の順で指定 |
| 4 | 画像から動画(参照) | image_urlsにスタイル/コンテンツの参照画像を1枚以上指定 |
| 5 | すべて参照 | image_urls/video_urls/audio_urlsを混在させ、text内で位置により参照 |
14. get_video_generation — 動画タスクのポーリング
| パラメータ | 必須 | 説明 |
|---|---|---|
| task_id | ✅ | create_video_generationが返したtaskId |
価格帯フィールド説明
list_models、get_model、list_image_models、list_video_models の 4 つのモデル照会ツールの出力は、現在の呼び出し元(API Key ユーザー)の有効な課金価格を返し、実際の課金と完全に一致し、そのモデルのすべての価格帯を含みます。
命名の違い:list_models / get_model は OpenAI のスネークケース(price_tiers)に従い、list_image_models / list_video_models は camelCase(priceTiers)に従います。構造は全く同じです。
price_tiers / priceTiers は配列で、各要素は 1 つの価格帯です:
| フィールド | 型 | 説明 |
|---|---|---|
region | string | テキストモデルの V2 階層リージョン。GLOBAL / NON_GLOBAL / us-central1 など。画像/動画モデルは null |
bandMin | long | テキストモデルの input token 区間下限(含む)。null は無限帯 |
bandMax | long | テキストモデルの input token 区間上限(含む)。null は無限帯 |
resolution | string | 画像/動画の解像度。1080p / 4K など。テキストモデルは null |
clarity | string | 鮮明度 |
unit | string | 課金単位:token(テキスト)/ image(画像)/ video(動画) |
quantity | integer | 単位数量(例:1000 token ごと、画像 1 枚ごと) |
description | string | 価格の説明 |
inputPrice | decimal | 現在の呼び出し元の有効な入力単価 |
outputPrice | decimal | 現在の呼び出し元の有効な出力単価 |
cachePrice | decimal | キャッシュ価格(汎用モデル、旧課金式用) |
cacheReadPrice | decimal | キャッシュ読取単価(Bedrock Claude 専用) |
cacheWritePrice | decimal | キャッシュ書込単価(Bedrock Claude 専用) |
ratio | decimal | 課金倍率。FIXED モードは 1、RATIO モードはユーザー/グループ倍率 |
mode | string | 価格モード:RATIO / FIXED |
planId | string | ヒットした価格プラン id。null の場合あり |
3 種のモデルタイプは同じ構造を共有し、説明フィールドの充填のみが異なり、該当しないフィールドは null です:
| モデルタイプ | unit | 有効な説明フィールド |
|---|---|---|
| テキスト | token | region / bandMin / bandMax |
| 画像 | image | resolution / clarity |
| 動画 | video | resolution / clarity |
価格の意味:返される inputPrice / outputPrice / cacheReadPrice / cacheWritePrice 等は、価格チェーン(chain)→ guidance → 基準価格を段階的に解決した後の、現在の API Key ユーザー向けの最終課金単価で、実際の課金と一致します。呼び出し元が見る単価は、自身の価格チェーン(reseller / distributor / 企業 / ユーザー単位設定)により異なります。
実際の課金額 = 使用量 ÷ quantity × 該当単価 × ratio。動画の秒単位課金の場合、実際の課金 = duration × outputPrice × ratio。
境界と例外処理(読み取り専用インターフェースは価格設定の問題で 500 を返しません):
| シナリオ | 挙動 |
|---|---|
| 単一帯の解決失敗(価格ポリシーがアクセス拒否、設定欠落) | その帯をスキップし、warn ログを記録し、残りの帯の解決を継続 |
| あるモデルの全帯が解決失敗 | 空配列 []、モデルは正常に返却 |
| モデルに価格設定が一切ない | 空配列 [] |
| 価格解決が未捕获例外をスロー | 全体 try-catch、空配列を返し、インターフェースは 200 を維持 |
レスポンス例(list_models、テキストモデル):
{
"object": "list",
"data": [
{
"id": "gpt-4o",
"object": "model",
"display_name": "gpt-4o",
"context_length": 128000,
"description": "...",
"price_tiers": [
{
"region": "GLOBAL",
"bandMin": null,
"bandMax": null,
"resolution": null,
"clarity": null,
"unit": "token",
"quantity": 1000,
"description": "1K token あたり",
"inputPrice": 0.0025,
"outputPrice": 0.01,
"cachePrice": 0.00125,
"cacheReadPrice": 0,
"cacheWritePrice": 0,
"ratio": 1,
"mode": "RATIO",
"planId": null
}
]
}
]
}レスポンス例(list_image_models、画像モデル、priceTiers は構造同上、unit は image):
{
"object": "list",
"data": [
{
"id": "dall-e-3",
"object": "image_model",
"displayName": "dall-e-3",
"resolutions": ["1024x1024", "1792x1024", "1024x1792"],
"priceTiers": [
{
"region": null,
"bandMin": null,
"bandMax": null,
"resolution": "1024x1024",
"clarity": "standard",
"unit": "image",
"quantity": 1,
"description": "1 枚あたり",
"inputPrice": 0,
"outputPrice": 0.04,
"cachePrice": 0,
"cacheReadPrice": 0,
"cacheWritePrice": 0,
"ratio": 1,
"mode": "RATIO",
"planId": null
}
]
}
]
}使用例
例1: シンプルなチャットリクエスト
質問例: 「BasicRouterを使ってclaude-sonnet-5を呼び出し、PythonのGILとは何か聞いて」
AIはchat_completionを次のように呼び出します。
{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "What is Python's GIL?"}]
}例2: Anthropic Messagesエンドポイントでのツール使用
質問例: 「BasicRouterのMessagesエンドポイントを使い、天気を確認するかどうかをモデルに判断させて」
AIはツール定義とtool_choiceを渡してcreate_messageを呼び出します。 レスポンスにはtool_useコンテンツブロックが含まれます。
例3: 利用可能なモデルの一覧表示
質問例: 「私のBasicRouterアカウントのモデルを一覧表示して」
AIはlist_modelsを呼び出し、利用可能なすべてのモデルのID、ベンダー、モダリティ、価格などを返します。
例4: 残高と使用量の確認
質問例: 「今月の私のBasicRouterの使用量を確認して」
AIは残高確認のためにget_balanceを呼び出し、続けて使用量の内訳のために list_usage(start_timeを今月に指定)を呼び出します。
例5: 画像の生成
質問例: 「BasicRouterを使ってサイバーパンクな夜の都市の画像を生成して」
AIはまずlist_image_modelsでスペックを確認し、次に create_image_generationを呼び出してtaskIdを取得し、その後 get_image_generationをポーリングして画像URLを取得します。
例6: テキストから動画を生成
質問例: 「BasicRouterを使って宇宙の星雲の5秒間の動画を生成して」
AIはまずlist_video_modelsでスペックを確認し、次に create_video_generation(video_type=1、duration=5)を呼び出し、 taskIdを取得した後にget_video_generationをポーリングします。
FAQ
ツール呼び出しが「missing BasicRouter API Key」で失敗する
claude mcp addを--headerなしで実行した、またはキーが間違っている- JSON設定ファイルを直接編集している場合、
headersフィールド名が間違っている(X-Basicrouter-Api-Keyである必要があります) - ローカル実行時に
BASICROUTER_API_KEY環境変数が設定されていない
ツール呼び出しが「BasicRouter returned 401 unauthorized」で失敗する
APIキー自体が間違っているか、期限切れです — BasicRouterのコンソールで再生成してください。
ClaudeがBasicRouterのツールを呼び出さない場合は?
claude mcp listで接続が✓ Connectedと表示されているか確認してください- 接続状態を確認する:
claude mcp get basicrouter - 明示的に指示してみてください: 「BasicRouterの
chat_completionツールを使ってclaude-sonnet-5を呼び出して…」
画像/動画生成がずっとpendingのままになる
- 画像タスクは
get_image_generation、動画タスクはget_video_generationでポーリングしてください — なお、実行中の動画タスクのstatusは"running"であり、"pending"ではないことに注意してください - 生成には時間がかかります。通常は数秒から数十秒、動画の場合はさらに長くなります
callback_urlを指定していた場合、完了時にコールバックが呼び出されるため、ポーリングは不要です
list_image_models / list_video_modelsがエラーになる
どちらのツールもそれ自体はクレジットを消費しません — エラーは通常、キーまたはネットワークの問題を示しています。まず list_modelsが正常に動作するか確認してください。
注意事項
- ヘッダー名:MCPは
X-Basicrouter-Api-Key経由でキーを渡します。 - クレジットの消費:
chat_completion/create_message/create_response/create_image_generation/create_video_generationはすべてアカウントのクレジットを消費します — 事前に残高を確認したい場合はget_balanceを先に呼び出してください。 - 生成前にスペックを確認:model、resolution、ratio、count、duration、video_typeなどの画像/動画生成パラメータは、
list_image_models/list_video_modelsが公開している値のみ使用できます。 それ以外の値を指定するとエラーになります。 - ストリーミング非対応:3つのチャットエンドポイントはいずれもストリーミングに対応していません — 各エンドポイントは完全な結果を一度に返します。
- ステートレス設計:各リクエストは独立しており、セッションは保存されません。複数ターンの会話には
create_responseのprevious_response_idを使うか、messagesで 自分で履歴を管理してください。
