Skip to main content
Glama

RV MCP Server

MCP-сервер (Model Context Protocol), который связывает ИИ-ассистентов, таких как Claude, с Autodesk/Tweak RV, отраслевым стандартом приложений для просмотра медиаконтента. Управляйте воспроизведением, сравнивайте кадры, настраивайте цветокоррекцию и управляйте сеансами просмотра — и всё это с помощью естественного языка.

Внутри RV не требуется установка плагинов. Используется встроенный сетевой прослушиватель RV с поддержкой скриптов Mu через remote-eval.

Требования

  • OpenRV (или RV 2022.3.1+) с включенным сетевым режимом

  • Python 3.10+

  • Менеджер пакетов uv

Быстрый старт

1. Запуск RV с поддержкой сети

Включите сеть в RV через RV → Networking → Enable Network (порт по умолчанию 45124).

Или из командной строки:

rv -network -networkPort 45124

2. Установка и регистрация

Claude Code (CLI):

claude mcp add --scope user rv-mcp -- uv run --no-sync --directory /path/to/RV_MCP rv-mcp

Примечание: --no-sync предотвращает конфликты блокировки файлов, когда несколько сеансов Claude используют один и тот же MCP-сервер. Запускайте uv sync вручную после изменения зависимостей.

Claude Desktop (~/.claude.json):

{
  "mcpServers": {
    "rv-mcp": {
      "command": "uv",
      "args": ["run", "--no-sync", "--directory", "/path/to/RV_MCP", "rv-mcp"]
    }
  }
}

Переменные окружения (опционально):

Переменная

По умолчанию

Описание

RV_MCP_HOST

127.0.0.1

Хост сети RV

RV_MCP_PORT

45124

Порт сети RV

3. Использование

Попросите Claude загрузить медиа, управлять воспроизведением, сравнить кадры или настроить цвета. Сервер автоматически преобразует естественный язык в команды RV.

Архитектура

Claude (stdio/MCP) --> FastMCP Server --> RV Network Protocol (TCP:45124) --> RV

Сервер поддерживает постоянное TCP-соединение с RV, используя пользовательский протокол на основе RvCommunicator из RV. Ключевые проектные решения:

  • Постоянное соединение с автоматическим переподключением при потере сокета

  • Потокобезопасность через threading.Lock для параллельных вызовов инструментов

  • Корректное завершение работы через обработчик atexit, который отправляет DISCONNECT (без этого RV отклоняет будущие соединения)

  • Обработка строк Mu — возвращаемые значения автоматически очищаются от кавычек и экранирования

Поток протокола

1. Connect TCP to 127.0.0.1:45124
2. Send: NEWGREETING <len> rv-mcp rvController
3. Send: PINGPONGCONTROL 1 0          (disable heartbeat)
4. Recv: NEWGREETING <len> <rv-name>   (consume RV's greeting)
5. For each command:
   Send: MESSAGE <len> RETURNEVENT remote-eval * { require commands; <mu_code> }
   Recv: MESSAGE <len> RETURN <value>
6. On shutdown:
   Send: MESSAGE <len> DISCONNECT

Управление цветом OCIO

Сервер включает полную поддержку OCIO v2. Когда установлена переменная $OCIO, RV может соответствовать точному преобразованию дисплея, используемому в ваших DCC-приложениях (3ds Max/Redshift, Nuke и т. д.).

Автоматическая настройка

В комплект входит скрипт rv_ocio_setup.py, который автоматически настраивает OCIO при загрузке медиа в RV:

  • Файлы EXR/HDR/TX автоматически определяются как scene-linear (ACEScg через роль scene_linear)

  • Преобразование дисплея устанавливается из настроек конфигурации по умолчанию (например, sRGB / ACES 1.0 SDR-video)

  • Метаданные цветности в EXR сопоставляются с цветовыми пространствами активной конфигурации

Для установки скопируйте rv_ocio_setup.py в путь поддержки RV:

# Windows
copy rv_ocio_setup.py %APPDATA%\RV\Python\

# Linux/macOS
cp rv_ocio_setup.py ~/.rv/Python/

Встроенный пакет ocio_source_setup в RV обнаружит и автоматически применит это переопределение.

Ручное управление OCIO через MCP

Инструмент

Описание

get_ocio_config

Список цветовых пространств, дисплеев, представлений и луков из активной конфигурации OCIO

set_ocio_colorspace

Установка входного цветового пространства для источника (вставляет узел OCIOFile)

set_ocio_display

Установка преобразования дисплея (вставляет узел OCIODisplay)

set_ocio_look

Применение лука OCIO к источнику

get_ocio_state

Получение текущего состояния узла OCIO в формате JSON

clear_ocio

Удаление узлов OCIO и восстановление конвейера по умолчанию

Сопоставление цветов Redshift + RV

Если вы используете конфигурацию OCIO от Redshift ($OCIO = C:\ProgramData\redshift\Data\OCIO\config.ocio), обратите внимание, что правила файлов помечают EXR как "Raw". Скрипт rv_ocio_setup.py переопределяет это, определяя форматы с плавающей запятой как scene-linear, гарантируя, что тональный компрессор ACES применяется в RV так же, как в окне рендеринга Redshift.

Инструменты (всего 47)

Выполнение (1)

Инструмент

Описание

execute_mu

Запуск произвольного кода Mu — «черный ход» для всего, что не покрыто специализированными инструментами

OCIO (6)

Инструмент

Описание

get_ocio_config

Получение информации о конфигурации OCIO (цветовые пространства, дисплеи, представления, луки)

set_ocio_colorspace

Установка входного цветового пространства OCIO для источника

set_ocio_display

Установка преобразования дисплея OCIO

set_ocio_look

Применение лука OCIO

get_ocio_state

Получение текущего состояния OCIO в формате JSON

clear_ocio

Удаление узлов OCIO, восстановление значений по умолчанию

Воспроизведение (17)

Инструмент

Описание

load_source

Загрузка медиафайла (последовательность изображений, фильм или одиночное изображение)

load_sources

Загрузка нескольких медиафайлов одновременно

play

Запуск воспроизведения

stop

Остановка воспроизведения

toggle_playback

Переключение воспроизведение/стоп, возвращает новое состояние

get_frame

Получение номера текущего кадра

set_frame

Переход к определенному кадру

step_forward

Шаг вперед на N кадров (по умолчанию 1)

step_backward

Шаг назад на N кадров (по умолчанию 1)

set_in_point

Установка начальной точки (начало диапазона воспроизведения)

set_out_point

Установка конечной точки (конец диапазона воспроизведения)

get_in_out_points

Получение текущих точек входа/выхода в формате JSON

set_fps

Установка частоты кадров воспроизведения

get_fps

Получение текущей частоты кадров воспроизведения

set_realtime

Включение/выключение режима реального времени (пропуск кадров для поддержания FPS)

set_play_mode

Установка режима цикла: loop, once или pingpong

set_playback_speed

Установка направления и скорости воспроизведения (1=вперед, -1=назад, 2=2x и т. д.)

get_frame_range

Получение полного состояния воспроизведения в формате JSON (кадр, диапазон, точки входа/выхода, воспроизведение, FPS)

Источники (7)

Инструмент

Описание

get_sources

Список всех загруженных узлов-источников в виде массива JSON

get_source_media_info

Получение подробной информации о медиа (разрешение, диапазон кадров, FPS, глубина цвета, каналы)

get_sources_at_frame

Получение узлов-источников, видимых на конкретном кадре

new_session

Создание нового пустого сеанса

clear_session

Очистка всех источников из текущего сеанса

save_session

Сохранение сеанса в файл .rv

get_session_info

Получение информации о сеансе в формате JSON (узел просмотра, диапазон кадров, количество источников)

Сравнение (4)

Инструмент

Описание

set_view_mode

Переключение вида: sequence (воспроизведение по порядку), stack (слои для сравнения), layout (плитка рядом)

set_composite_type

Установка режима композитинга стека: over, add, difference, -difference, replace, topmost

toggle_wipe

Переключение сравнения A/B (автоматически переключается в режим стека)

get_view_info

Получение текущего состояния вида в формате JSON

Цвет (12)

Инструмент

Описание

set_lut

Загрузка файла LUT (.3dl, .csp, .cube и т. д.) на цель (look, linearize, display)

clear_lut

Деактивация LUT на цели

set_cdl

Установка значений CDL (наклон, смещение, степень, насыщенность) — поддерживаются частичные обновления

clear_cdl

Деактивация цветокоррекции CDL

set_exposure

Установка экспозиции (поканально или равномерно)

set_gamma

Установка гамма-коррекции

set_saturation

Установка насыщенности

get_color_settings

Получение текущего состояния цветокоррекции в формате JSON

set_display_gamma

Установка гаммы дисплея (например, 2.2 для sRGB-подобных)

set_display_srgb

Включение/выключение преобразования дисплея sRGB

set_background

Установка фона окна просмотра: black, checker, grey18, grey50, crosshatch

Примеры использования

Загрузка и просмотр отснятого материала

"Load the EXR sequence at /shots/sh010/comp/sh010_comp.1-100#.exr"
"Play it back at 24fps"
"Go to frame 50"
"Set in point at 20 and out point at 80"

Сравнение двух версий

"Load both /shots/sh010/comp_v1.mov and /shots/sh010/comp_v2.mov"
"Switch to stack view"
"Set composite to difference mode"
"Toggle the wipe to compare side by side"

Цветокоррекция

"Apply CDL with slope [1.1, 0.95, 1.0] and saturation 1.2"
"Load the ACES LUT from /luts/sRGB.cube"
"Set exposure to 0.5"
"Show me the current color settings"

Продвинутый уровень (сырой Mu)

"Execute this Mu code: { require commands; let s = sources(); string(s.size()); }"

Структура проекта

RV_MCP/
├── pyproject.toml          # Package config, entry point, dependencies
├── README.md
├── .gitignore
└── src/
    ├── __init__.py
    ├── server.py           # FastMCP server + RvClient instantiation
    ├── rv_client.py        # Persistent TCP client (RV network protocol)
    └── tools/
        ├── __init__.py
        ├── execute.py      # execute_mu — raw Mu escape hatch
        ├── playback.py     # 17 playback/transport tools
        ├── sources.py      # 7 source & session tools
        ├── compare.py      # 4 view/compare tools
        ├── color.py        # 12 color/LUT/CDL tools
        └── ocio.py         # OCIO v2 color management tools

Устранение неполадок

"Could not connect to RV"

  • Убедитесь, что RV запущен с флагом -network

  • Проверьте, что порт 45124 не заблокирован брандмауэром

  • Используйте -networkPort 45124 для явного указания порта

RV отклоняет соединения после сбоя

Если сервер завершает работу без отправки DISCONNECT, RV может отклонять новые соединения. Перезапустите RV, чтобы очистить состояние. Сервер включает обработчик atexit, чтобы предотвратить это при нормальной работе.

Ошибки кода Mu

  • Всегда заключайте блоки кода в { require commands; ... }

  • Mu вычисляет обе ветки if/then/else — избегайте доступа к свойствам узлов, которые могут не существовать

  • Пути к файлам должны использовать прямые слэши; escape_mu_string() обрабатывает это автоматически

Ошибки тайм-аута

Тайм-аут по умолчанию составляет 30 секунд. Если код Mu выполняется дольше (например, при загрузке больших последовательностей), может возникнуть тайм-аут. Используйте execute_mu для длительных операций и рассмотрите возможность разбиения их на более мелкие шаги.

Разработка

# Install dependencies
uv sync

# Run the server directly
uv run rv-mcp

# Run with debug logging
uv run python -m src.server

Лицензия

MIT

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/Geddart/rv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server