MCP-сервер genmux: картинки из Claude, Cursor и OpenCode
5 мин чтенияАвтор genmux API Team
Model Context Protocol (MCP) — стандартный способ дать AI-ассистенту набор инструментов: небольшой сервер публикует функции, ресурсы и шаблоны промптов, а любой MCP-клиент — Claude Desktop, Claude Code, Cursor, OpenCode, Continue, Windsurf — вызывает их прямо по ходу диалога. @genmux/mcp — такой сервер для genmux: когда он подключён, «сделай мне hero-картинку 16:9 для страницы цен, но сначала скажи, сколько это стоит» — это фраза, которую вы печатаете ассистенту, а не скрипт, который вы пишете.
Установка: одна команда
Сервер — npm-пакет, который запускается по требованию через npx. Единственная обязательная настройка — ключ:
GENMUX_API_KEY=nb_live_... npx -y @genmux/mcpПеременные окружения:
| Переменная | По умолчанию | Назначение |
|---|---|---|
GENMUX_API_KEY | — (обязательно) | Ваш ключ genmux; не покидает вашу машину |
GENMUX_API_BASE | https://api.genmux.tech/v1 | Переопределение для тестового стенда |
GENMUX_OUTPUT_DIR | ./genmux-images | Куда generate_image сохраняет файлы, если попросить |
Вручную это не запускают — сервер стартует клиент. Настраивается именно клиент.
Сниппеты для клиентов
Claude Code и Claude Desktop
claude mcp add genmux -e GENMUX_API_KEY=nb_live_... -- npx -y @genmux/mcpCursor — .cursor/mcp.json в проекте (или глобальный файл из настроек Cursor):
{
"mcpServers": {
"genmux": {
"command": "npx",
"args": ["-y", "@genmux/mcp"],
"env": { "GENMUX_API_KEY": "nb_live_..." }
}
}
}OpenCode — блок mcp рядом с блоком provider в opencode.json:
{
"mcp": {
"genmux": {
"type": "local",
"command": ["npx", "-y", "@genmux/mcp"],
"environment": { "GENMUX_API_KEY": "nb_live_..." }
}
}
}Continue — в config.yaml:
mcpServers:
- name: genmux
command: npx
args: ["-y", "@genmux/mcp"]
env:
GENMUX_API_KEY: nb_live_...Хостинговый эндпоинт — для клиентов без шелла
Некоторые клиенты не могут запустить локальный процесс: браузерный ассистент, залоченный корпоративный ноутбук, команда, которая не хочет раскладывать ключи по конфигам. Для них тот же сервер работает у нас по адресу https://mcp.genmux.tech/mcp через Streamable HTTP, с ключом в заголовке Bearer:
{
"mcpServers": {
"genmux": {
"url": "https://mcp.genmux.tech/mcp",
"headers": { "Authorization": "Bearer nb_live_..." }
}
}
}В веб- и десктопных приложениях Claude это «custom connector» с этим URL. Набор инструментов тот же; отличается только то, где живёт ключ.
Что публикует сервер
Инструменты — то, что ассистент может вызвать:
| Инструмент | Что делает |
|---|---|
list_models | Каталог с ценами; kind фильтрует графические и текстовые модели |
estimate_cost | Сколько юнитов будет стоить запрос — до его выполнения |
generate_image | model, prompt, resolution, ratio, n, negative_prompt, reference_images, save — отправляет задание, ждёт, возвращает URL (и пути к файлам, если включён save) |
get_generation | Одно задание по id: статус, результаты, стоимость |
list_generations | Недавние задания аккаунта |
account_balance | Остаток юнитов |
Ресурсы — документы, которые ассистент может загрузить в контекст: genmux://docs/llms.txt, genmux://docs/openapi.yaml, genmux://models и сниппеты кода genmux://snippets/python, /node, /curl, /openai-sdk.
Промпты — два шаблона: integrate-genmux (проводит ассистента через добавление API в вашу кодовую базу, опираясь на сниппеты) и pick-a-model (задаёт правильные вопросы и рекомендует модель и разрешение).
Инструмента чата нет намеренно. Ваш ассистент и так чат-модель; если хочется DeepSeek или Qwen3 внутри него — это OpenAI-совместимый эндпоинт, а не MCP: см. посты про OpenCode и Continue.
Разобранный пример
Сервер подключён в Claude Code, в проекте есть папка public/:
Вы: Нужна hero-картинка для страницы цен — чистая изометрическая иллюстрация: стопки монет превращаются в пиксели, тёмный фон, 16:9. Используй nanobanana. Сначала оцени стоимость и не генерируй, пока я не скажу.
Ассистент вызывает estimate_cost с {"model": "nanobanana", "resolution": "1K", "ratio": "16:9", "n": 1} и отчитывается:
Ассистент: Одна картинка 1K на Nano Banana — 2 юнита (около $0.025 по тарифу Scale); для 2K понадобится Nano Banana Pro за 6 юнитов. На балансе 1 184 юнита. Генерирую в 1K?
Вы: Да, сохрани в public/hero-pricing.png.
Он вызывает generate_image с save: true и GENMUX_OUTPUT_DIR, указывающим на public/, ждёт задание (Nano Banana в 1K занимает несколько секунд) и возвращается с путём к файлу, id задания и фактическим списанием из записи задания. Если попросить три варианта (n: 3), оценка станет 6 юнитов≈ $0.073 × 1K Nano Banana — и ассистент должен сказать об этом до того, как потратит.
Чего ждать от хорошего клиента: он сам оценивает стоимость, когда запрос дорогой, использует list_models, когда вы называете модель приблизительно («та, что Pro»), и читает genmux://snippets/node перед тем, как писать код интеграции, вместо того чтобы угадывать форму запроса. Шаблон integrate-genmux делает последнюю привычку явной.
Чем это лучше shell-скрипта
Можно обернуть вызовы curl в скрипт и заставить ассистента его запускать. MCP-сервер даёт три вещи, которых у скрипта нет: типизированные схемы инструментов, которые модель понимает без документации; estimate_cost как полноценный шаг (ассистент спрашивает до того, как тратить); ресурсы, которые модель читает, чтобы написать правильный код. Неудачные задания возвращаются автоматически, так что ассистент, промахнувшийся с промптом, не стоит ничего, — а вот ассистент, который сгенерировал десять картинок в 4K, когда вы имели в виду одну, — это ровно тот случай, ради которого существует estimate_cost.
С чего начать
npx -y @genmux/mcp с вашим ключом, один из сниппетов выше — и ассистент перечисляет модели, называет цену и генерирует картинки с того же баланса, с которого оплачиваются DeepSeek и Qwen3. Детали модели и цены по разрешениям — на странице Nano Banana и странице цен; актуальный список инструментов и сниппеты клиентов — на странице MCP, а REST API, который оборачивает сервер, описан в документации.