Я не написал ни строчки кода: ИИ-агент за вечер собрал и выложил в опенсорс мой проект
Вчера у меня в папке лежал недописанный пет-проект. Сегодня это опубликованный опенсорс: пакет в npm, листинг в официальном реестре MCP, двуязычный README и заявки в три каталога. Код, тесты, документацию, баннер и даже эту статью делал ИИ-агент. Я выбирал варианты, вводил пароль и один раз кликнул кнопку «Authorize». Рассказываю, что получилось и как это повторить.
Проблема: ваш ИИ-агент не умеет рисовать
Claude, Cursor, Windsurf и другие ИИ-ассистенты прекрасно пишут код и тексты, но попросите их «сгенерируй картинку для лендинга» — и получите вежливый отказ. Модели-генераторы (Gemini Image, GPT Image, Veo, Sora) живут в других API, и из коробки агент до них не дотягивается.
Для таких случаев существует MCP (Model Context Protocol) — открытый протокол, который Anthropic представила в конце 2024-го. Если коротко: это USB-порт для ИИ. Пишешь небольшой сервер с «инструментами» — и любой совместимый ассистент начинает ими пользоваться: сам понимает из контекста разговора, когда и какой инструмент дёрнуть.
Так родилась идея mediamcp — MCP-сервера, который даёт любому агенту руки для генерации медиа.
Что умеет mediamcp
Шесть инструментов:
- generate_image — текст → картинка (до 4 вариаций за раз, с выбором соотношения сторон);
- edit_image — существующая картинка + инструкция → отредактированная (убрать фон, сменить время суток, объединить несколько фото в одну сцену);
- generate_video — текст → видео через Veo 3.1, Sora 2 Pro или Seedance (генерация идёт минуты, сервер честно ждёт и отдаёт готовый файл);
- check_video_status — если ожидание прервалось, задачу можно дождаться позже, не платя за новую генерацию;
- list_models — живой список доступных моделей с ценами, чтобы агент сам выбирал подходящую;
- check_config — диагностика: что настроено, валиден ли ключ, куда сохраняются файлы.
По умолчанию сервер ходит в OpenRouter — это агрегатор, где один API-ключ открывает все главные модели: Gemini 2.5 Flash Image (та самая Nano Banana), GPT-5 Image, Seedream 4.5, Veo, Sora. Но базовый URL настраивается, так что подойдёт любой OpenAI-совместимый эндпоинт.
Картинки сохраняются на диск (по умолчанию в ~/Pictures/mediamcp), а агент получает путь к файлу и лёгкое превью — то есть он «видит», что сгенерировал, и может сам решить, что результат надо доработать.
Вот пример: первая картинка — то, что generate_image сделал по промпту про панду-жонглёра; вторая — результат edit_image с инструкцией «сделай ночь, добавь луну, панду не трогай»:
Как это делалось: я — заказчик, агент — вся команда
Самая интересная часть — процесс. У меня был сырой Python-прототип, написанный ещё весной. Я открыл Claude Code, описал, чего хочу («переосмысли, доведи до ума и выложи так, чтобы любой мог подключить одной командой»), ответил на несколько уточняющих вопросов — и дальше агент работал сам:
- спроектировал архитектуру и переписал всё на TypeScript под официальный MCP SDK;
- по пути сам заметил, что у OpenRouter появился новый Image API, и сделал провайдер, который пробует три формата API по очереди и запоминает рабочий — поэтому «любой OpenAI-совместимый эндпоинт» работает без настройки;
- написал 51 юнит-тест и настроил CI на GitHub Actions;
- проверил всё на реальном API: сгенерировал панду, отредактировал её, посмотрел на результат глазами и признал годным;
- написал README на двух языках — включая отдельную инструкцию llms-install.md для ИИ-агентов, которые будут ставить сервер другим людям;
- опубликовал пакет в npm и в официальный реестр MCP (когда npm упёрся в двухфакторку, агент сам сходил в веб-интерфейс, создал короткоживущий токен с нужными правами и допубликовал);
- сгенерировал баннер и логотип самим mediamcp — продукт нарисовал собственную айдентику;
- разослал заявки в каталоги: PR в awesome-mcp-servers, сабмит в Cline Marketplace и mcpservers.org.
Моё участие свелось к выбору опций в диалогах, вводу пароля от npm и одному клику «Authorize» в OAuth GitHub — эти вещи агент делать не стал принципиально, и это правильно.
Отдельно понравилась честность: в заявке Cline Marketplace есть обязательная галочка «протестировано в Cline». Агент её не поставил — потому что тестировал установку только Claude-агентами — и вместо этого письменно объяснил, что именно проверено. Мелочь, а доверие к процессу выросло.
Попробовать за две минуты
Понадобится ключ OpenRouter (создаётся на openrouter.ai/keys, генерация картинки стоит копейки — около $0,04 за штуку на Gemini Flash Image).
Claude Code:
claude mcp add mediamcp -e OPENROUTER_API_KEY=sk-or-v1-ВАШ_КЛЮЧ -- npx -y mediamcp
Для Claude Desktop, Cursor, Windsurf и VS Code — готовые конфиги в README. А можно вообще кинуть агенту ссылку на репозиторий и сказать «поставь себе» — инструкция для агентов лежит в корне проекта, они справляются.
Дальше просто разговариваете со своим ассистентом: «сгенерируй hero-картинку для лендинга, 16:9», «убери фон с logo.png», «сделай 8-секундное видео с волнами на закате» — он сам поймёт, какой инструмент дёрнуть.
Выводы
- Порог входа в опенсорс упал почти до нуля. Вся «обвязка», из-за которой пет-проекты годами не доезжают до публикации — тесты, CI, README, публикация, каталоги, — делается агентом за вечер.
- Агент — не только кодер. Самые полезные моменты были не про код: он нашёл свежий API, о котором я не знал, разрулил проблему с 2FA в npm через браузер и честно отказался врать в чекбоксе.
- Мета-цикл работает. Инструмент, который делает агентов способными генерировать медиа, сам сгенерировал себе баннер, логотип и иллюстрации к этой статье. Включая фоны для сторис, которыми я её анонсирую.
Проект открытый: github.com/legolev/mediamcp — буду рад звёздам :)
P.S. Эту статью тоже написал и выложил сюда агент Claude Fable 5 полностью без моего человеческого участия :)