Skip to main content
Glama

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 パッケージマネージャー

クイックスタート

1. RV をネットワークモードで起動

RV → Networking → Enable Network から RV のネットワークを有効にします(デフォルトポートは 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

このサーバーは、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> DISCONNECT

OCIO カラーマネジメント

サーバーには 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 設定

ツール

説明

get_ocio_config

アクティブな OCIO 設定からカラースペース、ディスプレイ、ビュー、ルックを一覧表示

set_ocio_colorspace

ソースの入力カラースペースを設定 (OCIOCFile ノードを挿入)

set_ocio_display

ディスプレイ変換を設定 (OCIODisplay ノードを挿入)

set_ocio_look

ソースに OCIO ルックを適用

get_ocio_state

現在の OCIO ノードの状態を JSON で取得

clear_ocio

OCIO ノードを削除し、デフォルトのパイプラインを復元

Redshift + RV のカラーマッチング

Redshift の OCIO 設定 ($OCIO = C:\ProgramData\redshift\Data\OCIO\config.ocio) を使用する場合、そのファイルルールでは EXR が「Raw」としてマークされることに注意してください。rv_ocio_setup.py スクリプトは、浮動小数点形式をシーンリニアとして検出することでこれをオーバーライドし、Redshift のレンダービューと同様に RV で ACES トーンマッパーが適用されるようにします。

ツール (合計 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

再生 FPS を設定

get_fps

現在の再生 FPS を取得

set_realtime

リアルタイムモードを有効/無効化 (FPS を維持するためにフレームをスキップ)

set_play_mode

ループモードを設定: loop, once, pingpong

set_playback_speed

再生方向と速度を設定 (1=順方向, -1=逆方向, 2=2倍速など)

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

ターゲット (look, linearize, display) に LUT ファイル (.3dl, .csp, .cube など) を読み込み

clear_lut

ターゲット上の LUT を無効化

set_cdl

CDL 値を設定 (slope, offset, power, saturation) — 部分更新をサポート

clear_cdl

CDL 色補正を無効化

set_exposure

露出を設定 (チャンネルごと、または一括)

set_gamma

ガンマ補正を設定

set_saturation

彩度を設定

get_color_settings

現在の色補正状態を JSON で取得

set_display_gamma

ディスプレイガンマを設定 (例: sRGB のような場合は 2.2)

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"

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

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