mcp_kandinsky 0.2.0
MCP сервер для генерации изображений через Kandinsky API
License: MIT
Requires Python: >=3.9

# MCP Kandinsky

MCP Kandinsky — это MCP (Model Context Protocol) сервер, предоставляющий инструмент для генерации изображений с помощью нейросети [Kandinsky](https://www.sberbank.com/promo/kandinsky/) через официальный API. В настоящее время по API доступна версия Kandinsky 3.1.

## Возможности
- Генерация изображений по текстовому описанию (prompt)
- Поддержка выбора стиля (DEFAULT, KANDINSKY, UHD, ANIME)
- Поддержка негативных промптов
- Настройка размера изображения (width, height)
- Сохранение результата в файл с контролем перезаписи
- Явное указание папки проекта для сохранения (project_dir)

## Переменные окружения
Для работы с MCP Kandinsky вам понадобятся данные для авторизации, которые нужно сохранить в переменных окружения.

- `KANDINSKY_API_KEY` — ваш API-ключ
- `KANDINSKY_SECRET_KEY` — ваш Secret-ключ

Получить авторизационные данные можно после регистрации на сайте [FUSION BRAIN](https://fusionbrain.ai/), перейдя в раздел API.

### Тарифы
Kandinsky API предоставляет бесплатный тариф с лимитом **100 запросов в месяц**. Подробнее о тарифах и возможностях можно узнать на [странице для разработчиков](https://fusionbrain.ai/developers/).

## Как подключить MCP Kandinsky к агенту (Cursor, Windsurf и др.)
Добавьте MCP-сервер в конфиг агента, например, в файл `.cursor/mcp.json` или аналогичный для вашей IDE:

```json
"mcpServers": {
    "mcp-kandinsky": {
        "command": "uvx",
        "args": [
            "--from", "mcp_kandinsky", "mcp-kandinsky"
        ],
        "enabled": true,
        "env": {
            "KANDINSKY_API_KEY": "ВАШ_API_KEY",
            "KANDINSKY_SECRET_KEY": "ВАШ_SECRET_KEY"
        }
    }
}
```

## Пример использования инструмента агентом

**Вызов инструмента из агента (например, через Cursor):**

```
mcp-kandinsky/kandinsky_generate_image
Arguments
{
  "prompt": "Весенняя Москва в мае, сирень, дождь и солнце, в стиле акварельной живописи",
  "filename": "moskva_v_mae.png",
  "project_dir": "/Users/you/myproject",
  "width": 1024,
  "height": 1024,
  "style": "DEFAULT",
  "negative_prompt": "",
  "overwrite": false
}
Response
Изображение успешно сгенерировано и сохранено в kandinsky/moskva_v_mae.png.
```

**Пояснения:**
- Все параметры передаются через интерфейс агента.
- `project_dir` — абсолютный путь к папке проекта, в которой работает агент в настоящий момент. Папка `kandinsky` будет создана внутри неё.
- Ответ — строка с результатом (успех или причина отказа).
- Файл сохраняется в папку `kandinsky` в рабочей директории проекта.

## Описание инструмента

**kandinsky_generate_image**

| Параметр         | Тип    | Описание                                                        |
|------------------|--------|-----------------------------------------------------------------|
| prompt           | str    | Описание изображения                                            |
| filename         | str    | Имя файла для сохранения (например, cat.png)                    |
| project_dir      | str    | Абсолютный путь к папке проекта                                 |
| width            | int    | Ширина (по умолчанию 1024)                                      |
| height           | int    | Высота (по умолчанию 1024)                                      |
| style            | str    | Стиль (DEFAULT, KANDINSKY, UHD, ANIME; по умолчанию DEFAULT)    |
| negative_prompt  | str    | Негативный промпт (опционально)                                 |
| overwrite        | bool   | Перезаписывать файл, если он уже существует (по умолчанию False)|

**Возвращает:** строку-результат с сообщением об успехе или причине отказа.

## Логика работы
- Проверяется наличие папки `kandinsky` внутри `project_dir`, при необходимости создаётся.
- Если файл с таким именем уже есть и `overwrite=False`, генерация не происходит, возвращается сообщение о наличии файла.
- Если файла нет или `overwrite=True`, происходит генерация, файл сохраняется (или перезаписывается).
- Возвращается сообщение об успешном сохранении или причине отказа.

---
Документация API: https://fusionbrain.ai/docs/doc/api-dokumentaciya/

## Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.