MCP Video Gen
MCP Video Gen
Самодостаточный MCP-сервер, который может предоставлять локальные медиа-генерационные бэкенды, такие как ComfyUI и Blender, а также обеспечивать локальный анализ медиа, редактирование, FFmpeg, HyperFrames, таймлайн, субтитры, речь и аудиоутилиты.
Проект предназначен только для развертываний Portainer: публичный репозиторий содержит обычное многофайловое приложение, в то время как один Stack video-mcp.yml выступает в роли загрузчика для неизменяемых релизов GitHub.
Возможности
Обнаруживать узлы ComfyUI, фактически зарегистрированные через
/object_info, когда ComfyUI доступен.Сканировать доступные только для чтения директории
models/иcustom_nodes/ComfyUI, если они смонтированы.Просматривать совместимые файлы исходного кода/документации пользовательских узлов.
Отправлять произвольный корректный JSON рабочего процесса API ComfyUI и проверять состояние очереди/истории/вывода.
Опционально управлять установленным на хосте Blender через аутентифицированный мост для автоматизации
bpy, рендеринга, анимационного рендеринга и экспорта в GLB.Импортировать файлы от MCP-клиента/ИИ в постоянный кеш с помощью текста, одноразовой base64 или чанковой бинарной передачи.
Возвращать кешированные файлы клиенту/ИИ через аутентифицированную HTTP-загрузку, встроенную base64 или ограниченное чанковое чтение base64.
Загружать входные данные, кешировать выходные и извлекать сгенерированные изображения, видео, аудио, 3D, сцены, субтитры и другие файлы через единый контракт
file_id.Создавать и рендерить локальные проекты HyperFrames с использованием HTML/CSS/медиа.
Зондировать, транскодировать, объединять, накладывать, микшировать аудио, обрезать, реверсировать, зацикливать, изменять скорость, извлекать кадры с помощью FFmpeg.
Обнаруживать тишину, черные/замороженные участки, громкость, чересстрочную развертку, области обрезки, ключевые кадры и объективные различия SSIM/PSNR.
Создавать контактные листы/раскадровки и выполнять легкий анализ схожести кадров, движения, дублирования кадров и лучшего кадра.
Обнаруживать и разбивать сцены с помощью PySceneDetect.
Создавать, изменять временные параметры, преобразовывать, стилизовать и вживлять субтитры с помощью pysubs2 + FFmpeg.
Поддерживать постоянные таймлайны OpenTimelineIO с треками, клипами, переходами, маркерами, переупорядочиванием, проверкой и экспортом.
Обнаруживать биты, темп, атаки и высоту тона с помощью aubio.
Локально подавлять шум речи с помощью RNNoise.
Обнаруживать речевые сегменты с помощью небольшой модели Silero VAD ONNX.
Транскрибировать медиа, генерировать субтитры и получать временные метки уровня слов локально с помощью whisper.cpp.
Опционально синтезировать речь с помощью предоставленных пользователем голосов Piper; Piper отключен по умолчанию.
Опционально проверять JWT Cloudflare Access на источнике и запускать сайдкар Cloudflare Tunnel.
Этот сервер намеренно не содержит фиксированные AI-генерационные рабочие процессы, долговременную память или навыки агента. Он предоставляет примитивы выполнения, чтобы клиент или отдельный MCP знаний/навыков мог решить, как должны строиться рабочие процессы.
ComfyUI и Blender являются внешними опциональными бэкендами. Если один из бэкендов отключен, отсутствует или временно недоступен, сам MCP остается работоспособным. Инструменты, зависящие от сети, возвращают читаемый моделью результат available=false вместо того, чтобы вывести сервер из строя или вызвать ошибку инструмента из-за отсутствия бэкенда.
Related MCP server: comfyui-mcp-server-node
Архитектура
MCP client / AI
|
|<------ generic MCP file transfer ------>
v
MCP Video Gen + persistent file_id cache
|
|---------------- optional ComfyUI API
| |
| +-- installed models
| +-- custom nodes
| +-- image/video/audio generation
|
|---------------- optional Blender bridge on VM
| |
| +-- bpy scene creation/editing
| +-- .blend / GLB export
| +-- still / animation rendering
|
|---------------- HyperFrames
|---------------- OpenTimelineIO / subtitles
|---------------- scene / frame analysis
|---------------- whisper.cpp / Silero VAD / RNNoise / aubio
+---------------- FFmpeg
All execution paths exchange files through the same MCP cache.Развертывание в Portainer
Используйте video-mcp.yml в качестве определения Stack.
Опциональный ComfyUI
Типичные переменные подключения ComfyUI:
COMFYUI_HOST=host.docker.internal
COMFYUI_PORT=8188
COMFYUI_SCHEME=httpДля обнаружения файловой системы укажите пути хоста, когда ComfyUI существует:
COMFYUI_MODELS_PATH=/host/path/to/ComfyUI/models
COMFYUI_CUSTOM_NODES_PATH=/host/path/to/ComfyUI/custom_nodesЭти переменные пути больше не требуются для запуска MCP. Stack имеет общие резервные пустые директории, поэтому он может запуститься до установки ComfyUI. Если ComfyUI недоступен, его сетевые инструменты сообщают об этом состоянии модели, в то время как локальные инструменты MCP продолжают работать.
Опциональный Blender
Blender отключен по умолчанию:
BLENDER_ENABLED=false
BLENDER_BRIDGE_URL=http://host.docker.internal:9876
BLENDER_BRIDGE_TOKEN=
BLENDER_BRIDGE_TIMEOUT_SEC=7200Рекомендуемая интеграция запускает scripts/blender_bridge.py напрямую на виртуальной машине как выделенную учетную запись ОС с низкими привилегиями. Контейнер связывается с ним через аутентифицированный локальный HTTP-мост; сам Blender работает без графического интерфейса на хосте. Это позволяет избежать монтирования корневой файловой системы хоста или исполняемых файлов хоста в контейнер MCP.
После установки моста настройте его приватно в Portainer:
BLENDER_ENABLED=true
BLENDER_BRIDGE_URL=http://host.docker.internal:9876
BLENDER_BRIDGE_TOKEN=<same long random token used by the host bridge>См. docs/BLENDER_BRIDGE.md для получения информации о настройке, безопасности, усилении безопасности systemd, потоке файлов и примерах.
Cloudflare Tunnel
Если вы используете включенный сайдкар Cloudflare Tunnel, укажите:
CLOUDFLARED_TUNNEL_TOKEN=<set privately in Portainer>Направьте удаленное имя хоста туннела на:
http://video-mcp:8000Конечная точка MCP:
https://your-public-host.example/mcpCloudflare Access / Managed OAuth
Приложение может проверить JWT Cloudflare Access на источнике. Настройте эти значения приватно в Portainer:
CF_ACCESS_VERIFY=true
CF_ACCESS_TEAM_DOMAIN=https://your-team.cloudflareaccess.com
CF_ACCESS_AUD=<Access application audience tag>
PUBLIC_BASE_URL=https://your-public-host.exampleНикакой реальный домен, аудитория, токен туннела, токен моста, внутрений IP или учетные данные не должны находиться в этом публичном репозитории.
Доступность внешних бэкендов
external_backends_status сообщает текущее состояние ComfyUI и Blender. inventory_summary включает тот же статус бэкендов наряду с локальными возможностями.
Когда внешний бэкенд недоступен, вызовы возвращают структуру, такую как:
{
"ok": false,
"available": false,
"backend": "blender",
"status": "unavailable",
"message": "Blender integration is disabled..."
}Это преднамеренно отличается от сбоя сервера MCP: модель узнает, что один опциональный путь выполнения недоступен, и может продолжить с другим.
Передача файлов и общий кеш
Каждый сгенерированный/импортированный артефакт нормируется в кеш MCP и идентифицируется по file_id. Это слой обмена между AI-клиентом, ComfyUI, Blender, FFmpeg, HyperFrames, субтирами, таймлайнами и аудиоутилитами.
Клиент / AI -> MCP
Для маленких файлов:
cache_text_file
cache_file_base64Для более крупных бинарных файлов:
file_upload_begin
file_upload_chunk
file_upload_finish
file_upload_abortЧанковые загрузки могут указывать ожидаемую длину в байтах и SHA-256 перед продвижением в постоянный кеш.
MCP -> клиент / AI
Метаданные:
get_cached_file_infoМаленкий существующий путь совместимости:
get_output_inline_base64Ограниченные общие чтения:
read_cached_file_chunk_base64Каждый обычный объект метаданных кеша также содержит /files/{file_id} и, когда настроен PUBLIC_BASE_URL, полный аутентифицированный URL для загрузки.
Это означает, что AI может написать скрипт Blender Python как текст, поместить любые ссылочные артефакты в кеш, отправить эти значения file_id в Blender, получиь .blend/.glb/рендеры обратно как новые значения file_id, а затем подать эти файлы в ComfyUI или локальный стэк постобработки.
Продвинутые локальные медиаутилиты
Среда выполнения подготавливает несколько небольших локальных утилит в дополнение к FFmpeg/HyperFrames. Виртуальное окружение Python содежит PySceneDetect, OpenTimelineIO, pysubs2, ONNX Runtime, NmPy и headles OpenCV. Debian предоставляет маленкий CLI-пакет aubio-tools. RNNoise и whiper.cpp собираются локально из закрепленного исходного кода вышестоящего проекта в постоянный том данных.
Артефакты моделей/исходного кода Silero VAD, RNNoise и whiper.cpp хранятся под постоянным томом данных. Загрузка исходного кода RNNoise и модели, а также моделей Silero/Whisper использует явную проверку SHA-256. Модель Whiper по умолчанию - это маленкая квантизированная модель, предназначенная для легковесной локальной транскрипции; URL-ы/хэши моделей и ссылки на источники могут быть переопределены через переменные Stack.
Соотвествующие переменные включают:
SILERO_VAD_ENABLED=true
SILERO_VAD_MODEL_URL=<public model URL>
SILERO_VAD_MODEL_SHA256=<expected sha256>
RNNOISE_ENABLED=true
RNNOISE_REF=<pinned upstream commit>
RNNOISE_SOURCE_URL=<public source archive URL>
RNNOISE_SOURCE_SHA256=<expected sha256>
RNNOISE_MODEL_URL=<public model URL>
RNNOISE_MODEL_SHA256=<expected sha256>
WHISPER_CPP_ENABLED=true
WHISPER_CPP_REF=v1.8.6
WHISPER_CPP_BUILD_JOBS=2
WHISPER_MODEL_AUTO_DOWNLOAD=true
WHISPER_MODEL_NAME=tiny-q5_1
WHISPER_MODEL_URL=<public model URL>
WHISPER_MODEL_SHA256=<expected sha256>Первый запуск после включения этих утилит может занять больше времени, так как RNNoise и whiper.cpp собираются локально, а выбранные артефакты загружаются. Полученные сборки и модели остаются в /data, поетому обычное пересоздание контейнера не поворяет эти сборки, когда постоянный том сохраняется. Stack дает первому запуску расширенный грейс-период проверки здоровья по этой причине.
Опциональный Piper TTS
Piper реализован как опциональная среда выполнения и отключен по умолчанию:
PIPER_ENABLED=false
PIPER_PACKAGE_SPEC=piper-ttsПри включении ни один голос не загружаетя автоматически. Файлы .onnx голосов и сооветствующие конфигурационные файлы находтся в /data/piper/voises; они могут быть импортированы из MCP-кеша медиа с помощью piper_iport_voise_file. Это деает TTS опциональным, поскольку ComfyUI сам может хостить аудио/TTS рабочие процессы.
См. THIRD_PARTY.md для заметок о лицензировании сторонних компонентов.
Выбор релиза
Stack подерживает:
VIDEO_MCP_VERSION=latest
VIDEO_MCP_CHECK_UPDATES_ON_START=true
VIDEO_MCP_FORCE_REFRESH=falselatest означает наивысший не-черновик, не-пре-релиз GitHub Release, тег которого точно соответствует vX.Y.Z. Это не означает main.
Также можно закрепить релиз:
VIDEO_MCP_VERSION=v2.4.0или коммит SHA:
VIDEO_MCP_VERSION=<commit-sha>Когда проверка обновлений отключена и существует валидный источник /current, запуск полностью кеш-первым. Неудачная попытка поиса, загрузки или проверки архива откатывается к последеему извесному хорошему источнику, если таковой существует.
Постоянные томы
Stack разделяет три области ответственности:
video_mcp_code -> /opt/video-mcp versioned source cache + /current
video_mcp_venv -> /opt/venv persistent Python virtual environment
video_mcp_data -> /data media, timelines, models, local tooling, HyperFrames projects/cacheКорневой каталог данных приложения по умолчанию - /data. Прямые/не Stack развертывания могут переопределить его через VIDEO_MCP_DATA_ROOT; импорт video_mcp.server или video_mcp.entrypoint не создает каталог. Каталоги среды выполнения создаются только при запуске приложения.
Виртуальное окружение Python перестраивается только при изменении requirements.txt. Перестройка очищает содержимое смонтированного каталога venv; она никогда не удаляет саму точку монтирования Docker.
Безопасность загрузчика исходного кода
Архивы исходного кода загружаются с кодолаода GitHub в промежуточный каталог и проверяются перед извлечением. Загрузчик откланяет:
абсолютные пути;
обход
..;символические ссылки;
жеские ссылки;
архивы с более чем одним корневым каталогом верхнего уровня.
Релиз получает .mcp-source-ready только после успешного извлечения и проверок контракта выполнения. /current переключается только после этого, так что прерванное или поврежденное обновление не может заменить последний извесный хороший источник.
Монтирования файловой системы моделей и пользовательских узлов ComfyUI доступны только для чтения. Загрузки исходного кода/моделей AI утилит используют временные файлы и проверку SHA-256 перед заменой кешированных артефактов. Опциональный мост Blender использует аутентификацию по токену Bearer и передает только объявленные входы/выходы задания, но произвольный Python Blender остается мощным, поэтому мост должен быть изолирован непривилегированной учетной записью ОС.
HyperFrames
HyperFrames работает локально в контейнере MCP и использует ту же постоянную област /data, что и MCP-кеш медиа. Ассеы браузера кешируются постоянно под /data/hyperframes-home.
Спецификация пакета по умолчанию закрепена в Stack для воспроизводимости и может быть переопределена приватно:
HYPERFRAMES_NPM_SPEC=hyperframes@0.7.111Навыки HyperFrames намеренно отключены в этом сервере выполнения (HYPERFRAMES_SKIP_SKILLS=1).
Разработка
python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt pytest PyYAML
PYTHONPATH=src python -m pytest -q
python scripts/check_public_repo.pyCI проверяет компиляцию Python, импорты сервера/точки входа, тесты, анализ YAML, синтаксис оболочки/Python-хелперов, рендеринг Compose, согласованность версий/списка изменений и защитные ограждения для секретов/частных сетей публичного репозитория.
Процесс релиза
Разрабатывайте на ветке и откройте PR.
CI должен пройти.
Обновите
VERSIONиCHANGELOG.md.Слейте в
main.CI создает неизменяемый тег
vX.Y.Zи сооветствующий стабильный GitHub Relese, если он еще не существует.
Теги/релизы приложения зарезервированы для точных имен vX.Y.Z, чтобы несвязанные модели или ресизы ассеов не могли повлиять на разрешение VIDEO_MCP_VERSION=latest.
Лицензия и атрибуция
Лицензировано по Apache License 2.0. См. LICENSE.
Рестрибьюции и производные работы должны соханять уведомление об атрибуции в NOTICE в сооветстви с Apache License 2.0. Компоненты сторонних разработчиков соханяют свои собственные лицензии; см. THIRD_PARTY.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for AI-powered image, audio, and video generation, enabling media creation directly from Claude, Cursor, and other MCP clients.1144MIT
- Alicense-qualityCmaintenanceA lightweight MCP server that bridges AI agents with a local ComfyUI instance to generate and iteratively refine images, audio, and video through conversational tool calls.41MIT
- AlicenseAqualityCmaintenanceMulti-provider media generation MCP server that generates images, videos, audio, and transcriptions from text prompts using OpenAI, xAI, Gemini, ElevenLabs, and BFL through a single unified interface.6811MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables local AI agents to generate images and videos through the OpenRouter API, manage a browsable media library, and track generation costs.11MIT
Related MCP Connectors
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
MCP server for Wan AI video generation
MCP server for Hailuo (MiniMax) AI video generation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/the-code-learner/MCP-video-gen'
If you have feedback or need assistance with the MCP directory API, please join our Discord server