Dành cho AI agent & MCP client

Nano Banana MCP Server cho Claude, Cursor và Gemini CLI

Tạo hình ảnh và video AI trực tiếp từ Claude Desktop, Claude Code và bất kỳ MCP client nào khác — tính phí theo mỗi lần tạo từ số dư BananaBanana của bạn. Không cần đăng ký gói.

Tạo API keyHình ảnh từ $0.03 · video từ $0.10
01GIỚI THIỆU

Một endpoint, mọi mô hình

Một máy chủ Model Context Protocol từ xa cung cấp toàn bộ bộ công cụ tạo của BananaBanana dưới dạng các công cụ dành cho agent: hình ảnh Google Nano Banana 2 Lite / 2 / 2.1 / Pro (chỉ từ $0.03), video Veo 3.1 / Fast / Lite và Gemini Omni Flash, Wan 3.0 có âm thanh ($0.09–1.00). Agent của bạn sẽ thấy giá trực tiếp, xác nhận chi phí trước khi chạy các tác vụ tốn kém, và mọi lượt tạo sẽ được lưu vào cùng một lịch sử và số dư như trên trang web.

  • Endpoint: https://bananabanana.pro/api/mcp (Streamable HTTP)
  • Xác thực: đăng nhập bằng OAuth 2.1 (claude.ai và các client dạng connector khác) hoặc khóa API Bearer từ hồ sơ của bạn
  • Giới hạn tần suất: 20 lượt gọi công cụ mỗi phút cho mỗi khóa; tùy chọn giới hạn chi tiêu hàng ngày cho từng khóa
  • Không có MCP client? Cùng một endpoint là JSON-RPC thuần túy qua HTTPS — gọi nó từ curl, Python hoặc TypeScript mà không cần bất kỳ SDK nào
  • Các lượt tạo thất bại hoặc bị chặn bởi bộ lọc sẽ tự động được hoàn tiền
  • Mở tài liệu, server.json và sao chép các ví dụ về client trong kho lưu trữ GitHub bananabanana-mcp
MCP clientClaude Code / Desktop, Cursor,VS Code, Codex, bất kỳ agent nàoOAuth / khóa API/api/mcpbananabanana.proStreamable HTTP · 10 công cụtạoNhóm mô hìnhNano Banana · Veo 3.1Omni Flashtrên mỗi đơn vịSố dư của bạnthanh toán theo mỗi lần tạotự động hoàn tiền khi thất bại
02BẮT ĐẦU NHANH

Kết nối chỉ trong ba bước

1. Tạo tài khoản và nạp số dư. 2. Trong Hồ sơ → MCP API Keys tạo một khóa (chỉ hiển thị một lần). 3. Thêm máy chủ vào client của bạn:

claude.ai, Claude Desktop, di động (OAuth — không cần sao chép gì)

Settings → Connectors → Add custom connector, dán https://bananabanana.pro/api/mcp rồi nhấn Connect. Claude tự đăng ký, bạn phê duyệt quyền truy cập trên màn hình BananaBanana, và các lần tạo sẽ trừ vào tài khoản bạn đã đăng nhập.

Settings → Connectors → Add custom connector
URL: https://bananabanana.pro/api/mcp
→ Add → Connect → approve access on bananabanana.pro

Cùng luồng đó hoạt động với mọi client hỗ trợ ủy quyền MCP — MCP Inspector, connector web của ChatGPT và Grok, Claude Code. Ứng dụng đã kết nối được liệt kê trong hồ sơ và có thể ngắt bất cứ lúc nào.

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

Thêm vào claude_desktop_config.json (Settings → Developer → Edit Config); yêu cầu Node.js cho cầu nối mcp-remote:

{
  "mcpServers": {
    "bananabanana": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote", "https://bananabanana.pro/api/mcp",
        "--header", "Authorization: Bearer bb_live_YOUR_KEY"
      ]
    }
  }
}

Cursor

Thêm vào ~/.cursor/mcp.json (toàn cục) hoặc .cursor/mcp.json trong dự án; để không để lộ khóa trong tệp, hãy sử dụng ${env:BB_API_KEY} thay vì giá trị trực tiếp:

{
  "mcpServers": {
    "bananabanana": {
      "url": "https://bananabanana.pro/api/mcp",
      "headers": {
        "Authorization": "Bearer bb_live_YOUR_KEY"
      }
    }
  }
}

Hướng dẫn đầy đủ về Cursor, bao gồm các lưu ý nhỏ và bản demo khóa trực tiếp: Tạo hình ảnh trong Cursor.

VS Code / GitHub Copilot

Thêm vào .vscode/mcp.json trong không gian làm việc (hoặc settings.json người dùng của bạn); VS Code sẽ nhắc nhập khóa một lần và lưu trữ khóa đó dưới dạng mã hóa:

{
  "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
    }
  ]
}

Hướng dẫn đầy đủ về VS Code / Copilot, bao gồm các lưu ý nhỏ và bản demo khóa trực tiếp: Tạo hình ảnh trong VS Code: Hướng dẫn thiết lập Copilot MCP.

Windsurf

Thêm vào ~/.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

Bất kỳ MCP client nào khác (JSON-RPC thuần)

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"}

Mọi phương thức trừ ping và các danh sách discovery (tools/list, prompts/list, resources/list) đều cần thông tin xác thực — kể cả initialize: một lần bắt tay chưa xác thực sẽ trả về 401 kèm challenge WWW-Authenticate. Sự bất đối xứng này là có chủ đích, không phải lỗi: chính challenge đó giúp client dạng connector nhận ra máy chủ này dùng OAuth. Việc đọc danh mục công cụ mà không có khóa vẫn hoạt động.

Bạn muốn xem hướng dẫn chi tiết? Bài viết hướng dẫn Tạo hình ảnh trong Claude Code sẽ bao gồm việc thiết lập Claude từ đầu đến cuối, với bốn trường hợp sử dụng thực tế và chi phí thực tế của chúng.

03TƯƠNG THÍCH VỚI

Khả năng tương thích của client

MCP là một giao thức mở: bất kỳ client nào hỗ trợ Streamable HTTP và có thể đính kèm header Authorization đều có thể kết nối. Trạng thái hiện tại, được xác minh theo tài liệu chính thức của từng nhà cung cấp (lần kiểm tra cuối cùng vào tháng 8 năm 2026):

ClientHoạt động ngay hôm nay?Cách kết nối
Claude Codecóclaude mcp add --transport http … --header
Claude Desktop / claude.aicóconnector tùy chỉnh: dán URL và đăng nhập bằng OAuth (khóa trong header cũng được, bản beta)
Cursorcó.cursor/mcp.json: url + headers, khóa bảo mật qua ${env:…} — xem đoạn mã ở trên
VS Code / GitHub Copilotcó.vscode/mcp.json: type: "http" + url + headers; lưu trữ khóa làm đầu vào promptString — VS Code sẽ hỏi một lần và giữ nó được mã hóa
ChatGPT desktop / Codex CLI / IDEcó~/.codex/config.toml dùng chung: url + bearer_token_env_var (đặt khóa trong biến môi trường). Connector ChatGPT web đăng nhập bằng OAuth thay vì dán khóa
Gemini CLIcóhttpUrl + headers trong settings.json
WindsurfcóserverUrl + headers in mcp_config.json (Devin Local agent: url + transport: "http"). Setup guide
Clinecótype: "streamableHttp" + url + headers in the MCP settings JSON. Setup guide
xAI API (Grok)cócông cụ MCP với server_url và giá trị authorization được gửi đến máy chủ Setup guide
grok.com (web)một phầnconnector tùy chỉnh nhận URL máy chủ (Connectors → New Connector → Custom); việc đăng nhập đi qua luồng OAuth 2.1 của chúng tôi
ZCode (GLM-5.2)cóSettings → MCP Servers → loại HTTP + header Authorization; GLM-5.2 bên trong Claude Code thừa hưởng cấu hình của Claude Code
Bất kỳ công cụ nào kháccóJSON-RPC thuần qua HTTPS — xem mục Gọi từ mã nguồn bên dưới

Ví dụ về Codex — thêm vào ~/.codex/config.toml và xuất BB_API_KEY=bb_live_…:

[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"

Hướng dẫn đầy đủ về Codex — CLI, tiện ích mở rộng IDE và ChatGPT desktop từ một cấu hình duy nhất, cùng các lưu ý nhỏ và bản demo khóa trực tiếp: Thiết lập Codex MCP: Hình ảnh và Video từ một config.toml.

04KHÔNG CẦN SDK

Gọi từ mã nguồn

Không sử dụng MCP client? Bạn không cần nó — và bạn cũng không cần bất kỳ SDK nào. Máy chủ là JSON-RPC 2.0 thuần túy qua HTTPS: một endpoint POST, một Bearer header, một phản hồi JSON duy nhất. Nó là stateless (không lưu trạng thái), vì vậy không có quá trình bắt tay phiên cần quản lý — tools/call hoạt động như một yêu cầu đầu tiên từ curl, Python, TypeScript hoặc bất kỳ công cụ nào khác có thể gửi HTTP.

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

Chỉ dùng thư viện requests — không cần thư viện 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

Không có phần phụ thuộc — tích hợp sẵn fetch (Node 18+, Deno, Bun, trình duyệt):

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);

Những chi tiết quan trọng khi bạn viết mã nguồn:

  • Mỗi phản hồi của công cụ đều mang cùng một JSON hai lần: result.structuredContent máy có thể đọc và một khối văn bản trong result.content — hãy phân tích cú pháp khối nào dễ dàng hơn cho bạn.
  • Video (và các đợt tạo nhiều hình ảnh) là cuộc gọi hai bước: lệnh gọi generate_video đầu tiên trả về báo giá và không tính phí; hãy lặp lại lệnh gọi đó với confirm_cost được đặt thành số tiền được báo giá để bắt đầu.
  • Truyền một khóa idempotency_key trên các cuộc gọi tạo — việc thử lại mạng sẽ không bao giờ tính phí hai lần.
  • tools/list hoạt động mà không cần khóa, vì vậy bạn can khám phá các schema đầy đủ trước khi tạo tài khoản. Các lượt gọi công cụ được giới hạn ở mức 20 lượt mỗi phút cho mỗi khóa.
05CÔNG CỤ

Mười công cụ chuyên dụng

Công cụChi phíMô tả chức năng
list_modelsmiễn phíTất cả các mô hình với giá trực tiếp trên mỗi đơn vị, độ phân giải và các ràng buộc.
get_accountmiễn phíSố dư, giới hạn chi tiêu khóa và lịch sử sử dụng hôm nay.
top_upmiễn phíTạo liên kết nạp số dư an toàn. OAuth chỉ có quyền gửi tiền; khóa API sử dụng trang hồ sơ.
generate_image$0.03–$0.20Chuyển văn bản thành hình ảnh trên Nano Banana 2 Lite / 2 / 2.1 / Pro, lên đến 4K. Trả về một job_id.
edit_imagebằng giá một hình ảnhTinh chỉnh hình ảnh đã hoàn thành bằng hướng dẫn văn bản (chỉnh sửa nhiều lượt).
generate_video$0.10–$6.00Dòng mô hình Veo 3.1 hoặc Omni Flash (luôn đi kèm âm thanh), Wan 3.0, có thể bắt đầu từ khung hình đầu và ảnh tham chiếu. Luôn báo giá chính xác trước khi thực hiện.
edit_video$0.09–1.00Chỉnh sửa video sang video với Omni Flash: video của bạn hoặc URL công khai — đổi phong cách, thay thế đối tượng, chỉnh ánh sáng. 10 giây đầu, 720p kèm âm thanh.
generate_speech$0.01 / 200 ký tựTạo giọng nói WAV cho một hoặc hai người nói. Tính phí theo mỗi 200 ký tự bắt đầu.
get_resultmiễn phíKiểm tra trạng thái tác vụ: nhận các URL phương tiện được lưu trữ (liên kết có hiệu lực 24 giờ), chi phí đã tính, số dư còn lại và xem trước hình ảnh trực tiếp.
list_generationsmiễn phíLịch sử tạo gần đây — chia sẻ chung với trang web.
06BẢNG GIÁ

Tạo qua MCP tốn bao nhiêu trong năm 2026?

  • Giá được cung cấp trực tiếp qua list_models — cùng nguồn dữ liệu mà trang web sử dụng.
  • Mỗi lượt gọi video (và đợt tạo nhiều hình ảnh) trước tiên sẽ trả về báo giá và không tính phí; agent lặp lại lượt gọi với confirm_cost để thực sự bắt đầu.
  • Mọi kết quả đều bao gồm cost_charged_usd and balance_remaining_usd.
  • Các lỗi hệ thống đầu nguồn và từ chối do bộ lọc nội dung sẽ được hoàn tiền tự động — cùng chính sách như ứng dụng web.
  • Tùy chọn idempotency_key đảm bảo việc thử lại cuộc gọi không bao giờ bị tính phí hai lần.
07VÍ DỤ

Một cuộc hội thoại thực tế

→ 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}
08BẢO MẬT

URL phương tiện & bảo mật

  • Các URL kết quả được ký số và có giá trị trong 24 giờ; bản thân tệp phương tiện vẫn nằm trong tài khoản của bạn — hãy gọi lại get_result để lấy liên kết mới hoặc tải xuống từ trang web.
  • Các API key được lưu trữ dưới dạng băm và chỉ hiển thị một lần khi tạo; bạn có thể thu hồi chúng bất kỳ lúc nào trong hồ sơ cá nhân của mình.
  • Kết nối OAuth dùng access token một giờ với refresh token xoay vòng, chỉ lưu dạng băm và chỉ hợp lệ với máy chủ này; ngắt ứng dụng trong hồ sơ sẽ vô hiệu token ngay lập tức.
  • Nhật ký sử dụng cho từng khóa (công cụ, mô hình, chi phí, xem trước prompt) có thể xem được trong Hồ sơ → MCP API Keys.
  • Các lượt tạo qua MCP xuất hiện trong cùng một lịch sử tạo và phân tích như lượt tạo trên web.
09TRẢ TIỀN THEO LƯỢT GỌI

x402: trả tiền theo lượt gọi bằng USDC, không cần tài khoản

x402 là giao thức mở cho phép agent trả tiền cho một yêu cầu bằng stablecoin. Đây là endpoint tách biệt với máy chủ MCP: POST /api/x402. Không cần tài khoản, khóa API hay nạp tiền.

  1. Gửi tên công cụ và các tham số. Máy chủ trả về 402 kèm giá chính xác của lượt gọi đó.
  2. Ký thanh toán bằng USDC trên mạng Base rồi gửi lại yêu cầu với header X-PAYMENT.
  3. Hình ảnh và giọng nói được trả về ngay trong phản hồi. Video trả về job_id; kiểm tra kết quả miễn phí qua GET /api/x402/result/{jobId}.

Công cụ khả dụng: generate_image, generate_speech, generate_video. Giá giống như trên studio web và qua MCP; lượt gọi có giá bằng giá tạo nội dung, không có mức nạp tối thiểu.

Nếu video đã trả tiền bị lỗi, người trả nhận một token tín dụng cùng giá trị, có hiệu lực 90 ngày. Gửi nó dưới dạng refund_token trong lượt gọi sau. Thanh toán không được hoàn on-chain. Danh mục dạng máy đọc với giá hiện tại nằm ở GET /api/x402.

10CÂU HỎI THƯỜNG GẶP

Câu hỏi về Nano Banana MCP server

Nano Banana MCP server là gì?

Đây là một MCP server từ xa, đưa các mô hình ảnh Nano Banana cùng các mô hình video và giọng nói vào tay AI agent của bạn dưới dạng công cụ. Agent gọi generate_image, server thực hiện việc tạo và trả về đường dẫn tới tệp hoàn chỉnh. BananaBanana lưu trữ server tại https://bananabanana.pro/api/mcp, nên bạn không phải cài đặt hay chạy gì trên máy, và mỗi lượt tạo được trừ vào số dư BananaBanana theo đúng giá của web studio.

Làm sao thêm vào Gemini CLI?

Gemini CLI kết nối với MCP server từ xa qua HTTP, nên toàn bộ phần thiết lập Gemini CLI MCP chỉ là một lệnh: gemini mcp add --transport http --scope user bananabanana https://bananabanana.pro/api/mcp -H "Authorization: Bearer YOUR_KEY". Khi CLI hỏi bạn có tin tưởng thư mục không, hãy đồng ý, sau đó chạy gemini mcp list và kiểm tra server hiển thị Connected. Với --scope user, khóa được lưu vào ~/.gemini/settings.json thay vì .gemini/settings.json của dự án, nên không bao giờ lọt vào repository.

Làm sao kết nối với Claude Desktop, Claude Code hoặc Cursor?

Trong claude.ai và Claude Desktop, mở Settings → Connectors → Add custom connector, dán https://bananabanana.pro/api/mcp và đăng nhập bằng OAuth: không cần sao chép khóa nào. Trong Claude Code, chạy claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp, sau đó gõ /mcp và chọn Authenticate, hoặc truyền API key bằng --header. Trong Cursor, thêm URL và header Authorization vào .cursor/mcp.json. Cấu hình dán sẵn cho các client này và nhiều client khác có trong phần bắt đầu nhanh ở trên.

Mỗi lượt gọi tốn bao nhiêu?

Bạn trả tiền theo lượt tạo, không trả cho việc kết nối: ảnh có giá $0.03–$0.20, video $0.10–$6.00 tùy mô hình, độ dài, độ phân giải và âm thanh, giọng nói $0.01 cho mỗi 200 ký tự bắt đầu. Các công cụ phụ trợ như list_models, get_result và get_account đều miễn phí. Lượt gọi video và nhiều ảnh trước tiên trả về báo giá chính xác và không trừ tiền cho đến khi agent xác nhận; các lượt tạo lỗi hoặc bị lọc được tự động hoàn vào số dư.

Có cần tài khoản Google hay gói đăng ký không?

Không. Bạn không cần tài khoản Google hay khóa của nhà cung cấp mô hình nào, chỉ cần tài khoản BananaBanana (chỉ cần email) có số dư trả trước. Không có gói đăng ký và số dư không hết hạn. Client dùng khóa sẽ dùng API key BananaBanana tạo trong hồ sơ; client dạng connector thì đăng nhập bằng OAuth. Agent thanh toán qua x402 thậm chí không cần tài khoản: mỗi lượt gọi được trả bằng USDC trên mạng Base.

Agent của tôi dùng được những mô hình nào?

Ảnh: Nano Banana 2 Lite (mặc định), Nano Banana 2 và Nano Banana Pro đến 4K, cùng GPT Image 2.5 và Qwen Image 3.0 Pro. Nano Banana 2.1 bổ sung khung toàn cảnh tới 8:1. Video: Veo 3.1, Veo 3.1 Fast và Veo 3.1 Lite, Gemini Omni Flash, Wan 3.0 và Grok Imagine Video 1.5. Giọng nói: Gemini 3.1 Flash TTS với 30 giọng. Công cụ list_models trả về danh sách trực tiếp kèm giá, độ phân giải và giới hạn, nên agent luôn làm việc với danh mục hiện hành.

Đây là MCP server tạo ảnh, vậy có làm được video không?

Có. Đây vừa là MCP server tạo ảnh (generate_image, edit_image) vừa làm video trên cùng một kết nối: generate_video tạo clip từ văn bản, khung hình mở đầu hoặc ảnh tham chiếu, còn edit_video đổi phong cách một clip có sẵn hoặc kéo dài nó. Ngoài ra còn có generate_speech để lồng tiếng với một hoặc hai giọng. Mọi thứ được trả từ một số dư, và ảnh lẫn video đều nằm chung lịch sử với web studio.

Sẵn sàng kết nối agent của bạn?

Tạo một khóa, thêm một dòng cấu hình — agent của bạn sẽ tạo ra phương tiện chất lượng studio chỉ trong vài phút.

Lấy API key của bạn