Для 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 со звуком (фикс. $1.00). Агент видит актуальные цены, подтверждает расходы перед дорогими задачами, а все генерации сохраняются в той же истории и оплачиваются с того же баланса, что и на сайте.
- Эндпоинт:
https://bananabanana.pro/api/mcp(Streamable HTTP) - Авторизация: Bearer API-ключ из вашего профиля (в планах — поддержка OAuth 2.1)
- Лимит запросов: 20 вызовов инструментов в минуту на один ключ; можно настроить дневной лимит расходов для каждого ключа
- Нет MCP-клиента? Этот же эндпоинт работает как обычный JSON-RPC по HTTPS — вызывайте его через curl, Python или TypeScript без установки SDK
- Неудачные или отклоненные фильтрами генерации возвращаются на баланс автоматически
- Документация, файл
server.jsonи готовые примеры настройки клиентов доступны в GitHub-репозитории bananabanana-mcp
Подключение в три шага
1. Создайте аккаунт и пополните баланс. 2. В разделе Profile → MCP API Keys создайте ключ (он показывается один раз). 3. Добавьте сервер в свой клиент:
Claude Code
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp \
--header "Authorization: Bearer bb_live_YOUR_KEY"Claude Desktop
Добавьте в claude_desktop_config.json (Settings → 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"
}
}
}
}Любой другой 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"}Предпочитаете пошаговые инструкции? Руководство Генерация изображений в Claude Code подробно описывает весь процесс настройки Claude от начала до конца, включая четыре реальных сценария использования и расчет их стоимости.
Поддерживаемые клиенты
MCP — открытый протокол. К нему может подключиться любой клиент, поддерживающий Streamable HTTP и умеющий передавать заголовок Authorization. Текущий статус интеграции проверен по официальной документации разработчиков (актуально на июль 2026 года):
| Клиент | Работает сейчас? | Способ подключения |
|---|---|---|
| Claude Code | да | claude mcp add --transport http … --header |
| Claude Desktop / claude.ai | да | собственный коннектор с кастомным заголовком запроса (в бета-тесте) или мост mcp-remote |
| 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, которые авторизуются через OAuth, а не скопированные ключи |
| Gemini CLI | да | параметры httpUrl + headers в файле settings.json |
| xAI API (Grok) | да | инструмент MCP с передачей server_url и значения authorization на сервер |
| grok.com (web) | частично | пользовательские коннекторы принимают URL сервера (Connectors → New Connector → Custom); в документации не указано, поддерживается ли передача скопированного API-ключа в заголовке, поэтому для этого пути может потребоваться планируемая поддержка OAuth 2.1 |
| ZCode (GLM-5.2) | да | Settings → MCP Servers → тип 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.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
Только библиотека 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 | бесплатно | Текущий баланс, лимит расходов по ключу и статистика использования за сегодня. |
| generate_image | $0.03–$0.20 | Генерация текста в изображение на моделях Nano Banana 2 Lite / 2 / Pro до 4K. Возвращает job_id. |
| edit_image | цена одного изображения | Корректировка готового изображения с помощью текстовых инструкций (многоэтапное редактирование). |
| generate_video | $0.10–$4.40 | Генерация на семействе моделей Veo 3.1 или Omni Flash (всегда со звуком). Сначала всегда возвращает точную стоимость. |
| 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-ключи хранятся в виде хэшей и показываются только один раз при создании. Вы можете отозвать их в любой момент в своем профиле.
- Детальный лог использования каждого ключа (инструмент, модель, стоимость, превью промпта) доступен в Profile → MCP API Keys.
- Все генерации через MCP отображаются в общей истории генераций и аналитике наряду с веб-версией.
Готовы подключить своего агента?
Создайте ключ, добавьте одну строку в конфигурационный файл — и ваш агент сможет генерировать студийные медиаматериалы за считанные минуты.
Получить API-ключ