RV MCP Server
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 451242. Installieren und registrieren
Claude Code (CLI):
claude mcp add --scope user rv-mcp -- uv run --no-sync --directory /path/to/RV_MCP rv-mcpHinweis:
--no-syncverhindert Dateisperrkonflikte, wenn mehrere Claude-Sitzungen denselben MCP-Server gemeinsam nutzen. Führen Sieuv syncmanuell 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-Netzwerk-Host |
|
| 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) --> RVDer 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.Lockfür gleichzeitige Tool-AufrufeSauberes Herunterfahren über einen
atexit-Handler, derDISCONNECTsendet (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> DISCONNECTOCIO-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 |
| Listet Farbräume, Displays, Views und Looks aus der aktiven OCIO-Konfiguration auf |
| Setzt den Eingabe-Farbraum für eine Quelle (fügt OCIOFile-Node ein) |
| Setzt die Display-Transformation (fügt OCIODisplay-Node ein) |
| Wendet einen OCIO-Look auf eine Quelle an |
| Ruft den aktuellen OCIO-Node-Status als JSON ab |
| 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 |
| Führt beliebigen Mu-Code aus — Notausgang für alles, was nicht durch dedizierte Tools abgedeckt ist |
OCIO (6)
Tool | Beschreibung |
| Ruft OCIO-Konfigurationsinformationen ab (Farbräume, Displays, Views, Looks) |
| Setzt den OCIO-Eingabe-Farbraum für eine Quelle |
| Setzt die OCIO-Display-Transformation |
| Wendet einen OCIO-Look an |
| Ruft den aktuellen OCIO-Status als JSON ab |
| Entfernt OCIO-Nodes, stellt Standardeinstellungen wieder her |
Wiedergabe (17)
Tool | Beschreibung |
| Lädt eine Mediendatei (Bildsequenz, Film oder Einzelbild) |
| Lädt mehrere Mediendateien gleichzeitig |
| Startet die Wiedergabe |
| Stoppt die Wiedergabe |
| Schaltet Wiedergabe/Stopp um, gibt den neuen Status zurück |
| Ruft die aktuelle Framenummer ab |
| Springt zu einem bestimmten Frame |
| Geht N Frames vorwärts (Standard 1) |
| Geht N Frames rückwärts (Standard 1) |
| Setzt den In-Point (Start des Wiedergabebereichs) |
| Setzt den Out-Point (Ende des Wiedergabebereichs) |
| Ruft aktuelle In/Out-Points als JSON ab |
| Setzt die Wiedergabegeschwindigkeit in Bildern pro Sekunde |
| Ruft die aktuelle Wiedergabe-FPS ab |
| Aktiviert/deaktiviert den Echtzeitmodus (überspringt Frames, um FPS zu halten) |
| Setzt den Loop-Modus: |
| Setzt Wiedergaberichtung und -geschwindigkeit (1=vorwärts, -1=rückwärts, 2=2x, etc.) |
| Ruft den vollständigen Wiedergabestatus als JSON ab (Frame, Bereich, In/Out, Wiedergabe, FPS) |
Quellen (7)
Tool | Beschreibung |
| Listet alle geladenen Quell-Nodes als JSON-Array auf |
| Ruft detaillierte Medieninformationen ab (Auflösung, Frame-Bereich, FPS, Bittiefe, Kanäle) |
| Ruft Quell-Nodes ab, die an einem bestimmten Frame sichtbar sind |
| Erstellt eine neue leere Sitzung |
| Löscht alle Quellen aus der aktuellen Sitzung |
| Speichert die Sitzung in einer |
| Ruft Sitzungsstatus als JSON ab (View-Node, Frame-Bereich, Quellenanzahl) |
Vergleich (4)
Tool | Beschreibung |
| Wechselt die Ansicht: |
| Setzt den Stack-Composite-Modus: |
| Schaltet A/B-Wipe-Vergleich um (wechselt automatisch zur Stack-Ansicht) |
| Ruft aktuellen Ansichtsstatus als JSON ab |
Farbe (12)
Tool | Beschreibung |
| Lädt eine LUT-Datei ( |
| Deaktiviert LUT auf einem Ziel |
| Setzt CDL-Werte (Slope, Offset, Power, Saturation) — Teilaktualisierungen unterstützt |
| Deaktiviert CDL-Farbkorrektur |
| Setzt Belichtung (pro Kanal oder einheitlich) |
| Setzt Gammakorrektur |
| Setzt Sättigung |
| Ruft aktuellen Farbkorrekturstatus als JSON ab |
| Setzt Display-Gamma (z. B. 2.2 für sRGB-ähnlich) |
| Aktiviert/deaktiviert sRGB-Display-Transformation |
| Setzt Viewport-Hintergrund: |
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 toolsFehlerbehebung
"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/elseaus — vermeiden Sie den Zugriff auf Eigenschaften von Nodes, die möglicherweise nicht existierenDateipfade 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.serverLizenz
MIT
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