Для AI-агентів та MCP-клієнтів
BananaBanana MCP Server
Генеруйте AI-зображення та відео прямо з Claude Desktop, Claude Code та будь-якого іншого MCP-клієнта — з оплатою за кожну генерацію з вашого балансу BananaBanana. Без підписок.
Один ендпоінт — усі моделі
Віддалений Model Context Protocol сервер, що надає доступ до всього стеку генерації BananaBanana як до інструментів агента: зображення Google Nano Banana 2 Lite / 2 / Pro (від $0.03), відео Veo 3.1 / Fast / Lite та Gemini Omni Flash, Wan 3.0, MiniMax H3 зі звуком ($0.09–1.00). Ваш агент бачить актуальні ціни, підтверджує витрати перед запуском дорогих завдань, а кожна генерація зберігається в тій самій історії та оплачується з того самого балансу, що й на сайті.
- Ендпоінт:
https://bananabanana.pro/api/mcp(Streamable HTTP) - Авторизація: вхід через OAuth 2.1 (claude.ai та інші клієнти з конекторами) або Bearer API-ключ із профілю
- Ліміт запитів: 20 викликів інструментів на хвилину для одного ключа; додатково можна встановити щоденний ліміт витрат
- Немає MCP-клієнта? Цей самий ендпоінт є звичайним JSON-RPC через HTTPS — викликайте його через curl, Python або TypeScript без жодного SDK
- Кошти за невдалі або заблоковані фільтрами генерації повертаються автоматично
- Відкрийте документацію,
server.jsonта скопіюйте приклади клієнтів з GitHub-репозиторію bananabanana-mcp
Підключення за три кроки
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 (Налаштування → 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 і списків discovery (tools/list, prompts/list, resources/list), потребує облікових даних — включно з initialize: неавтентифіковане рукостискання відповідає 401 із челенджем WWW-Authenticate. Асиметрія навмисна, а не помилка: саме за цим челенджем клієнт-конектор розуміє, що сервер працює через OAuth. Читати каталог інструментів без ключа й далі можна.
Бажаєте покроковий посібник? Туторіал Генерація зображень у Claude Code детально описує налаштування Claude від початку до кінця, розглядаючи чотири реальні сценарії використання та їхню фактичну вартість.
Сумісність із клієнтами
MCP — це відкритий протокол: підключитися може будь-який клієнт, що працює через Streamable HTTP та вміє додавати заголовок Authorization. Поточний стан сумісності, перевірений за офіційною документацією розробників (останнє оновлення: серпень 2026 року):
| Клієнт | Працює зараз? | Як підключити |
|---|---|---|
| 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 | так | httpUrl + headers у settings.json |
| 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) | так | інструмент MCP із параметрами server_url та значенням authorization, що надсилається на сервер Setup guide |
| grok.com (web) | частково | кастомні конектори приймають URL сервера (Connectors → New Connector → Custom); вхід іде через наш OAuth 2.1 |
| ZCode (GLM-5.2) | так | Налаштування → MCP-сервери → тип HTTP + заголовок Authorization; GLM-5.2 всередині Claude Code успадковує конфігурацію Claude Code |
| Будь-який інший клієнт | так | чистий JSON-RPC через HTTPS — див. розділ Виклик із коду нижче |
Приклад для 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: зображення та відео з одного файлу config.toml.
Виклик із коду
Не використовуєте MCP-клієнт? Він вам і не потрібен — як і будь-який SDK. Сервер працює за простим протоколом JSON-RPC 2.0 через HTTPS: один ендпоінт для POST-запитів, заголовок Bearer та одна JSON-відповідь. Сервер не зберігає стан (stateless), тому немає потреби керувати сесіями чи рукостисканнями — запит до tools/call спрацює з першого разу через curl, Python, TypeScript або будь-який інший інструмент, здатний надсилати 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
Лише бібліотека 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— парсіть те, що зручніше для вас. - Генерація відео (та пакетів із кількох зображень) виконується у два кроки: перший виклик
generate_videoповертає попередню вартість без списання коштів; для запуску повторіть виклик, передавши вconfirm_costвказану суму. - Передавайте
idempotency_keyпод час викликів генерації — це гарантує, що повторні спроби через мережеві збої не призведуть до подвійного списання коштів. - Запит
tools/listпрацює навіть без ключа, тож ви можете вивчити повні схеми інструментів ще до створення акаону. Виклики обмежені лімітом у 20 запитів на хвилину для одного ключа.
Десять спеціалізованих інструментів
| Інструмент | Вартість | Опис дії |
|---|---|---|
| list_models | безкоштовно | Усі доступні моделі з актуальними цінами за одиницю, роздільною здатністю та лімітами. |
| get_account | безкоштовно | Баланс, встановлений ліміт витрат для ключа та статистика використання за сьогодні. |
| top_up | безкоштовно | Створює безпечне посилання для поповнення. OAuth отримує доступ лише до депозиту, API-ключі використовують профіль. |
| generate_image | $0.03–$0.20 | Генерація зображень за текстом за допомогою моделей Nano Banana 2 Lite / 2 / Pro з роздільною здатністю до 4K. Повертає job_id. |
| edit_image | вартість одного зображення | Редагування готового зображення за допомогою текстових інструкцій (багатокрокове редагування). |
| generate_video | $0.10–$6.00 | Генерація відео за допомогою моделей сімейства Veo 3.1 або Omni Flash (завжди зі звуком), Wan 3.0, MiniMax H3, за бажання — зі стартового кадру та референсних зображень. Спочатку обов'язково повертає точну вартість. |
| edit_video | $0.09–1.00 | Video-to-video редагування на Omni Flash: власний ролик або посилання — рестайл, заміна об'єктів, зміна світла. Перші 10 с, 720p зі звуком. |
| generate_speech | $0.01 / 200 символів | Генерує WAV-мовлення з одним або двома голосами. Оплата за кожні розпочаті 200 символів. |
| get_result | безкоштовно | Отримання результату: тимчасові посилання на готові медіафайли (дійсні 24 години), фактично списана сума, залишок балансу та інлайн-прев'ю зображення. |
| list_generations | безкоштовно | Історія останніх генерацій — синхронізована із веб-сайтом. |
Вбудована прозорість витрат
- Ціни надаються в реальному часі через
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}Посилання на медіафайли та безпека
- Посилання на результати підписані та дійсні протягом 24 годин; самі медіафайли зберігаються у вашому акаунті — ви можете знову викликати
get_result, щоб отримати свіжі посилання, або завантажити файли безпосередньо з сайту. - API-ключі зберігаються у вигляді хешів і відображаються лише один раз при створенні; ви можете відкликати їх у будь-який момент у своєму профілі.
- У OAuth-підключень access-токен живе годину, refresh ротується під час кожного оновлення; зберігаються лише хеші, токен дійсний тільки для цього сервера. Відключення застосунку в профілі миттєво гасить його токени.
- Журнал використання для кожного ключа (інструмент, модель, вартість, прев'ю промпту) доступний у розділі Профіль → MCP API Keys.
- Генерації через MCP відображаються в тій самій історії генерацій та аналітиці, що й запити через веб-інтерфейс.
Готові підключити свого агента?
Створіть ключ, додайте один рядок конфігурації — і ваш агент почне генерувати контент студійної якості вже за кілька хвилин.
Отримати API-ключ