Skip to main content
Glama

RV MCP Server

Ein MCP-Server (Model Context Protocol), der KI-Assistenten wie Claude mit Autodesk/Tweak RV verbindet, der branchenüblichen Anwendung für Medien-Reviews. Steuern Sie die Wiedergabe, vergleichen Sie Aufnahmen, passen Sie Farbkorrekturen an und verwalten Sie Review-Sitzungen – alles per natürlicher Sprache.

Es ist kein Plugin innerhalb von RV erforderlich. Verwendet den integrierten Netzwerk-Listener von RV mit Mu-Scripting via remote-eval.

Anforderungen

  • OpenRV (oder RV 2022.3.1+) mit aktiviertem Netzwerkmodus

  • Python 3.10+

  • uv Paketmanager

Schnellstart

1. RV mit Netzwerk starten

Aktivieren Sie das Netzwerk in RV über RV → Networking → Enable Network (Standard-Port 45124).

Oder über die Befehlszeile:

rv -network -networkPort 45124

2. Installieren und registrieren

Claude Code (CLI):

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

Hinweis: --no-sync verhindert Dateisperrkonflikte, wenn mehrere Claude-Sitzungen denselben MCP-Server gemeinsam nutzen. Führen Sie uv sync manuell aus, nachdem Sie Abhängigkeiten geändert haben.

Claude Desktop (~/.claude.json):

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

Umgebungsvariablen (optional):

Variable

Standard

Beschreibung

RV_MCP_HOST

127.0.0.1

RV-Netzwerk-Host

RV_MCP_PORT

45124

RV-Netzwerk-Port

3. Verwendung

Bitten Sie Claude, Medien zu laden, die Wiedergabe zu steuern, Aufnahmen zu vergleichen oder Farben anzupassen. Der Server übersetzt natürliche Sprache automatisch in RV-Befehle.

Architektur

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

Der Server unterhält eine persistente TCP-Verbindung zu RV unter Verwendung eines benutzerdefinierten Protokolls, das auf RVs RvCommunicator basiert. Wichtige Designentscheidungen:

  • Persistente Verbindung mit automatischer Wiederverbindung bei Socket-Verlust

  • Threadsicher durch threading.Lock für gleichzeitige Tool-Aufrufe

  • Sauberes Herunterfahren über einen atexit-Handler, der DISCONNECT sendet (ohne diesen lehnt RV zukünftige Verbindungen ab)

  • Mu-String-Verarbeitung — Rückgabewerte werden automatisch von Anführungszeichen befreit und maskiert

Protokollfluss

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

Der Server beinhaltet volle OCIO v2-Unterstützung. Wenn $OCIO gesetzt ist, kann RV die exakte Display-Transformation abgleichen, die von Ihren DCC-Anwendungen (3ds Max/Redshift, Nuke, etc.) verwendet wird.

Automatische Konfiguration

Ein rv_ocio_setup.py-Skript ist enthalten, das OCIO automatisch konfiguriert, wenn RV Medien lädt:

  • EXR/HDR/TX-Dateien werden automatisch als Scene-Linear erkannt (ACEScg über die scene_linear-Rolle)

  • Display-Transformation wird aus den Standardeinstellungen der Konfiguration gesetzt (z. B. sRGB / ACES 1.0 SDR-video)

  • Chromatizitäts-Metadaten in EXRs werden mit den Farbräumen der aktiven Konfiguration abgeglichen

Kopieren Sie zur Installation rv_ocio_setup.py in Ihren RV-Support-Pfad:

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

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

RVs integriertes ocio_source_setup-Paket erkennt und verwendet diese Überschreibung automatisch.

Manuelles OCIO via MCP

Tool

Beschreibung

get_ocio_config

Listet Farbräume, Displays, Views und Looks aus der aktiven OCIO-Konfiguration auf

set_ocio_colorspace

Setzt den Eingabe-Farbraum für eine Quelle (fügt OCIOFile-Node ein)

set_ocio_display

Setzt die Display-Transformation (fügt OCIODisplay-Node ein)

set_ocio_look

Wendet einen OCIO-Look auf eine Quelle an

get_ocio_state

Ruft den aktuellen OCIO-Node-Status als JSON ab

clear_ocio

Entfernt OCIO-Nodes und stellt die Standard-Pipeline wieder her

Redshift + RV Farbabgleich

Wenn Sie die OCIO-Konfiguration von Redshift verwenden ($OCIO = C:\ProgramData\redshift\Data\OCIO\config.ocio), beachten Sie, dass deren Dateiregeln EXRs als "Raw" markieren. Das rv_ocio_setup.py-Skript überschreibt dies, indem es Float-Formate als Scene-Linear erkennt und sicherstellt, dass der ACES-Tonemapper in RV genauso angewendet wird wie in der Render-Ansicht von Redshift.

Tools (insgesamt 47)

Ausführen (1)

Tool

Beschreibung

execute_mu

Führt beliebigen Mu-Code aus — Notausgang für alles, was nicht durch dedizierte Tools abgedeckt ist

OCIO (6)

Tool

Beschreibung

get_ocio_config

Ruft OCIO-Konfigurationsinformationen ab (Farbräume, Displays, Views, Looks)

set_ocio_colorspace

Setzt den OCIO-Eingabe-Farbraum für eine Quelle

set_ocio_display

Setzt die OCIO-Display-Transformation

set_ocio_look

Wendet einen OCIO-Look an

get_ocio_state

Ruft den aktuellen OCIO-Status als JSON ab

clear_ocio

Entfernt OCIO-Nodes, stellt Standardeinstellungen wieder her

Wiedergabe (17)

Tool

Beschreibung

load_source

Lädt eine Mediendatei (Bildsequenz, Film oder Einzelbild)

load_sources

Lädt mehrere Mediendateien gleichzeitig

play

Startet die Wiedergabe

stop

Stoppt die Wiedergabe

toggle_playback

Schaltet Wiedergabe/Stopp um, gibt den neuen Status zurück

get_frame

Ruft die aktuelle Framenummer ab

set_frame

Springt zu einem bestimmten Frame

step_forward

Geht N Frames vorwärts (Standard 1)

step_backward

Geht N Frames rückwärts (Standard 1)

set_in_point

Setzt den In-Point (Start des Wiedergabebereichs)

set_out_point

Setzt den Out-Point (Ende des Wiedergabebereichs)

get_in_out_points

Ruft aktuelle In/Out-Points als JSON ab

set_fps

Setzt die Wiedergabegeschwindigkeit in Bildern pro Sekunde

get_fps

Ruft die aktuelle Wiedergabe-FPS ab

set_realtime

Aktiviert/deaktiviert den Echtzeitmodus (überspringt Frames, um FPS zu halten)

set_play_mode

Setzt den Loop-Modus: loop, once oder pingpong

set_playback_speed

Setzt Wiedergaberichtung und -geschwindigkeit (1=vorwärts, -1=rückwärts, 2=2x, etc.)

get_frame_range

Ruft den vollständigen Wiedergabestatus als JSON ab (Frame, Bereich, In/Out, Wiedergabe, FPS)

Quellen (7)

Tool

Beschreibung

get_sources

Listet alle geladenen Quell-Nodes als JSON-Array auf

get_source_media_info

Ruft detaillierte Medieninformationen ab (Auflösung, Frame-Bereich, FPS, Bittiefe, Kanäle)

get_sources_at_frame

Ruft Quell-Nodes ab, die an einem bestimmten Frame sichtbar sind

new_session

Erstellt eine neue leere Sitzung

clear_session

Löscht alle Quellen aus der aktuellen Sitzung

save_session

Speichert die Sitzung in einer .rv-Datei

get_session_info

Ruft Sitzungsstatus als JSON ab (View-Node, Frame-Bereich, Quellenanzahl)

Vergleich (4)

Tool

Beschreibung

set_view_mode

Wechselt die Ansicht: sequence (in Reihenfolge abspielen), stack (Ebene für Vergleich), layout (nebeneinander kacheln)

set_composite_type

Setzt den Stack-Composite-Modus: over, add, difference, -difference, replace, topmost

toggle_wipe

Schaltet A/B-Wipe-Vergleich um (wechselt automatisch zur Stack-Ansicht)

get_view_info

Ruft aktuellen Ansichtsstatus als JSON ab

Farbe (12)

Tool

Beschreibung

set_lut

Lädt eine LUT-Datei (.3dl, .csp, .cube, etc.) auf ein Ziel (look, linearize, display)

clear_lut

Deaktiviert LUT auf einem Ziel

set_cdl

Setzt CDL-Werte (Slope, Offset, Power, Saturation) — Teilaktualisierungen unterstützt

clear_cdl

Deaktiviert CDL-Farbkorrektur

set_exposure

Setzt Belichtung (pro Kanal oder einheitlich)

set_gamma

Setzt Gammakorrektur

set_saturation

Setzt Sättigung

get_color_settings

Ruft aktuellen Farbkorrekturstatus als JSON ab

set_display_gamma

Setzt Display-Gamma (z. B. 2.2 für sRGB-ähnlich)

set_display_srgb

Aktiviert/deaktiviert sRGB-Display-Transformation

set_background

Setzt Viewport-Hintergrund: black, checker, grey18, grey50, crosshatch

Anwendungsbeispiele

Filmmaterial laden und überprüfen

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

Zwei Versionen vergleichen

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

Farbkorrektur

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

Fortgeschritten (roher Mu-Code)

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

Projektstruktur

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

Fehlerbehebung

"Could not connect to RV"

  • Stellen Sie sicher, dass RV mit dem -network-Flag läuft

  • Überprüfen Sie, ob Port 45124 nicht durch eine Firewall blockiert wird

  • Verwenden Sie -networkPort 45124, um den Port explizit festzulegen

RV lehnt Verbindungen nach einem Absturz ab

Wenn der Server beendet wird, ohne DISCONNECT zu senden, lehnt RV möglicherweise neue Verbindungen ab. Starten Sie RV neu, um den Status zu löschen. Der Server enthält einen atexit-Handler, um dies im Normalbetrieb zu verhindern.

Mu-Code-Fehler

  • Umschließen Sie Codeblöcke immer mit { require commands; ... }

  • Mu wertet beide Zweige von if/then/else aus — vermeiden Sie den Zugriff auf Eigenschaften von Nodes, die möglicherweise nicht existieren

  • Dateipfade müssen Schrägstriche verwenden; escape_mu_string() handhabt dies automatisch

Timeout-Fehler

Das Standard-Timeout beträgt 30 Sekunden. Wenn Mu-Code länger dauert (z. B. beim Laden großer Sequenzen), kann es zu einem Timeout kommen. Verwenden Sie execute_mu für lange Operationen und ziehen Sie in Betracht, diese in kleinere Schritte zu unterteilen.

Entwicklung

# Install dependencies
uv sync

# Run the server directly
uv run rv-mcp

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

Lizenz

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