RV MCP サーバー
Claude などの AI アシスタントを、業界標準のメディアレビューアプリケーションである Autodesk/Tweak RV に接続する MCP (Model Context Protocol) サーバーです。再生制御、ショットの比較、カラーグレーディングの調整、レビューセッションの管理をすべて自然言語で行えます。
RV 内部にプラグインは不要です。RV の組み込みネットワークリスナーと remote-eval を介した Mu スクリプトを使用します。
要件
OpenRV (または RV 2022.3.1 以降) — ネットワークモードが有効であること
Python 3.10+
uv パッケージマネージャー
Related MCP server: UE5 MCP Server
クイックスタート
1. RV をネットワークモードで起動
RV → Networking → Enable Network から RV のネットワークを有効にします(デフォルトポートは 45124)。
またはコマンドラインから起動します:
rv -network -networkPort 451242. インストールと登録
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 ネットワークホスト |
|
| RV ネットワークポート |
3. 使用方法
Claude にメディアの読み込み、再生制御、ショットの比較、色の調整などを依頼してください。サーバーが自然言語を RV コマンドに自動変換します。
アーキテクチャ
Claude (stdio/MCP) --> FastMCP Server --> RV Network Protocol (TCP:45124) --> RVこのサーバーは、RV の RvCommunicator に基づくカスタムプロトコルを使用して、RV との 永続的な TCP 接続 を維持します。主な設計上の決定事項:
永続的な接続: ソケット切断時に自動再接続
スレッドセーフ: 同時ツール呼び出しのために
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> DISCONNECTOCIO カラーマネジメント
サーバーには OCIO v2 の完全なサポートが含まれています。$OCIO が設定されている場合、RV は DCC アプリ(3ds Max/Redshift、Nuke など)で使用されるディスプレイ変換と正確に一致させることができます。
自動設定
RV がメディアを読み込む際に OCIO を自動設定する rv_ocio_setup.py スクリプトが含まれています:
EXR/HDR/TX ファイル はシーンリニア(
scene_linearロールを介した ACEScg)として自動検出されますディスプレイ変換 は設定のデフォルト(例:
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/RV の組み込み ocio_source_setup パッケージが、このオーバーライドを自動的に検出して使用します。
MCP を介した手動 OCIO 設定
ツール | 説明 |
| アクティブな OCIO 設定からカラースペース、ディスプレイ、ビュー、ルックを一覧表示 |
| ソースの入力カラースペースを設定 (OCIOCFile ノードを挿入) |
| ディスプレイ変換を設定 (OCIODisplay ノードを挿入) |
| ソースに OCIO ルックを適用 |
| 現在の OCIO ノードの状態を JSON で取得 |
| OCIO ノードを削除し、デフォルトのパイプラインを復元 |
Redshift + RV のカラーマッチング
Redshift の OCIO 設定 ($OCIO = C:\ProgramData\redshift\Data\OCIO\config.ocio) を使用する場合、そのファイルルールでは EXR が「Raw」としてマークされることに注意してください。rv_ocio_setup.py スクリプトは、浮動小数点形式をシーンリニアとして検出することでこれをオーバーライドし、Redshift のレンダービューと同様に RV で ACES トーンマッパーが適用されるようにします。
ツール (合計 47)
実行 (1)
ツール | 説明 |
| 任意の Mu コードを実行 — 専用ツールでカバーされていない操作のためのエスケープハッチ |
OCIO (6)
ツール | 説明 |
| OCIO 設定情報を取得 (カラースペース、ディスプレイ、ビュー、ルック) |
| ソースの OCIO 入力カラースペースを設定 |
| OCIO ディスプレイ変換を設定 |
| OCIO ルックを適用 |
| 現在の OCIO 状態を JSON で取得 |
| OCIO ノードを削除し、デフォルトを復元 |
再生 (17)
ツール | 説明 |
| メディアファイル(画像シーケンス、動画、または単一画像)を読み込み |
| 複数のメディアファイルを一度に読み込み |
| 再生を開始 |
| 再生を停止 |
| 再生/停止を切り替え、新しい状態を返す |
| 現在のフレーム番号を取得 |
| 特定のフレームにジャンプ |
| N フレーム進める (デフォルト 1) |
| N フレーム戻す (デフォルト 1) |
| インポイント(再生範囲の開始)を設定 |
| アウトポイント(再生範囲の終了)を設定 |
| 現在のイン/アウトポイントを JSON で取得 |
| 再生 FPS を設定 |
| 現在の再生 FPS を取得 |
| リアルタイムモードを有効/無効化 (FPS を維持するためにフレームをスキップ) |
| ループモードを設定: |
| 再生方向と速度を設定 (1=順方向, -1=逆方向, 2=2倍速など) |
| 完全な再生状態を JSON で取得 (フレーム、範囲、イン/アウト、再生中、FPS) |
ソース (7)
ツール | 説明 |
| 読み込まれたすべてのソースノードを JSON 配列で一覧表示 |
| 詳細なメディア情報を取得 (解像度、フレーム範囲、FPS、ビット深度、チャンネル) |
| 特定のフレームで表示されているソースノードを取得 |
| 新しい空のセッションを作成 |
| 現在のセッションからすべてのソースをクリア |
| セッションを |
| セッション状態を JSON で取得 (ビューノード、フレーム範囲、ソース数) |
比較 (4)
ツール | 説明 |
| ビューを切り替え: |
| スタック合成モードを設定: |
| A/B ワイプ比較を切り替え (自動的にスタックビューに切り替わります) |
| 現在のビュー状態を JSON で取得 |
カラー (12)
ツール | 説明 |
| ターゲット ( |
| ターゲット上の LUT を無効化 |
| CDL 値を設定 (slope, offset, power, saturation) — 部分更新をサポート |
| CDL 色補正を無効化 |
| 露出を設定 (チャンネルごと、または一括) |
| ガンマ補正を設定 |
| 彩度を設定 |
| 現在の色補正状態を JSON で取得 |
| ディスプレイガンマを設定 (例: sRGB のような場合は 2.2) |
| sRGB ディスプレイ変換を有効/無効化 |
| ビューポートの背景を設定: |
使用例
フッテージの読み込みとレビュー
"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"2 つのバージョンの比較
"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"高度な操作 (raw 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
Maintenance
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
- 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/Geddart/rv-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
