Untuk agen AI & klien MCP
BananaBanana MCP Server
Hasilkan gambar dan video AI langsung dari Claude Desktop, Claude Code, dan klien MCP lainnya — biaya ditagih per pembuatan dari saldo BananaBanana Anda. Tanpa berlangganan.
Satu endpoint, semua model
Server remote Model Context Protocol yang mengekspos seluruh stack pembuatan BananaBanana sebagai tool untuk agen: gambar Google Nano Banana 2 Lite / 2 / Pro (mulai dari $0.03), video Veo 3.1 / Fast / Lite, dan Gemini Omni Flash dengan suara (tarif tetap $1.00). Agen Anda dapat melihat harga secara langsung, mengonfirmasi biaya sebelum menjalankan proses yang mahal, dan setiap hasil pembuatan akan masuk ke riwayat dan saldo yang sama dengan versi situs web.
- Endpoint:
https://bananabanana.pro/api/mcp(Streamable HTTP) - Autentikasi: Bearer API key dari profil Anda (dukungan OAuth 2.1 direncanakan segera)
- Batas panggilan: 20 panggilan tool per menit per key; batas pengeluaran harian opsional per key
- Tidak menggunakan klien MCP? Endpoint yang sama adalah JSON-RPC murni melalui HTTPS — panggil langsung dari curl, Python, atau TypeScript tanpa SDK apa pun
- Pembuatan yang gagal atau terkena filter keamanan akan dikembalikan (refund) secara otomatis
- Buka dokumentasi,
server.json, lalu salin-tempel contoh klien di repositori GitHub bananabanana-mcp
Terhubung dalam tiga langkah
1. Buat akun baru dan isi saldo Anda. 2. Di bagian Profil → MCP API Keys, buat key baru (hanya ditampilkan sekali). 3. Tambahkan server ke klien Anda:
Claude Code
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp \
--header "Authorization: Bearer bb_live_YOUR_KEY"Claude Desktop
Tambahkan ke claude_desktop_config.json (Settings → Developer → Edit Config); memerlukan Node.js untuk modul penghubung (bridge) mcp-remote:
{
"mcpServers": {
"bananabanana": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://bananabanana.pro/api/mcp",
"--header", "Authorization: Bearer bb_live_YOUR_KEY"
]
}
}
}Cursor
Tambahkan ke ~/.cursor/mcp.json (global) atau .cursor/mcp.json di dalam proyek; untuk menjaga kerahasiaan key agar tidak tertulis langsung di file, gunakan ${env:BB_API_KEY} sebagai gantinya:
{
"mcpServers": {
"bananabanana": {
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
}
}
}
}Panduan lengkap Cursor, termasuk kendala teknis dan demo dengan key aktif: Menghasilkan Gambar di Cursor.
VS Code / GitHub Copilot
Tambahkan ke .vscode/mcp.json di dalam workspace (atau settings.json pengguna Anda); VS Code akan meminta key sekali dan menyimpannya dalam bentuk enkripsi:
{
"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
}
]
}Panduan lengkap VS Code / Copilot, termasuk kendala teknis dan demo dengan key aktif: Menghasilkan Gambar di VS Code: Panduan Penyiapan Copilot MCP.
Windsurf
Tambahkan ke ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"bananabanana": {
"serverUrl": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
}
}
}
}Klien MCP lainnya (JSON-RPC murni)
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"}Lebih menyukai panduan terperinci? Tutorial Menghasilkan Gambar di Claude Code membahas penyiapan Claude dari awal hingga akhir, lengkap dengan empat skenario penggunaan nyata beserta rincian biayanya.
Kompatibilitas klien
MCP adalah protokol terbuka: klien apa pun yang mendukung Streamable HTTP dan dapat menyertakan header Authorization akan terhubung. Status saat ini, diverifikasi berdasarkan dokumentasi resmi masing-masing vendor (terakhir diperiksa pada Juli 2026):
| Klien | Berfungsi? | Cara |
|---|---|---|
| Claude Code | ya | claude mcp add --transport http … --header |
| Claude Desktop / claude.ai | ya | konektor kustom dengan header permintaan (beta, sedang diluncurkan) atau bridge mcp-remote |
| Cursor | ya | .cursor/mcp.json: url + headers, rahasia (secrets) via ${env:…} — lihat cuplikan kode di atas |
| VS Code / GitHub Copilot | ya | .vscode/mcp.json: type: "http" + url + headers; simpan key sebagai input promptString — VS Code akan memintanya sekali dan menyimpannya secara terenkripsi |
| ChatGPT desktop / Codex CLI / IDE | ya | bersama ~/.codex/config.toml: url + bearer_token_env_var (masukkan key ke dalam env var). Pengecualian untuk konektor web ChatGPT — mereka menggunakan autentikasi OAuth, bukan key yang ditempel |
| Gemini CLI | ya | httpUrl + headers di dalam settings.json |
| xAI API (Grok) | ya | Tool MCP dengan server_url dan nilai authorization yang dikirim ke server |
| grok.com (web) | sebagian | konektor kustom membutuhkan URL server (Connectors → New Connector → Custom); dokumentasi tidak menyebutkan apakah header API-key yang ditempel didukung, sehingga jalur ini mungkin memerlukan dukungan OAuth 2.1 kami yang akan datang |
| ZCode (GLM-5.2) | ya | Settings → MCP Servers → tipe HTTP + header Authorization; GLM-5.2 di dalam Claude Code mewarisi konfigurasi Claude Code |
| Klien lainnya | ya | JSON-RPC murni melalui HTTPS — lihat bagian Panggil lewat kode di bawah |
Contoh Codex — tambahkan ke ~/.codex/config.toml dan ekspor BB_API_KEY=bb_live_…:
[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"Panduan lengkap Codex — CLI, ekstensi IDE, dan ChatGPT desktop dari satu konfigurasi, termasuk kendala teknis dan demo dengan key aktif: Penyiapan MCP Codex: Gambar dan Video dari Satu config.toml.
Panggil lewat kode
Tidak menggunakan klien MCP? Anda tidak membutuhkannya — dan Anda juga tidak memerlukan SDK. Server menggunakan protokol JSON-RPC 2.0 standar melalui HTTPS: satu endpoint POST, header Bearer, dan satu respons JSON tunggal. Protokol ini bersifat stateless, sehingga tidak ada sesi jabat tangan (handshake) yang perlu dikelola — tools/call dapat langsung berfungsi pada permintaan pertama dari curl, Python, TypeScript, atau apa pun yang bisa mengirim permintaan HTTP.
curl
# start an image generation (charges one image, $0.06 on the default 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
Hanya menggunakan requests — tanpa pustaka (library) 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
Tanpa dependensi — fetch bawaan (Node 18+, Deno, Bun, browser):
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);Detail penting saat Anda membuat skrip:
- Setiap respons tool membawa JSON yang sama dua kali: format yang mudah dibaca mesin
result.structuredContentdan blok teks dalamresult.content— silakan parse bagian mana yang lebih mudah bagi Anda. - Pembuatan video (dan batch multi-gambar) adalah proses dua langkah: panggilan
generate_videopertama akan mengembalikan penawaran harga dan tidak mengenakan biaya apa pun; ulangi panggilan tersebut dengan menyertakanconfirm_costyang nilainya disesuaikan dengan harga penawaran untuk memulai. - Sertakan
idempotency_keypada panggilan pembuatan — percobaan ulang jaringan (retry) tidak akan pernah menagih biaya ganda. tools/listdapat berfungsi tanpa key, sehingga Anda dapat mempelajari seluruh skema sebelum membuat akun. Panggilan tool dibatasi hingga 20 kali per menit untuk setiap key.
Tujuh tool siap pakai
| Tool | Biaya | Fungsi |
|---|---|---|
| list_models | gratis | Semua model dengan harga per unit langsung, resolusi, dan batasannya. |
| get_account | gratis | Saldo, batas pengeluaran key, dan penggunaan hari ini. |
| generate_image | $0.03–$0.20 | Text-to-image pada Nano Banana 2 Lite / 2 / Pro, hingga 4K. Mengembalikan job_id. |
| edit_image | harga satu gambar | Menyempurnakan gambar yang sudah jadi dengan instruksi teks (pengeditan multi-turn). |
| generate_video | $0.10–$4.40 | Keluarga model Veo 3.1 atau Omni Flash (selalu disertai suara). Selalu menampilkan penawaran biaya yang tepat terlebih dahulu. |
| get_result | gratis | Memantau tugas (polling): URL media yang dihosting (tautan aktif 24 jam), biaya yang dikenakan, sisa saldo, dan pratinjau gambar langsung. |
| list_generations | gratis | Riwayat pembuatan terbaru — sama dengan di situs web. |
Transparansi biaya, sudah terintegrasi
- Harga disajikan secara langsung oleh
list_models— sumber data yang sama dengan yang digunakan situs web. - Setiap pembuatan video (dan batch multi-gambar) awalnya hanya mengembalikan penawaran harga dan tidak memungut biaya; agen akan mengulangi panggilan dengan menyertakan
confirm_costuntuk memulai. - Setiap hasil menyertakan nilai
cost_charged_usddanbalance_remaining_usd. - Kegagalan sistem hulu (upstream) dan penolakan filter konten akan dikembalikan (refund) secara otomatis — kebijakan yang sama dengan aplikasi web.
- Opsi
idempotency_keymenjamin bahwa percobaan ulang (retry) tidak akan pernah menagih biaya ganda.
Percakapan nyata
→ 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 Media & Keamanan
- URL hasil pembuatan telah ditandatangani secara digital (signed) dan aktif selama 24 jam; media itu sendiri tetap tersimpan di akun Anda — panggil
get_resultlagi untuk mendapatkan tautan baru, atau unduh langsung dari situs web. - API key disimpan dalam bentuk hash dan hanya ditampilkan sekali saat dibuat; Anda dapat mencabut (revoke) aksesnya kapan saja di profil Anda.
- Log penggunaan untuk setiap key (tool, model, biaya, pratinjau prompt) dapat dilihat di Profil → MCP API Keys.
- Pembuatan media melalui MCP akan muncul di riwayat pembuatan dan analitik yang sama dengan pembuatan versi web.
Siap menghubungkan agen Anda?
Buat key baru, tambahkan satu baris konfigurasi — agen Anda siap menghasilkan media kelas studio dalam hitungan menit.
Dapatkan API key Anda