Skip to main content

An MCP server for Nano Banana image generation through the Polza media API

Project description

Nano Banana 2 Polza MCP Server

mcp-name: io.github.ivanantigravity-lgtm/nanobanana-2-polzaia-mcp-server

MCP-сервер для генерации и редактирования изображений через Polza с моделями семейства Google Nano Banana:

  • google/gemini-3.1-flash-image-preview — Nano Banana 2, модель по умолчанию
  • google/gemini-3-pro-image-preview — для сложных композиций и максимального качества
  • google/gemini-2.5-flash-image — для быстрых черновиков

Сервер отдаёт изображения настоящими MCP image content-блоками и параллельно — структурированный JSON с метаданными и подсказками по воспроизводимости.

Инструменты MCP

  • generate_image — генерация и редактирование. Поддерживает до трёх референсов для conditioning, выбор модели, aspect ratio, разрешение и прочие параметры.
  • fetch_generation — докачка уже запущенной генерации по gen_... id. Нужен, когда MCP-клиент отвалился по таймауту, а генерация на стороне Polza успешно завершилась. Позволяет не перегенерировать (и не оплачивать повторно).
  • upload_file — загрузка файлов в Polza Storage.
  • show_output_stats — статистика локальной выходной директории.
  • maintenance — обслуживание кэша, квот и БД.

Что нужно пользователю

  • Claude Code или любой другой MCP-клиент
  • uv
  • Python 3.11+
  • POLZA_AI_API_KEY (токен аккаунта Polza)

Быстрая установка за 2 минуты

Для Claude Code / VS Code:

  1. Установите uv (brew install uv на macOS).
  2. В корне проекта создайте файл .mcp.json.
  3. Вставьте конфиг и подставьте свой Polza-ключ.
{
  "mcpServers": {
    "nanobanana-polza": {
      "command": "uvx",
      "args": ["nanobanana-2-polzaia-mcp-server@latest"],
      "env": {
        "POLZA_AI_API_KEY": "your-polza-api-key-here",
        "POLZA_BASE_URL": "https://polza.ai/api",
        "IMAGE_OUTPUT_DIR": "/Users/yourname/Documents/nanobanana"
      }
    }
  }
}

Перезапустите Claude Code / VS Code.

Восстановление после таймаута

MCP-клиенты (в том числе Claude Code) обычно имеют собственный таймаут на один tool call порядка 60 секунд. Nano Banana 2 укладывается в это окно не всегда, и клиент может вернуть The read operation timed out ещё до того, как Polza успела отдать результат. Сервер Polza в этот момент доводит генерацию до конца и сохраняет её под gen_... id.

Если такое случилось:

  1. Посмотрите gen_... id в веб-интерфейсе Polza (раздел генераций).
  2. Вызовите fetch_generation с этим id — сервер опросит статус и сохранит файл локально.
fetch_generation(media_id="gen_2158267363095220225",
                 output_path="/abs/path/to/slide_3.png")

Параметр output_path принимает как конкретный файл, так и директорию. При отсутствии параметра файл сохраняется в IMAGE_OUTPUT_DIR.

Локальная разработка

git clone https://github.com/ivanantigravity-lgtm/nanobanana-2-polzaia-mcp-server.git
cd nanobanana-2-polzaia-mcp-server
uv sync
cp .env.example .env

Минимум в .env:

POLZA_AI_API_KEY=your_polza_api_key
POLZA_BASE_URL=https://polza.ai/api
IMAGE_OUTPUT_DIR=/absolute/path/to/output

Запуск:

uv run python -m nanobanana_2_polzaia_mcp_server.server

Claude Code / VS Code (варианты конфига)

Установленный через PyPI пакет — рекомендуемый вариант:

{
  "mcpServers": {
    "nanobanana-polza": {
      "command": "uvx",
      "args": ["nanobanana-2-polzaia-mcp-server@latest"],
      "env": {
        "POLZA_AI_API_KEY": "your-polza-api-key-here",
        "POLZA_BASE_URL": "https://polza.ai/api",
        "IMAGE_OUTPUT_DIR": "/Users/demo/Documents/nanobanana"
      }
    }
  }
}

Запуск из исходников:

{
  "mcpServers": {
    "nanobanana-polza-local": {
      "command": "uv",
      "args": ["run", "python", "-m", "nanobanana_2_polzaia_mcp_server.server"],
      "cwd": "/absolute/path/to/nanobanana-2-polzaia-mcp-server",
      "env": {
        "POLZA_AI_API_KEY": "your-polza-api-key-here",
        "POLZA_BASE_URL": "https://polza.ai/api",
        "IMAGE_OUTPUT_DIR": "/absolute/path/to/output"
      }
    }
  }
}

Claude Desktop

На macOS добавьте сервер в файл:

~/Library/Application Support/Claude/claude_desktop_config.json

Пример:

{
  "mcpServers": {
    "nanobanana-polza": {
      "command": "uvx",
      "args": ["nanobanana-2-polzaia-mcp-server@latest"],
      "env": {
        "POLZA_AI_API_KEY": "your-polza-api-key-here",
        "POLZA_BASE_URL": "https://polza.ai/api",
        "IMAGE_OUTPUT_DIR": "/Users/demo/Documents/nanobanana"
      }
    }
  }
}

Переменные окружения

Переменная Обязательно Описание
POLZA_AI_API_KEY да Токен доступа к Polza API
POLZA_BASE_URL нет База API, по умолчанию https://polza.ai/api
IMAGE_OUTPUT_DIR нет Директория для сохранённых файлов, по умолчанию ~/nanobanana-images
POLZA_POLL_INTERVAL_SECONDS нет Интервал поллинга статуса, по умолчанию 2
POLZA_POLL_TIMEOUT_SECONDS нет Таймаут ожидания генерации, по умолчанию 120
POLZA_EXTERNAL_USER_ID нет Передаётся в Polza как user для антифрода
RETURN_FULL_IMAGE нет Возвращать полное изображение в MCP-ответе вместо thumbnail
NANOBANANA_MODEL нет Дефолтный tier: auto, nb2, pro, flash

Публикация новой версии

# 1. bump версии в pyproject.toml и nanobanana_2_polzaia_mcp_server/__init__.py
# 2. обновить CHANGELOG.md
# 3. прогнать быстрый smoke-test
PYTHONPYCACHEPREFIX=/tmp/pycache python3 -m compileall nanobanana_2_polzaia_mcp_server
uv build

# 4. публикация на PyPI
uv publish --token "$UV_PUBLISH_TOKEN"

# 5. публикация метаданных в MCP Registry
brew install mcp-publisher   # один раз
mcp-publisher login
mcp-publisher publish

MCP Registry хранит только метаданные, сам пакет должен лежать на PyPI.

Используемые эндпоинты Polza

  • POST /v1/media — запуск генерации
  • GET /v1/media/{id} — статус и результат (используется для fetch_generation и поллинга)
  • POST /v1/storage/upload — загрузка референса
  • GET /v1/storage/files/{id} — метаданные файла
  • DELETE /v1/storage/files/{id} — удаление файла

Лицензия

MIT. См. файл LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanobanana_2_polzaia_mcp_server-0.5.1.tar.gz (276.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanobanana_2_polzaia_mcp_server-0.5.1-py3-none-any.whl (92.9 kB view details)

Uploaded Python 3

File details

Details for the file nanobanana_2_polzaia_mcp_server-0.5.1.tar.gz.

File metadata

  • Download URL: nanobanana_2_polzaia_mcp_server-0.5.1.tar.gz
  • Upload date:
  • Size: 276.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nanobanana_2_polzaia_mcp_server-0.5.1.tar.gz
Algorithm Hash digest
SHA256 f2b083475b5dbc6238c1541ecd855b7e50790c604d7adcdbad6970455173f5f5
MD5 137fb301a3185c7a330218125c798cf5
BLAKE2b-256 8d84b296fa81119c2be6b876601814cbf491114a093822a9b84025af3e5b067d

See more details on using hashes here.

File details

Details for the file nanobanana_2_polzaia_mcp_server-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: nanobanana_2_polzaia_mcp_server-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 92.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nanobanana_2_polzaia_mcp_server-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6588cab444e0294780be60d58566df7d1567aa5ba2bc389617cd8ab59033deb4
MD5 6395531636223f6e40d264a9adade37d
BLAKE2b-256 cc4939d1e16cf68d37200a5d93a20975e39952b337a7fdfaaf355acc39c1584d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page