Skip to main content
Glama

Servidor MCP de RV

Servidor MCP (Model Context Protocol) que conecta asistentes de IA como Claude con Autodesk/Tweak RV, la aplicación de revisión de medios estándar en la industria. Controla la reproducción, compara tomas, ajusta la gradación de color y gestiona sesiones de revisión, todo mediante lenguaje natural.

No se requiere ningún plugin dentro de RV. Utiliza el listener de red integrado de RV con scripting Mu a través de remote-eval.

Requisitos

  • OpenRV (o RV 2022.3.1+) con el modo de red habilitado

  • Python 3.10+

  • Gestor de paquetes uv

Inicio rápido

1. Iniciar RV con red

Habilita la red en RV a través de RV → Networking → Enable Network (puerto predeterminado 45124).

O desde la línea de comandos:

rv -network -networkPort 45124

2. Instalar y registrar

Claude Code (CLI):

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

Nota: --no-sync evita conflictos de bloqueo de archivos cuando varias sesiones de Claude comparten el mismo servidor MCP. Ejecuta uv sync manualmente después de cambiar las dependencias.

Claude Desktop (~/.claude.json):

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

Variables de entorno (opcional):

Variable

Predeterminado

Descripción

RV_MCP_HOST

127.0.0.1

Host de red de RV

RV_MCP_PORT

45124

Puerto de red de RV

3. Uso

Pídele a Claude que cargue medios, controle la reproducción, compare tomas o ajuste colores. El servidor traduce automáticamente el lenguaje natural a comandos de RV.

Arquitectura

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

El servidor mantiene una conexión TCP persistente con RV utilizando un protocolo personalizado basado en RvCommunicator de RV. Decisiones clave de diseño:

  • Conexión persistente con reconexión automática en caso de pérdida de socket

  • Seguro para hilos (Thread-safe) mediante threading.Lock para llamadas a herramientas concurrentes

  • Cierre limpio mediante un manejador atexit que envía DISCONNECT (sin esto, RV rechaza conexiones futuras)

  • Manejo de cadenas Mu — los valores de retorno se eliminan automáticamente de comillas y caracteres de escape

Flujo del protocolo

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

Gestión de color OCIO

El servidor incluye soporte completo para OCIO v2. Cuando $OCIO está configurado, RV puede igualar la transformación de pantalla exacta utilizada por tus aplicaciones DCC (3ds Max/Redshift, Nuke, etc.).

Configuración automática

Se incluye un script rv_ocio_setup.py que configura automáticamente OCIO cuando RV carga medios:

  • Archivos EXR/HDR/TX se detectan automáticamente como scene-linear (ACEScg a través del rol scene_linear)

  • Transformación de pantalla se establece a partir de los valores predeterminados de la configuración (ej. sRGB / ACES 1.0 SDR-video)

  • Metadatos de cromaticidad en EXRs se comparan con los espacios de color de la configuración activa

Para instalar, copia rv_ocio_setup.py a tu ruta de soporte de RV:

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

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

El paquete integrado ocio_source_setup de RV detectará y utilizará esta anulación automáticamente.

OCIO manual mediante MCP

Herramienta

Descripción

get_ocio_config

Lista espacios de color, pantallas, vistas y looks de la configuración OCIO activa

set_ocio_colorspace

Establece el espacio de color de entrada para una fuente (inserta nodo OCIOFile)

set_ocio_display

Establece la transformación de pantalla (inserta nodo OCIODisplay)

set_ocio_look

Aplica un look OCIO a una fuente

get_ocio_state

Obtiene el estado actual del nodo OCIO como JSON

clear_ocio

Elimina nodos OCIO y restaura la tubería predeterminada

Coincidencia de color Redshift + RV

Si utilizas la configuración OCIO de Redshift ($OCIO = C:\ProgramData\redshift\Data\OCIO\config.ocio), ten en cuenta que sus reglas de archivo marcan los EXR como "Raw". El script rv_ocio_setup.py anula esto detectando formatos de punto flotante como scene-linear, asegurando que el tonemapper ACES se aplique en RV igual que en la vista de renderizado de Redshift.

Herramientas (47 en total)

Ejecución (1)

Herramienta

Descripción

execute_mu

Ejecuta código Mu arbitrario — vía de escape para cualquier cosa no cubierta por herramientas dedicadas

OCIO (6)

Herramienta

Descripción

get_ocio_config

Obtiene información de configuración OCIO (espacios de color, pantallas, vistas, looks)

set_ocio_colorspace

Establece el espacio de color de entrada OCIO para una fuente

set_ocio_display

Establece la transformación de pantalla OCIO

set_ocio_look

Aplica un look OCIO

get_ocio_state

Obtiene el estado OCIO actual como JSON

clear_ocio

Elimina nodos OCIO, restaura valores predeterminados

Ejecución (1)

Herramienta

Descripción

execute_mu

Ejecuta código Mu arbitrario — vía de escape para cualquier cosa no cubierta por herramientas dedicadas

Reproducción (17)

Herramienta

Descripción

load_source

Carga un archivo de medios (secuencia de imágenes, película o imagen única)

load_sources

Carga múltiples archivos de medios a la vez

play

Inicia la reproducción

stop

Detiene la reproducción

toggle_playback

Alterna reproducción/parada, devuelve el nuevo estado

get_frame

Obtiene el número de fotograma actual

set_frame

Salta a un fotograma específico

step_forward

Avanza N fotogramas (predeterminado 1)

step_backward

Retrocede N fotogramas (predeterminado 1)

set_in_point

Establece el punto de entrada (inicio del rango de reproducción)

set_out_point

Establece el punto de salida (fin del rango de reproducción)

get_in_out_points

Obtiene los puntos de entrada/salida actuales como JSON

set_fps

Establece los fotogramas por segundo de reproducción

get_fps

Obtiene los FPS de reproducción actuales

set_realtime

Habilita/deshabilita el modo en tiempo real (salta fotogramas para mantener los FPS)

set_play_mode

Establece el modo de bucle: loop, once o pingpong

set_playback_speed

Establece la dirección y velocidad de reproducción (1=adelante, -1=atrás, 2=2x, etc.)

get_frame_range

Obtiene el estado completo de reproducción como JSON (fotograma, rango, entrada/salida, reproduciendo, fps)

Fuentes (7)

Herramienta

Descripción

get_sources

Lista todos los nodos de fuente cargados como matriz JSON

get_source_media_info

Obtiene información detallada de los medios (resolución, rango de fotogramas, fps, profundidad de bits, canales)

get_sources_at_frame

Obtiene los nodos de fuente visibles en un fotograma específico

new_session

Crea una nueva sesión vacía

clear_session

Borra todas las fuentes de la sesión actual

save_session

Guarda la sesión en un archivo .rv

get_session_info

Obtiene el estado de la sesión como JSON (nodo de vista, rango de fotogramas, recuento de fuentes)

Comparación (4)

Herramienta

Descripción

set_view_mode

Cambia la vista: sequence (reproducir en orden), stack (capa para comparación), layout (mosaico lado a lado)

set_composite_type

Establece el modo de composición de pila: over, add, difference, -difference, replace, topmost

toggle_wipe

Alterna la comparación de barrido A/B (cambia automáticamente a la vista de pila)

get_view_info

Obtiene el estado de vista actual como JSON

Color (12)

Herramienta

Descripción

set_lut

Carga un archivo LUT (.3dl, .csp, .cube, etc.) en un objetivo (look, linearize, display)

clear_lut

Desactiva LUT en un objetivo

set_cdl

Establece valores CDL (pendiente, desplazamiento, potencia, saturación) — se admiten actualizaciones parciales

clear_cdl

Desactiva la corrección de color CDL

set_exposure

Establece la exposición (por canal o uniforme)

set_gamma

Establece la corrección gamma

set_saturation

Establece la saturación

get_color_settings

Obtiene el estado actual de corrección de color como JSON

set_display_gamma

Establece la gamma de pantalla (ej. 2.2 para sRGB)

set_display_srgb

Habilita/deshabilita la transformación de pantalla sRGB

set_background

Establece el fondo del visor: black, checker, grey18, grey50, crosshatch

Ejemplos de uso

Cargar y revisar metraje

"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"

Comparar dos versiones

"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"

Corrección de color

"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"

Avanzado (Mu sin procesar)

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

Estructura del proyecto

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

Solución de problemas

"Could not connect to RV"

  • Asegúrate de que RV se esté ejecutando con el flag -network

  • Comprueba que el puerto 45124 no esté bloqueado por un firewall

  • Usa -networkPort 45124 para establecer explícitamente el puerto

RV rechaza conexiones después de un bloqueo

Si el servidor sale sin enviar DISCONNECT, RV puede rechazar nuevas conexiones. Reinicia RV para borrar el estado. El servidor incluye un manejador atexit para evitar esto bajo operación normal.

Errores de código Mu

  • Envuelve siempre los bloques de código en { require commands; ... }

  • Mu evalúa ambas ramas de if/then/else — evita el acceso a propiedades en nodos que pueden no existir

  • Las rutas de archivo deben usar barras inclinadas hacia adelante; escape_mu_string() maneja esto automáticamente

Errores de tiempo de espera (Timeout)

El tiempo de espera predeterminado es de 30 segundos. Si el código Mu tarda más (ej. cargar secuencias grandes), puede agotarse el tiempo. Usa execute_mu para operaciones largas y considera dividirlas en pasos más pequeños.

Desarrollo

# Install dependencies
uv sync

# Run the server directly
uv run rv-mcp

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

Licencia

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