AIエージェント&MCPクライアント向け
Nano Banana MCP Server Claude・Cursor・Gemini CLI対応
Claude DesktopやClaude Codeなど、あらゆるMCPクライアントから直接AI画像や動画を生成可能。料金はBananaBananaの残高から都度引き落とされます。サブスクリプション契約は不要です。
1つのエンドポイントで、すべてのモデルを利用
BananaBanana の全生成スタックをエージェント用ツールとして提供する、リモートの Model Context Protocol サーバーです。Google の Nano Banana 2 Lite / 2 / 2.1 / Pro 画像($0.03 から)、Veo 3.1 / Fast / Lite 動画、そして音声付きの Gemini Omni Flash($0.09–1.00)、Wan 3.0に対応しています。エージェントはリアルタイムの料金を確認し、高額な生成の前にコストを承認することができ、すべての生成結果はウェブサイトと同じ履歴と残高に反映されます。
- エンドポイント:
https://bananabanana.pro/api/mcp(Streamable HTTP) - 認証:OAuth 2.1 でのサインイン(claude.ai などコネクター型クライアント)、またはプロフィールの Bearer API キー
- レート制限:1キーあたり毎分 20 ツール呼び出し。オプションでキーごとの1日あたりの利用上限額を設定可能
- MCPクライアントをお持ちでない場合:同じエンドポイントはHTTPS経由のシンプルな JSON-RPC です。SDKなしで curl、Python、TypeScriptから直接呼び出しが可能です。
- 生成の失敗やコンテンツフィルターによる却下が発生した場合は、自動的に返金されます。
- bananabanana-mcp GitHub リポジトリに、公開ドキュメント、
server.json、およびコピペで使えるクライアントのサンプルコードを用意しています。
3つのステップで接続
1. アカウントを作成して残高をチャージします。2. 「プロフィール」→「MCP API Keys」でキーを作成します(一度だけ表示されます)。3. お使いのクライアントにサーバーを追加します:
claude.ai・Claude Desktop・モバイル(OAuth — コピー不要)
Settings → Connectors → Add custom connector で https://bananabanana.pro/api/mcp を貼り付け、Connect を押します。Claude が自動で登録し、BananaBanana の画面でアクセスを承認すると、生成はサインインしたアカウントの残高から引き落とされます。
Settings → Connectors → Add custom connector
URL: https://bananabanana.pro/api/mcp
→ Add → Connect → approve access on bananabanana.pro同じ流れは MCP 認可に対応したどのクライアントでも使えます(MCP Inspector、ChatGPT・Grok のウェブコネクター、Claude Code)。接続済みアプリはプロフィールに一覧表示され、いつでも解除できます。
Claude Code
# with an API key
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp \
--header "Authorization: Bearer bb_live_YOUR_KEY"
# or with OAuth — no key, sign in in the browser
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp
# then run /mcp inside Claude Code and pick "Authenticate"Claude Desktop
claude_desktop_config.json(Settings → Developer → Edit Config)に追加します(mcp-remote ブリッジを使用するため Node.js が必要です):
{
"mcpServers": {
"bananabanana": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://bananabanana.pro/api/mcp",
"--header", "Authorization: Bearer bb_live_YOUR_KEY"
]
}
}
}Cursor
グローバル設定の ~/.cursor/mcp.json、またはプロジェクト内の .cursor/mcp.json に追加します。キーをファイル内に直接記述したくない場合は、生の値の代わりに ${env:BB_API_KEY} を使用してください:
{
"mcpServers": {
"bananabanana": {
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
}
}
}
}Cursor での具体的な手順や、挙動のクセ、デモキーを使った実演は、こちらのガイドをご覧ください:Cursor での画像生成ガイド。
VS Code / GitHub Copilot
ワークスペース内の .vscode/mcp.json(またはユーザー設定の settings.json)に追加します。VS Code が一度キーの入力を求め、その後は暗号化して保存します:
{
"servers": {
"bananabanana": {
"type": "http",
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer ${input:bb-api-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "bb-api-key",
"description": "BananaBanana API key (bb_live_…)",
"password": true
}
]
}VS Code / Copilot での具体的な手順や、挙動のクセ、デモキーを使った実演は、こちらのガイドをご覧ください:VS Code での画像生成:Copilot MCP セットアップガイド。
Windsurf
~/.codeium/windsurf/mcp_config.json に追加します:
{
"mcpServers": {
"bananabanana": {
"serverUrl": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
}
}
}
}Windsurf MCP Setup: Generate Images in Cascade
Cline
{
"mcpServers": {
"bananabanana": {
"type": "streamableHttp",
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
},
"disabled": false,
"autoApprove": ["list_models", "get_account", "get_result"]
}
}
}Cline MCP Server: Generate Images From Your Editor
その他のMCPクライアント(生の JSON-RPC)
POST https://bananabanana.pro/api/mcp
Authorization: Bearer bb_live_YOUR_KEY
Content-Type: application/json
Accept: application/json, text/event-stream
{"jsonrpc":"2.0","id":1,"method":"tools/list"}ping とディスカバリ系のリスト(tools/list、prompts/list、resources/list)以外のメソッドはすべて認証情報が必要で、initialize も例外ではありません。未認証のハンドシェイクは WWW-Authenticate チャレンジ付きの 401 を返します。この非対称性は不具合ではなく意図的なものです。コネクタークライアントはこのチャレンジによって、このサーバーが OAuth を使うことを検出します。キーなしでツールカタログを読むことは引き続き可能です。
詳しいチュートリアルをご希望ですか?Claude Code での画像生成では、Claude のセットアップ方法を4つの実用例と実際の発生コストを交えて最初から最後まで詳しく解説しています。
クライアント互換性
MCP はオープンなプロトコルです。Streamable HTTP に対応し、Authorization ヘッダーを付与できるクライアントであれば、どれでも接続可能です。各ベンダーの公式ドキュメントに照らし合わせて検証した現在の状況は以下の通りです(最終確認:2026年8月):
| クライアント | 現在利用可能? | 接続方法 |
|---|---|---|
| Claude Code | 可能 | claude mcp add --transport http … --header |
| Claude Desktop / claude.ai | 可能 | カスタムコネクター:URL を貼って OAuth でサインイン(ヘッダーのキーも可、ベータ) |
| Cursor | 可能 | .cursor/mcp.json:url + headers、シークレットは ${env:…} 経由(上記のコードスニペットを参照) |
| VS Code / GitHub Copilot | 可能 | .vscode/mcp.json:type: "http" + url + headers。キーを promptString 入力として保存(VS Code が初回に一度だけ確認し、暗号化して保存) |
| ChatGPT desktop / Codex CLI / IDE | 可能 | 共通の ~/.codex/config.toml:url + bearer_token_env_var(キーは環境変数に)。ChatGPT web のコネクターはキー貼り付けではなく OAuth でサインインします |
| Gemini CLI | 可能 | settings.json 内の httpUrl + headers |
| Windsurf | 可能 | serverUrl + headers in mcp_config.json (Devin Local agent: url + transport: "http"). Setup guide |
| Cline | 可能 | type: "streamableHttp" + url + headers in the MCP settings JSON. Setup guide |
| xAI API (Grok) | 可能 | サーバーに送信される server_url と authorization 値を持つ MCPツール Setup guide |
| grok.com (web) | 一部対応 | カスタムコネクターはサーバー URL を受け付けます(Connectors → New Connector → Custom)。サインインは当サーバーの OAuth 2.1 を経由します |
| ZCode (GLM-5.2) | 可能 | Settings → MCP Servers → type HTTP + Authorization ヘッダー。Claude Code 内部の GLM-5.2 は Claude Code の設定を引き継ぎます。 |
| その他すべての環境 | 可能 | HTTPS経由の生の JSON-RPC — 下記の コードからの呼び出し を参照 |
Codex の設定例 — ~/.codex/config.toml に追加し、BB_API_KEY=bb_live_… をエクスポートします:
[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"Codex の詳細なチュートリアル(単一の設定ファイルから CLI、IDE拡張、ChatGPT デスクトップアプリを連携させる方法、挙動のクセ、デモキーの実演など)はこちら:Codex MCP セットアップ:1つの config.toml から画像と動画を生成。
コードから直接呼び出す
MCP クライアントをお使いになりませんか? その必要はありません。SDK すら不要です。サーバーは HTTPS 経由のシンプルな JSON-RPC 2.0 です:1つの POST エンドポイント、Bearer ヘッダー、単一の JSON レスポンスのみ。ステートレスであるため、セッションハンドシェイクなどの複雑な管理は不要です。curl、Python、TypeScript、その他 HTTP 送信が可能なあらゆる環境から、最初の最初のリクエストとして直接 tools/call を呼び出すことができます。
curl
# start an image generation (charges one image, $0.03 on the default Lite model)
curl -s https://bananabanana.pro/api/mcp \
-H "Authorization: Bearer bb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
"name":"generate_image",
"arguments":{"prompt":"studio photo of a ceramic mug on linen, soft daylight"}}}'
# → result.structuredContent.job_id = "cmxy…"
# fetch the result (long-polls server-side up to 30 s; free)
curl -s https://bananabanana.pro/api/mcp \
-H "Authorization: Bearer bb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"get_result",
"arguments":{"job_id":"cmxy…","wait_seconds":30}}}'Python
requests のみを使用 — MCPライブラリは不要:
import requests
MCP = "https://bananabanana.pro/api/mcp"
HEADERS = {"Authorization": "Bearer bb_live_YOUR_KEY"}
def call(tool, **args):
r = requests.post(MCP, headers=HEADERS, json={
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": tool, "arguments": args},
})
r.raise_for_status()
return r.json()["result"]["structuredContent"]
job = call("generate_image", prompt="watercolor painting of a lighthouse at dawn")
result = call("get_result", job_id=job["job_id"], wait_seconds=30)
while result["status"] == "processing":
result = call("get_result", job_id=job["job_id"], wait_seconds=30)
print(result["files"][0]["url"], "cost:", result["cost_charged_usd"])TypeScript / Node.js
依存関係ゼロ — 組み込みの fetch を使用(Node 18+、Deno、Bun、ブラウザ):
const MCP = "https://bananabanana.pro/api/mcp";
async function call(tool: string, args: Record<string, unknown>) {
const res = await fetch(MCP, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BB_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0", id: 1, method: "tools/call",
params: { name: tool, arguments: args },
}),
});
const { result } = await res.json();
return result.structuredContent;
}
const job = await call("generate_image", {
prompt: "isometric 3D render of a tiny greenhouse at golden hour",
});
let out = await call("get_result", { job_id: job.job_id, wait_seconds: 30 });
while (out.status === "processing") {
out = await call("get_result", { job_id: job.job_id, wait_seconds: 30 });
}
console.log(out.files[0].url, "cost:", out.cost_charged_usd);スクリプト作成時に知っておくべき重要なディテール:
- すべてのツールレスポンスには、機械可読な
result.structuredContentと、テキストブロックであるresult.contentの2つの形式で同じ JSON が含まれています。解析しやすい方を選択してください。 - 動画(および複数画像のバッチ生成)は2ステップの呼び出しになります。最初の
generate_videoは見積もり料金を返し、この時点では課金されません。生成を開始するには、見積もられた金額をconfirm_costに設定して再度呼び出します。 - 生成の呼び出し時に
idempotency_key(べき等性キー)を渡すことで、ネットワークエラーによる再試行時の二重課金を防ぎます。 tools/listは APIキーなしで動作するため、アカウントを作成する前にスキーマの全容を確認できます。なお、ツール呼び出しは1キーにつき1分あたり20回に制限されています。
10個の専用タスクツール
| ツール | コスト | 概要 |
|---|---|---|
| list_models | 無料 | 解像度、各種制約、およびリアルタイム of ユニット単価を含む全モデルのリストを取得。 |
| get_account | 無料 | 残高、キーごとの利用上限額、および当日の使用状況を取得。 |
| top_up | 無料 | 残高を追加する安全なリンクを作成します。OAuthは入金専用アクセス、APIキーはプロフィールを使用します。 |
| generate_image | $0.03–$0.20 | Nano Banana 2 Lite / 2 / 2.1 / Pro によるテキストからの画像生成(最大4K)。job_id を返します。 |
| edit_image | 画像1枚分の料金 | テキストの指示に従って生成済みの画像を微調整(マルチターン編集)。 |
| generate_video | $0.10–$6.00 | Veo 3.1ファミリーまたは Omni Flash(常に音声付き)、Wan 3.0による動画生成。開始フレームや参照画像からの生成にも対応。初回呼び出し時は必ず正確な見積もりを返します。 |
| edit_video | $0.09–1.00 | Omni Flash による動画から動画への編集:自分のクリップまたは公開 URL を指定し、スタイル変更・オブジェクト差し替え・ライティング変更が可能。最初の10秒、音声付き720p。 |
| generate_speech | $0.01 / 200文字 | 1人または2人話者のWAV音声を生成します。開始した200文字ごとに課金されます。 |
| get_result | 無料 | ジョブのポーリング:ホストされたメディアの URL(24時間有効なリンク)、請求コスト、残り残高、インライン画像プレビューを取得。 |
| list_generations | 無料 | 最近の生成履歴のリストを取得(ウェブサイトと共有)。 |
2026年、MCP経由の生成はいくらかかる?
- 料金はウェブサイトと同じソースから、
list_modelsによってリアルタイムに配信されます。 - 動画(および複数画像のバッチ生成)の呼び出しは、初回は見積もり料金を返し、課金は発生しません。エージェントが
confirm_costを指定して再度呼び出すことで生成が開始されます。 - すべての結果には、実際に請求された
cost_charged_usdと残り残高balance_remaining_usdが含まれます。 - プロバイダー側のエラーやコンテンツフィルターによる却下が発生した場合は自動的に返金されます(ウェブアプリと同様のポリシーが適用されます)。
- オプションの
idempotency_key(べき等性キー)を使用することで、再試行時の二重課金を完全に防ぎます。
実際の会話フロー
→ generate_video {"prompt": "drone shot over a misty pine forest", "model": "veo-3.1-fast"}
← {"status": "confirmation_required", "quoted_cost_usd": 0.70, ...}
→ generate_video {..., "confirm_cost": 0.70}
← {"job_id": "cmxy…", "status": "processing", "cost_charged_usd": 0.70, "balance_remaining_usd": 12.40}
→ get_result {"job_id": "cmxy…"}
← {"status": "completed", "files": [{"url": "https://…"}], "cost_charged_usd": 0.70}メディアURLとセキュリティ
- 生成結果の URL は署名付きで24時間有効です。メディアデータ自体はお客様のアカウントに保持されます。新しいリンクを取得するには再び
get_resultを呼び出すか、ウェブサイトから直接ダウンロードしてください。 - APIキーはハッシュ化されて保存され、作成時に一度だけ表示されます。無効化(リボーク)はプロフィールからいつでも実行可能です。
- OAuth 接続のアクセストークンは1時間有効、リフレッシュトークンは更新のたびにローテーションされます。保存されるのはハッシュのみで、このサーバー専用です。プロフィールで接続を解除すると即座に無効化されます。
- キーごとの使用履歴(使用されたツール、モデル、コスト、プロンプトのプレビュー)は、プロフィール → MCP API Keys から確認できます。
- MCP 経由の生成履歴は、ウェブでの生成履歴や分析データ(アナリティクス)と同じ場所に表示されます。
x402:アカウント不要、USDC で呼び出しごとに支払い
x402 は、エージェントがステーブルコインで 1 回のリクエストごとに支払えるオープンプロトコルです。MCP サーバーとは別のエンドポイント POST /api/x402 を使います。アカウント、API キー、チャージは不要です。
- ツール名と引数を送信すると、サーバーはその呼び出しの正確な価格とともに
402を返します。 - Base ネットワーク上の USDC で支払いに署名し、
X-PAYMENTヘッダーを付けてリクエストを再送します。 - 画像と音声は同じレスポンスで返ります。動画は
job_idを返すので、GET /api/x402/result/{jobId}で無料で結果を確認できます。
利用できるツール:generate_image、generate_speech、generate_video。価格はウェブスタジオや MCP と同じで、呼び出しの料金は生成の料金そのもの。最低チャージ額はありません。
支払い済みの動画が失敗した場合、支払者には同額のクレジットトークンが発行されます(有効期間 90 日)。次回以降の呼び出しで refund_token として渡してください。オンチェーンでの返金はありません。最新価格を含む機械可読カタログは GET /api/x402 にあります。
Nano Banana MCPサーバーについての質問
Nano Banana MCPサーバーとは何ですか?
AIエージェントに、Nano Bananaの画像モデルを動画・音声モデルとあわせてツールとして提供するリモートMCPサーバーです。エージェントがgenerate_imageを呼び出すと、サーバーが生成を実行し、完成したファイルのリンクを返します。BananaBananaがhttps://bananabanana.pro/api/mcpでホストしているため、ローカルでのインストールや起動は不要です。生成ごとの料金はWebスタジオと同じ価格で、BananaBananaの残高から差し引かれます。
Gemini CLIに追加するには?
Gemini CLIはHTTPでリモートMCPサーバーに接続するので、Gemini CLI MCPのセットアップはコマンド1つで完了します: gemini mcp add --transport http --scope user bananabanana https://bananabanana.pro/api/mcp -H "Authorization: Bearer YOUR_KEY"。フォルダを信頼するかCLIに聞かれたら許可し、gemini mcp listを実行してサーバーがConnectedと表示されることを確認してください。--scope userを付けるとキーはプロジェクトの.gemini/settings.jsonではなく~/.gemini/settings.jsonに保存されるため、リポジトリに入り込むことはありません。
Claude Desktop、Claude Code、Cursorに接続するには?
claude.aiとClaude Desktopでは、Settings → Connectors → Add custom connectorを開き、https://bananabanana.pro/api/mcpを貼り付けてOAuthでサインインします。キーをコピーする必要はありません。Claude Codeではclaude mcp add --transport http bananabanana https://bananabanana.pro/api/mcpを実行し、/mcpと入力してAuthenticateを選ぶか、--headerでAPIキーを渡します。Cursorでは、URLとAuthorizationヘッダーを.cursor/mcp.jsonに追加します。これらを含む各クライアント用の貼り付けるだけの設定は、上のクイックスタートにあります。
1回の呼び出しにいくらかかりますか?
料金は接続ではなく生成ごとに発生します。画像は$0.03〜$0.20、動画はモデル・長さ・解像度・音声の有無に応じて$0.10〜$6.00、音声合成は200文字ごと(端数切り上げ)に$0.01です。list_models、get_result、get_accountなどの補助ツールは無料です。動画や複数枚の画像の呼び出しは、まず正確な見積もりを返し、エージェントが確定するまで一切課金しません。失敗した生成やフィルターで弾かれた生成は、自動的に残高へ返金されます。
Googleアカウントやサブスクリプションは必要ですか?
不要です。Googleアカウントもモデル提供元のキーも要らず、前払い残高のあるBananaBananaアカウント(メールアドレスだけで登録可)があれば使えます。サブスクリプションはなく、残高に有効期限もありません。キー方式のクライアントはプロフィールで作成したBananaBananaのAPIキーを使い、コネクター型のクライアントはOAuthでサインインします。x402で支払うエージェントならアカウントさえ不要で、呼び出しごとにBaseネットワーク上のUSDCで支払います。
エージェントはどのモデルを使えますか?
画像:Nano Banana 2 Lite(デフォルト)、最大4KのNano Banana 2とNano Banana Pro、さらにGPT Image 2.5とQwen Image 3.0 Pro。Nano Banana 2.1は最大8:1のパノラマ比率にも対応。動画:Veo 3.1、Veo 3.1 Fast、Veo 3.1 Lite、Gemini Omni Flash、Wan 3.0、Grok Imagine Video 1.5。音声:30種類の声を持つGemini 3.1 Flash TTS。list_modelsツールが価格・解像度・制限つきの最新リストを返すので、エージェントは常に現在のカタログに沿って動作します。
この画像生成MCPサーバーは動画にも対応していますか?
はい。同じ接続で、画像生成(generate_image、edit_image)にも動画にも使えるMCPサーバーです。generate_videoはテキスト、開始フレーム、参照画像からクリップを作成し、edit_videoは既存のクリップのスタイルを変えたり、続きを延長したりします。1人または2人の話者によるナレーション用にgenerate_speechもあります。支払いはすべて1つの残高から行われ、画像と動画はWebスタジオと同じ履歴に残ります。