Dành cho AI agent & MCP client
BananaBanana MCP Server
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.
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 / Pro (chỉ từ $0.03), video Veo 3.1 / Fast / Lite và Gemini Omni Flash, Wan 3.0, MiniMax H3 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.jsonvà sao chép các ví dụ về client trong kho lưu trữ GitHub bananabanana-mcp
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.proCù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.
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):
| Client | Hoạt động ngay hôm nay? | Cách kết nối |
|---|---|---|
| Claude Code | có | claude mcp add --transport http … --header |
| Claude Desktop / claude.ai | có | 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) |
| Cursor | có | .cursor/mcp.json: url + headers, khóa bảo mật qua ${env:…} — xem đoạn mã ở trên |
| VS Code / GitHub Copilot | có | .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 / IDE | có | ~/.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 CLI | có | httpUrl + headers trong settings.json |
| Windsurf | có | serverUrl + headers in mcp_config.json (Devin Local agent: url + transport: "http"). Setup guide |
| Cline | có | 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ần | connector 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ác | có | 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.
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.structuredContentmáy có thể đọc và một khối văn bản trongresult.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ớiconfirm_costđược đặt thành số tiền được báo giá để bắt đầu. - Truyền một khóa
idempotency_keytrê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/listhoạ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.
Mười công cụ chuyên dụng
| Công cụ | Chi phí | Mô tả chức năng |
|---|---|---|
| list_models | miễ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_account | miễn phí | Số dư, giới hạn chi tiêu khóa và lịch sử sử dụng hôm nay. |
| top_up | miễ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.20 | Chuyển văn bản thành hình ảnh trên Nano Banana 2 Lite / 2 / Pro, lên đến 4K. Trả về một job_id. |
| edit_image | bằng giá một hình ảnh | Tinh 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.00 | Dòng mô hình Veo 3.1 hoặc Omni Flash (luôn đi kèm âm thanh), Wan 3.0, MiniMax H3, 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.00 | Chỉ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_result | miễ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_generations | miễn phí | Lịch sử tạo gần đây — chia sẻ chung với trang web. |
Tính minh bạch chi phí được tích hợp sẵn
- 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_usdandbalance_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.
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}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.
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