Kandinsky MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kandinsky MCPgenerate a 1024x1024 image of a sunset over the sea"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Kandinsky MCP
MCP-сервер для генерации изображений через Kandinsky API. Работает как инструмент агента: GigaCowork, Cursor, DeepSeek Harness и любой другой MCP-клиент.
API асинхронный: заявка создаётся, затем опрашивается статус и скачивается результат. Сервер берёт эту механику на себя — агенту остаётся один вызов инструмента. Устройство описано в docs/ARCHITECTURE.md, справка по маршрутам — в docs/api-reference.md.
Возможности
Генерация по тексту (Kandinsky 6 и 5), редактирование по картинке, увеличение разрешения.
Результат не теряется. API отдаёт файл однократно и хранит его 10 минут; сервер скачивает результат фоновым поллером сразу, как только задача готова, и хранит у себя. Повторный вызов инструмента не «сжигает» уже полученную картинку.
Картинка возвращается превью прямо в ответе плюс подписанной ссылкой на файл.
Два транспорта в одном образе: Streamable HTTP (
/mcp) и stdio.Ключ доступа
X-API-Key, ограничение частоты запросов, non-root контейнер.
Related MCP server: pixapi-mcp
Инструменты
Инструмент | Что делает |
| Изображение по тексту. |
| Изменение картинки по описанию (1–3 входных изображения), |
| Увеличение ×2 или ×4 (super resolution), |
| Состояние задачи ( |
| Готовый файл: ссылка, размер, sha256, превью. В API не ходит |
| Последние задачи с фильтрами |
| Справка: какие модели доступны, какие параметры и значения допустимы |
Ответ инструментов всегда одного вида:
{
"task_id": "1842",
"status": "saved",
"model": "k6-image-t2i",
"prompt": "закат над морем",
"params": { "query": "закат над морем", "resolution": "1024x1024" },
"elapsed_ms": 18400,
"media": [{
"mime": "image/png",
"bytes": 1482311,
"sha256": "9f2c…",
"url": "https://kandinsky.example/files/results/2026-02-14/1842.png?exp=…&sig=…",
"path": "results/2026-02-14/1842.png"
}],
"next": "Файл сохранён. Ссылка media[].url отдаёт его по подписи."
}Быстрый старт
Локально (stdio, без Docker)
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
pip install .
export KANDINSKY_TOKEN=... # токен Kandinsky API
MCP_TRANSPORT=stdio python -m kandinsky_mcpВ stdio-режиме сервер и агент на одной машине, поэтому входные картинки можно передавать путём к файлу, а не только base64.
Docker
cp .env.example .env # заполнить KANDINSKY_TOKEN и MCP_API_KEY
docker compose up -d --build
curl -s localhost:8000/healthzПорт наружу в compose не публикуется — предполагается, что снаружи стоит Caddy.
Для локальной проверки раскомментируйте ports в docker-compose.yml.
Подключение к агенту
Основной сценарий — GigaCowork (cowork.ru): коннектор типа
Streamable HTTP, адрес https://<ваш-домен>/mcp, авторизация «HTTP-заголовки»,
заголовок X-API-Key со значением ключа.
DeepSeek Harness — ~/.dsh/profiles/desktop/cordis.patch.yml:
- insert:
- id: mcp-kandinsky
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: kandinsky
transport: streamable-http
url: https://kandinsky.example.com/mcp
headers:
X-API-Key: <MCP_API_KEY>
toolCallTimeoutMs: 150000 # генерация с ожиданием занимает до минуты
failOnStartupError: falseCursor / Windsurf — тот же блок в mcpServers, для stdio:
{
"mcpServers": {
"kandinsky": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT=stdio",
"-e", "KANDINSKY_TOKEN=${KANDINSKY_TOKEN}", "kandinsky-mcp:latest"]
}
}
}toolCallTimeoutMs важен: по умолчанию инструмент ждёт готовности до 60 секунд
(wait_seconds). Если поставить меньше — вызов вернёт task_id, а результат
можно забрать позже через kandinsky_task_result (файл уже будет на сервере).
Настройка
Все параметры — через переменные окружения, полный список в .env.example.
Переменная | Обязательна | По умолчанию | Смысл |
| да | — | Bearer-токен Kandinsky API |
| для http | — | ключ доступа агента ( |
| нет | = | секрет подписи ссылок на файлы |
| для http |
| внешний адрес для ссылок |
| нет |
|
|
| нет |
| где лежат задачи и результаты |
| нет |
| срок хранения файлов |
| нет |
| цензура контента по умолчанию |
| нет |
| защита дневной квоты API |
| нет |
| сверять маршруты с |
| нет |
| читать входные картинки с диска |
Caddy
deploy/Caddyfile — готовый конфиг. Две строки в нём принципиальны:
flush_interval -1— без этого Caddy буферизует SSE и MCP-клиент не получает события;request_body { max_size 40MB }— base64 раздувает картинку на треть.
Если Caddy в контейнере, задайте UPSTREAM=kandinsky-mcp:8000 (в compose уже задано).
Эндпоинты
Путь | Доступ | Назначение |
|
| MCP Streamable HTTP |
| подпись в URL | готовые изображения |
| публичный | живость процесса |
| публичный | доступность Kandinsky API (кеш 30 с) |
Разработка
pip install -e ".[dev]"
pytest -q
ruff check src testsТесты не ходят в сеть: клиент API проверяется на respx, фоновый поллер — на
скриптованном фейке.
Живая проверка (одна настоящая генерация, тратит квоту):
# в контейнере — самый простой способ убедиться, что всё работает
docker compose exec kandinsky-mcp kandinsky-mcp-smoke
# локально
KANDINSKY_TOKEN=... python -m kandinsky_mcp.smoke "кот в шляпе" 1280x768Скрипт проходит весь путь: сверка реестра с openapi.json, создание задачи,
поллинг, однократное скачивание, проверка файла на диске.
Ловушки API, которые сервер берёт на себя
Проблема | Что делает сервер |
Результат одноразовый: 10 минут на скачивание, потом удаление | фоновый поллер скачивает сразу; |
В PDF разрешение | нормализует любой разделитель ( |
Ключ называется | принимает и |
| собирает |
Лимит промпта 2048 символов | проверяет до запроса, не тратя квоту |
Входная картинка ≤ 25 МБ и ≤ 2048 px (superres ≤ 4 МБ / 1024 px) | уменьшает автоматически и сообщает об этом в |
429 с | различает |
Квоты не тратятся на чтение статуса | опрос бесплатный, поэтому поллинг агрессивный и безопасный |
Заголовок врёт: | определяет формат по сигнатуре файла ( |
Безопасность
Токен Kandinsky живёт только в окружении; в логи и ответы не попадает.
/mcpтребуетX-API-Key(илиAuthorization: Bearer). Без ключа сервер не стартует в HTTP-режиме — это осознанно, а не недосмотр.Ссылки на файлы подписаны и живут ограниченное время; каталог данных не отдаётся целиком.
Контейнер: non-root uid 10001,
read_onlyrootfs,cap_drop: ALL,no-new-privileges, единственный writable путь — том/data.В HTTP-режиме вход по локальному пути запрещён: иначе ключ доступа превращался бы в право прочитать любой файл сервера.
Лицензия
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate images with any major model — one API key, one prepaid balance, one MCP.
Create and manage AI image and video generations through Quriov's fixed public MCP tools.
Image infrastructure for agents. Upload, transform, and deliver images through MCP, CLI, or API.
OAuth-protected ImagineVid MCP for image, video, and music generation.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP-compatible clients to generate and upscale AI images, videos, music, and sound effects, manage generation jobs, access model catalogs, and track credits.3MIT

pixapi-mcpofficial
AlicenseNot gradedqualityBmaintenanceEnables MCP clients to use Pixapi's AI image and video generation tools, including checking pricing and balance, starting asynchronous generation tasks, and retrieving results.27 npmMIT- AlicenseNot gradedqualityBmaintenanceEnables image and video generation and editing through MCP tools, including image editing, upscaling, background removal, video generation, image-to-video, and video extension. Video generation runs asynchronously with job status and result retrieval.MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone and design voices, and create related media outputs.188 npmMIT