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 có âm thanh (đồng giá $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: Bearer API key từ hồ sơ của bạn (hỗ trợ OAuth 2.1 đã được lên kế hoạch)
- 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 Code
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp \
--header "Authorization: Bearer bb_live_YOUR_KEY"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"
}
}
}
}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"}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 7 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ó | đầu nối tùy chỉnh với request header (bản beta, đang triển khai) hoặc cầu nối mcp-remote |
| 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ó | chia sẻ ~/.codex/config.toml: url + bearer_token_env_var (đưa khóa vào biến môi trường). Các đầu nối web ChatGPT là ngoại lệ — chúng xác thực qua OAuth, không phải khóa dán |
| Gemini CLI | có | httpUrl + headers trong settings.json |
| xAI API (Grok) | có | công cụ MCP với server_url và giá trị authorization được gửi đến máy chủ |
| grok.com (web) | một phần | đầu nối tùy chỉnh nhận một URL máy chủ (Connectors → New Connector → Custom); tài liệu không nêu rõ liệu header API-key được dán có được hỗ trợ hay không, vì vậy hướng đi này có thể cần OAuth 2.1 sắp tới 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.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
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.
Bảy 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. |
| 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–$4.40 | Dòng mô hình Veo 3.1 hoặc Omni Flash (luôn đi kèm âm thanh). Luôn báo giá chính xác trước khi thực hiện. |
| 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.
- 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