mcpField
O
Omniverse MCP

Omniverse MCP

ローカル
github.com/serionistメディア・デザイン0今日更新

Omniverse MCP について

Omniverse MCP は、AI クライアントを実行中の NVIDIA Isaac Sim や他の Kit アプリに接続します。サーバーとアプリ内ブリッジを通じて、シーン編集、シミュレーション、ロボット、キャプチャ、スクリプトのツールを提供します。

主な機能

  1. 01シーンオブジェクトとプロパティの確認・編集
  2. 02ビューポート撮影と複数角度からのオブジェクト検査
  3. 03物理シミュレーションの制御とフレーム記録
  4. 04ロボットの作成と関節目標の設定
  5. 05USD ファイルの書き出しとバリアント管理
  6. 06Kit ログの参照と Python スクリプト実行

活用シーン

  1. 01シーンを確認し、ビューポート画像からオブジェクトを特定
  2. 02Kit シーンのジオメトリやマテリアルを作成・変更
  3. 03物理テストを実行して記録フレームを確認
  4. 04ロボットを追加して関節を調査

MCP 対応

MCP サーバーは stdio で動作し、トークンを使った HTTP 通信で Kit 拡張ブリッジに接続します。ブリッジはシーン、シミュレーション、ロボット、記録、ファイル、スクリプトのツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"serionist-omniverse": {
"command": "uvx",
"args": [
"omniverse-mcp"
],
"env": {
"PYTHONPATH": "<PYTHONPATH>",
"OMNIVERSE_MCP_HOST": "<OMNIVERSE_MCP_HOST>",
"OMNIVERSE_MCP_PORT": "<OMNIVERSE_MCP_PORT>",
"OMNIVERSE_MCP_OUTPUT_DIR": "<OMNIVERSE_MCP_OUTPUT_DIR>",
"OMNIVERSE_MCP_TOKEN": "<OMNIVERSE_MCP_TOKEN>"
}
}
}
}
起動コマンドuvx omniverse-mcp
設定が必要な環境変数
PYTHONPATHSet it empty, so a Python path that Isaac Sim's environment sets stays out of the server's Python
OMNIVERSE_MCP_HOSTThe host of the Kit app running the ovmcp.bridge extension
OMNIVERSE_MCP_PORTThe bridge's port in the Kit app
OMNIVERSE_MCP_OUTPUT_DIRThe folder for images and long answers (default: ./mcp_output)
OMNIVERSE_MCP_TOKENシークレットThe bridge's token, for Kit on another machine; on the same machine the server reads it from Kit

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiomniverse-mcp0.5.1

ツール

42

掲載時のツール一覧 · 6 日前に更新

パラメーター型必須説明
rootstringいいえ開始する Prim パス
max_depthintegerいいえroot から一覧表示する階層数。次の階層では子を持つ Prim のみを表示します

詳細

README の画像

Omniverse MCP

AI アシスタントが NVIDIA Isaac Sim やほかの Omniverse Kit アプリを操作できるようにします。
シーンの確認や編集、物理シミュレーションの実行、ロボットの操作、動作の記録ができます。

PyPI Python versions uv CI CodeQL Licence: MIT Glama score Listed on mcpservers.org

Isaac Sim の capture_viewport が返した、赤、緑、青のブロックと黄色のボールが置かれたテーブル上の Franka アーム 同じ視点のインスタンスセグメンテーション。アームの各リンク、テーブル、各ブロック、ボールがそれぞれ異なる色で表示されています

Isaac Sim 6.2 で capture_viewport を 1 回呼び出すと、フレームと各オブジェクトがそれぞれ異なる色で表示されます。凡例と画面上のボックスが、アシスタントに見えているものを示します。

Omniverse MCP は、Claude Code、Cursor、VS Code などの AI クライアントを、実行中の Kit アプリに接続します。1 つのリリースに 2 つのコンポーネントが含まれます。

  • サーバー: omniverse-mcp。AI クライアントが起動するMCP サーバーで、PyPI から入手できます。
  • ブリッジ: ovmcp.bridge。Kit アプリ内の Kit 拡張機能で、Kit では Omniverse MCP Bridge として、Kit のコミュニティ拡張機能レジストリではその名前で公開されています。

Claude Code ユーザーは、各種の作業に対応するスキルを備えた 1 つのプラグインから、両方を利用できます。

AI client  --MCP, stdio-->  omniverse-mcp  --HTTP, with a token-->  ovmcp.bridge
                            (the server)                         (inside the Kit app, port 8211)

必要条件

  • Kit 107 以降の Kit アプリ。 Windows または Linux で動作します。Isaac Sim 6.2(Windows および Linux)と 5.1(Linux)でテスト済みです。USD Composer やほかの Kit アプリも動作するはずですが、未テストです。Linux では、Isaac Sim 5.1 は NVIDIA の 580 ドライバーで動作します。595 ドライバーでは、起動時にレンダラーがクラッシュします。
  • uv。 サーバーの実行に使用します。インストール後、新しいターミナルを開いて AI クライアントを再起動し、どちらからも uvx を見つけられるようにしてください。
    • macOS と Linux:curl -LsSf https://astral.sh/uv/install.sh | sh
    • Windows:powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • ファイルを読み取れる MCP クライアント。 ツールは画像や長い回答をファイルに書き込み、そのパスを返します。
  • Kit とクライアントを同じマシンで実行すること。 別のマシンで Kit を実行する場合は、別のマシン上の Kit を参照してください。

インストール

Claude Code:プラグイン

Claude Code では、次のようにします。

/plugin marketplace add serionist/omniverse-mcp
/plugin install omniverse-mcp@omniverse-mcp

指示された場合は、/reload-plugins を実行してください。ターミナルからは、claude plugin marketplace add serionist/omniverse-mcp の後に claude plugin install omniverse-mcp@omniverse-mcp を実行します。プラグインは次回 Claude Code を起動したときに読み込まれます。

続いて /omniverse-mcp:setup を実行します。プラグインのリリースに含まれるブリッジをインストールし、Kit でクリックする箇所を案内して、接続を確認します。また、シーン、ジオメトリ、シミュレーション、スクリプト、バグ報告に関するスキルも追加され、Claude は依頼に応じてそれらを使用します(プラグイン)。

その他の MCP クライアント
  1. ブリッジをインストールします。

    uvx omniverse-mcp extension install
    

    ovmcp.bridge がユーザーデータフォルダーにコピーされ、続いて Kit に指定するフォルダーが「Kit finds it once its extension search paths hold this folder」の下に表示されます。または、Kit のコミュニティレジストリから Kit 自体にブリッジをインストールし、手順 3 でサーバーにそのバージョンを指定することもできます (Kit のコミュニティレジストリから)。

  2. Kit アプリで一度だけ有効にします。

    1. Window > Extensions を開き、右上のメニュー(☰)から Settings を選択します。
    2. Extension Search Paths の下にある緑色の + をクリックし、フォルダーを貼り付けます。+ をクリックすると空の行が追加されます。その行をクリックして入力してください。
    3. THIRD PARTY の下で ovmcp を検索し、Autoload を有効にして Omniverse MCP Bridge をオンにします。

    ブリッジはすぐに起動し、Kit のコンソールに [ext: ovmcp.bridge-<version>] startup と表示されます。Kit は終了時に検索パスと Autoload の設定を保存するため、File > Exit から一度終了してください。ヘッドレス Kit では、代わりに --ext-folder <that folder> --enable ovmcp.bridge を指定します(ヘッドレス Kit)。

  3. クライアントの MCP 設定にサーバーを追加し、クライアントを再起動します。 ほとんどのクライアントでは、JSON に次のように記述します。

    {
      "mcpServers": {
        "omniverse": { "command": "uvx", "args": ["omniverse-mcp"], "env": { "PYTHONPATH": "" } }
      }
    }
    

    VS Code や Codex を含む各クライアントの設定ファイルと設定形式については、MCP クライアントを参照してください。空の PYTHONPATH を指定することで、Isaac Sim の環境が設定する Python パスがサーバーの Python に影響しないようにします。

クライアントには、サーバーの簡潔な説明が提供されます。説明が無視される場合は、docs/AI_GUIDE.md を参照してください。プラグインのスキルをプレーンな Markdown ファイルとして参照する方法も記載されています。

動作を確認する

Kit アプリを起動した状態で、アシスタントに 「get_sim_state を呼び出して」 と依頼します。次のような行が返されます。

state = stopped
up_axis = Z
...
extension_version = 0.5.1
server_version = 0.5.1

別の問題が発生した場合は、トラブルシューティングを参照してください。

0.2.0 より前の拡張機能を使っていましたか? 以前は、このリポジトリをクローンして使用しており、その前は isaacsim.mcp.bridge でした。Kit が一方だけを読み込むように、古いものを無効にして検索パスを削除してください。変更履歴を参照してください。

できること

「シーンには何がありますか? ビューポートをキャプチャして、各オブジェクトの場所を教えてください。」

「原点にテーブルを置き、その上に赤、緑、青のキューブを置いて、キャプチャが真っ暗にならないように照明を設定してください。」

「ほかのものをすべて非表示にして、/World/Table を上部の四隅から見せてください。」

「/World/Robot の面の数はいくつで、最も多いパーツはどれですか?」

「テーブルに Franka アームを追加し、その関節と可動範囲を一覧表示してください。」

「1 メートルの高さからキューブを落とし、落下する様子を 2 秒間記録して、最後のフレームを表示してください。」

「/World/Table を、単体で使える USD ファイルとしてエクスポートしてください。」

「失敗しました。Kit の警告とエラーを表示してください。」

ツール

領域ツール機能
シーンget_scene_tree, get_prim_properties, get_prim_bounds, set_prim_transform, create_prim, delete_prim, clone_prim, set_visibility, set_prim_attribute, save_scene, open_scene, new_sceneシーンの階層とプロパティを読み取ります。オブジェクトの作成、移動、複製、非表示、削除を行います。ライトの強度などの属性を設定し、ファイルの保存や読み込み、空のシーンの開始を行います
カメラcapture_viewport, inspect_prim, capture_sweep, set_camera, viewport_light各オブジェクトの画面上の枠と色を含めてビューポートをキャプチャします。1つのオブジェクトを複数の方向から確認し、1回のジョブで複数の視点とバリエーションの状態をキャプチャして、変更後にもう一度キャプチャします。カメラを点やオブジェクトに向け、ビューを照らします
マテリアルset_material, update_material_pathsオブジェクトに色と表面を設定します。ファイルの移動後にマテリアルのパスを修正します
シミュレーションsim_control, get_sim_state, get_performance物理シミュレーションの再生、一時停止、停止、ステップ実行を行います。状態、上方向の軸、バージョンを確認し、フレームレート、物理ステップ、GPU メモリを測定します
物理set_physics_properties, apply_force, raycast質量、摩擦、反発を設定し、コライダーを作成します。オブジェクトを押し、レイをキャストします
ロボットcreate_robot, get_robot_info, set_joint_targetsIsaac Sim のライブラリ(Franka、UR10、G1、Spot など)からロボットを追加し、関節とその位置を読み取り、関節の目標値を設定します
記録start_recording, stop_recording, get_recording_frame物理シミュレーションの実行中に、任意のカメラから任意のサイズでフレームとオブジェクトの状態を記録し、後から任意のフレームを確認します
ジオメトリget_mesh_stats, compare_prims面と頂点の数を数えて、最も重いパーツを見つけます。2つのオブジェクトまたはバリエーションを比較します
USD ファイルとバリエーションflatten_usd, export_prim_as_file, create_variant_structure, set_variant_selectionステージを1つのファイルとして書き出し、オブジェクトをエクスポートし、バリエーションセットを作成して切り替えます
Kitget_logs, manage_extensions, draw_debugKit のログを読み取り、Kit 拡張機能の有効化と無効化を行い、ビューポートに線や点を描画します
スクリプトexecute_script, run_script_job, get_job, cancel_job他のツールではできない処理のために Kit 内で Python を実行します。Kit がレンダリングしている間、長いスクリプトをジョブとして実行し、進捗を確認してキャンセルできます

各ツールとそのパラメーターについては、ツールリファレンスを参照してください。

四隅から見たワークセル。inspect_prim が他のすべてを非表示にして、ワークセルをフレームに収めています

inspect_prim(prim_path="/World/Workcell", angles=["top_front_right", "top_back_right", "top_back_left", "top_front_left"], isolate=True):1回の呼び出しで、すべての側面を収まるようにフレーミングし、シーンの残りを非表示にします。

更新

サーバーとブリッジは同じリリースから提供されるため、両方を一緒に更新してから Kit とクライアントを再起動してください。

  • プラグイン: claude plugin marketplace update omniverse-mcp、続けて claude plugin update omniverse-mcp@omniverse-mcp を実行し、Claude Code を再起動します。その後 /omniverse-mcp:setup を実行すると、一致するブリッジがインストールされます。
  • その他のクライアント: uvx omniverse-mcp@latest extension install を実行すると、最新のサーバーを取得し、そのブリッジをインストールします。 Windows では、Kit の実行中はブリッジのフォルダーがロックされるため、先に Kit を終了してください。バージョンを固定しない場合、uvx が自動的に新しいリリースに移行することもあります。その場合、サーバーは一致するブリッジをインストールするコマンドを表示します。1つのリリースを使い続けるには、バージョンを固定してください (更新)。
  • Kit のコミュニティレジストリからのブリッジ: Kit の Extensions ウィンドウで更新し、サーバー側の固定バージョンも合わせて更新してください。

設定

サーバー
omniverse-mcp [--host HOST] [--port PORT] [--output-dir DIR]    the MCP server, over stdio
omniverse-mcp extension install                                 install the bridge of this release
omniverse-mcp extension path                                    print the folder Kit's search paths need
変数フラグデフォルト説明
OMNIVERSE_MCP_HOST--host127.0.0.1ブリッジがリッスンするアドレス
OMNIVERSE_MCP_PORT--port8211ブリッジのポート
OMNIVERSE_MCP_OUTPUT_DIR--output-dir作業フォルダー内の mcp_output画像や長い回答の保存先
OMNIVERSE_MCP_TOKENトークンファイル別のマシン上にある Kit アプリ用のブリッジトークン
OMNIVERSE_MCP_STATE_DIRシステムごとトークンファイルのフォルダー。両側で同じ値を設定します

プラグインのサーバーは、Claude Code の起動時に設定されている環境変数からこれらを読み取ります。プロジェクトの .gitignore に mcp_output/ を追加してください。

ブリッジ
設定デフォルト説明
/exts/ovmcp.bridge/host127.0.0.1リッスンするアドレス
/exts/ovmcp.bridge/port8211ポート
/exts/ovmcp.bridge/token空:起動するたびに新しいトークンリモート MCP サーバー用の固定トークン

Kit のコマンドラインで、たとえば --/exts/ovmcp.bridge/port=8212 のように設定し、サーバー側にも OMNIVERSE_MCP_PORT で同じポートを指定してください。インストール済み拡張機能の extension.toml は編集しないでください。次回の extension install で上書きされます。

ブリッジトークン

ブリッジはサーバーから送信された Python を実行するため、トークンを持つサーバーからの要求にのみ応答します。起動するたびに、ユーザーのみが読み取れるファイルに新しいトークンを書き込み、同じマシン上のサーバーがそのトークンを読み取ります。設定は不要です。ウェブページからの要求は拒否されます。別のマシン上の Kit ではトークンを手動で設定する方法を、アーキテクチャ ではファイルの保存場所を説明しています。

スクリプト用の Context7

モデルは Omniverse と Isaac Sim の API でトレーニングされておらず、名前を推測します。2 つ目の MCP サーバーとして Context7 を使うと、アシスタントは execute_script のコードを書く前に API を検索します(ライブラリは isaac-sim/isaacsim)。サーバーの指示と script スキルで、そのように促しています。

トラブルシューティング

「ブリッジトークンがないか、正しくありません」:Kit が別のユーザーとして、コンテナ内で、または別のマシンで実行されています。トークンを手動で設定してください (別のマシンでの Kit)。

「Kit 拡張機能がこの MCP サーバーより古い」または「ブリッジプロトコルを使用しています」:サーバーとブリッジのリリースが異なっています。メッセージに記載されたコマンドを実行してから、Kit を再起動してください。

「Kit アプリへの接続に失敗しました」、接続拒否またはタイムアウト:Kit アプリは起動していて、ブリッジも有効になっていますか?コンソールに [ext: ovmcp.bridge-<version>] startup と表示されます。サーバーは、OMNIVERSE_MCP_PORT で別のポートが指定されていない限り、ポート 8211 を確認します。初回起動時、Isaac Sim は数分間シェーダーをコンパイルするため、その間は応答が遅くなります。

「Kit が応答を停止しました」:呼び出しから 120 秒以内に応答がなく、/health にも 5 秒以内に応答がありませんでした。Kit は、完了を待たない長時間のスクリプトでビジー状態になっているか、ハングしている可能性があります。Kit 110(Isaac Sim 6.2)は、新しいカメラビューの設定中に NVIDIA のレンダラー内部で完全にハングすることがあります (NVIDIA の回避策については既知の問題をご覧ください)。Kit が応答しない間、後続の呼び出しは 5 秒で失敗し、Kit が応答を再開すると再び実行されます。数分間応答がない場合は、Kit アプリを再起動してください。

Kit のログに [MCP Bridge] Failed to start server と表示される:別のプログラム、または 2 つ目の Kit アプリがポート 8211 を使用しています。この Kit アプリに別のポートを割り当て、サーバーにも同じポートを指定してください (ブリッジ)。

サーバーが起動しない:Claude Code では /mcp にエラーが表示されます。他のクライアントでは MCP ログを確認してください。クライアントの起動時に使用される PATH に uvx がありますか?uv のインストール後にクライアントを再起動してください。

キャプチャ、またはそのプリムが黒くなる:応答には照明モードとともに警告が表示されます。viewport_light(action="set", mode="Default") でビューを照らすか、カメラに追従するライトを使うには mode="camera" を指定してください。Kit アプリにはデフォルトのライトがありません。

ツールがエラーを返す:get_logs(min_level="warn") で Kit が報告した内容を確認できます。get_robot_info は物理演算の再生中または一時停止中に関節の位置を読み取り、raycast は物理演算が一度再生されている必要があります。ロボット関連のツールには Isaac Sim が必要です。

詳しくは SETUP.md をご覧ください。

既知の問題

  • Isaac Sim 6.2(Kit 110)では、新しいカメラビューのセットアップ中に完全にハングすることがあります。 NVIDIA のレンダラー内で発生し、その後ログは出力されず、ツールは「Kit at ... stopped answering」で失敗します (#114)。ブリッジはキャプチャ間でレンダーを 1 つ保持し、そのサイズで記録するため、新しいビューをセットアップすることはほとんどありませんが、長時間のセッションでは発生する可能性があります。NVIDIA の回避策は、Kit のコマンドラインにフラグを指定することです。--/rtx/hydra/supportMultiTickRate=false (isaac-sim/IsaacSim#920。Kit のウィンドウの有無による指定方法:ヘッドレス Kit)。NVIDIA の再現テストでは、このフラグを指定した状態で新しいビューを 1,000 回作成するテストを 2 回実行し、指定しない場合は 600 回後にハングしました。代償として、同じビューを繰り返しキャプチャしたときの差が少し大きくなります。テストでは、タイムラインを停止した状態で Replicator の歩行エージェントを 2 回キャプチャしたところ、フラグを指定した場合は各チャンネルで平均約 3.2/255、指定しない場合は約 1.2/255 の差がありました。NVIDIA は、異なるレートでレンダリングするセンサーにどのような影響があるか、まだ明らかにしていません。Kit のレンダラーがフラグを読み込むのは起動時だけです。Kit の実行中にスクリプトから設定しても、レンダラーは再構成されず、呼び出しごとにフラグを読み取る Replicator の step() を誤作動させます (#189)。
  • Isaac Sim 6.2(Kit 110.4)では、長時間にわたるステージ変更の後、応答が停止することがあります。 メインスレッドは Fabric の population コード(usdrt.population.plugin)内でビジー状態になり、ブリッジのコードは実行されていません。多数のステージを開き、コライダーを使って物理演算を実行し、セグメンテーションをキャプチャするテストの順序で発生しましたが、短いセッションでは発生しませんでした。Kit を再起動してください。ブリッジ側では防止できません (#162)。上記の新しいビューのハングに対する NVIDIA のフラグを指定すると、このテスト順序でも発生を防げました。フラグを指定した場合は 2 回の実行でそれぞれ 2 回成功し、指定しない場合は Kit が 9 回中 9 回ハングしました。

別の問題を報告するには、issue を作成してください。ツールが正常に動作しない場合、アシスタントは報告するかどうかを尋ね、バージョン、呼び出し内容、Kit のログを含む報告を下書きします。下書きに同意すると GitHub CLI で送信し、そうでなければ投稿用に残します(プラグインの report-bug スキル)。

セキュリティ

このブリッジは、設計上、サーバーから送信された Python をすべて実行します。execute_script と run_script_job はツールです。トークンは他のプログラムやウェブページを遮断しますが、ご自身の AI クライアントは遮断しません。そのため、execute_script、run_script_job、manage_extensions の実行前に確認を求めるようにしてください。 脆弱性は、SECURITY.md の説明に従って非公開で報告してください。

ドキュメント

1.0 までは、マイナーリリースでツールが変更される場合があります。変更履歴の「Breaking」に記載します。質問、アイデア、バグについては、issue を作成してください。

ライセンス

MIT。NVIDIA とは提携しておらず、NVIDIA の承認も受けていません。Omniverse と Isaac Sim は NVIDIA の商標です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。