Omniverse_usd_mcpserver について
Omniverse_usd_mcpserverは、USDとNVIDIA Omniverseを扱うMCPサーバーです。MCP経由でステージ管理、内容の確認、ジオメトリ操作を行うユーザー向けです。
主な機能
- 01USDステージの作成・開閉・保存
- 02ステージ内容の一覧表示と分析
- 03primと基本ジオメトリの作成
- 04外部USDファイルの参照
- 05ステージを閉じてリソースを解放
活用シーン
- 01USDシーンの作成と編集
- 02ステージ内のprimの確認
- 03外部USDファイルのシーンへの取り込み
MCP 対応
MCPクライアントにUSD操作ツールを公開します。stdio、HTTP、WebSocket、SSE、TCP、ZeroMQに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Omniverse USD MCP サーバー
Universal Scene Description(USD)および NVIDIA Omniverse を操作するための Model Context Protocol(MCP)サーバーです。このサーバーは、基本的な USD 操作のための標準化された API を提供します。
主な機能
このサーバーでは現在、次の基本的な USD 操作を利用できます。
- USD ステージの作成、オープン、保存
- ステージの内容の一覧表示と分析
- プリムの作成と基本的なジオメトリの定義
- 外部 USD ファイルへの参照の追加
- ステージのクリーンアップによる適切なリソース管理
インストール
# Clone the repository
git clone https://github.com/yourusername/omniverse-usd-mcp-server.git
cd omniverse-usd-mcp-server
# Install dependencies
pip install -r requirements.txt
クイックスタート
# Start the server with stdio protocol (for CLI interaction)
python -m usd_mcp_server
# Start the server with HTTP protocol (for web clients)
python -m usd_mcp_server --protocol=http --host=0.0.0.0 --port=5000
サーバーの使用方法
このサーバーは、任意の Model Context Protocol(MCP)クライアントで使用できます。付属の Python クライアントを使う例を次に示します。
import asyncio
import sys
import os
# Add the parent directory to the path
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from usd_mcp_client import UsdMcpClient
async def run_example():
# Create client and connect
client = UsdMcpClient("stdio", ["python", "-m", "usd_mcp_server"])
await client.connect()
try:
# Create a new stage
result = await client.call_tool("create_new_stage", {
"file_path": "example.usda",
"template": "basic",
"up_axis": "Y"
})
stage_id = result["data"]["stage_id"]
# Add a cube
await client.call_tool("define_stage_prim", {
"stage_id": stage_id,
"prim_path": "/World/Cube",
"prim_type": "Cube"
})
# Save the stage
await client.call_tool("save_usd_stage", {
"stage_id": stage_id
})
# Close and cleanup the stage when done
await client.call_tool("close_stage", {
"stage_id": stage_id
})
finally:
await client.close()
# Run the example
asyncio.run(run_example())
サーバープロトコル
このサーバーは複数の通信プロトコルをサポートしています。
stdio:標準入出力(デフォルト、アプリケーションへの埋め込み用)http:Web クライアント向けの HTTP プロトコルwebsocket:リアルタイムアプリケーション向けの WebSocket プロトコルsse:一方向のリアルタイム更新向けの Server-Sent Eventstcp:生の TCP プロトコルzmq:高性能アプリケーション向けの ZeroMQ プロトコル
利用可能なツール
このサーバーは、USD 操作用に次のツールを提供します。
USD の基本ツール
create_new_stage:新しい USD ステージを作成open_usd_stage:既存の USD ステージをオープンsave_usd_stage:ステージへの変更を保存close_stage:ステージを閉じてアンロードし、リソースを解放list_stage_prims:ステージ内のすべてのプリムを一覧表示analyze_usd_stage:ステージの内容を分析define_stage_prim:新しいプリムを作成create_stage_reference:別の USD ファイルへの参照を作成create_stage_mesh:ジオメトリデータを含むメッシュを作成
スクリプト例
examples/ ディレクトリには、サーバーの使用方法を示すスクリプト例があります。
basic_example.py:基本的なステージの作成と操作を紹介します
本番運用への対応:
エンタープライズ基準を満たすには、仕上げに約 20 時間(テスト、CI、エラー処理)が必要です。
この実装は強固な基盤を備えていますが、ミッションクリティカルなワークフローで使うには、さらに堅牢化が必要です。不足しているテストや保守ツールへの貢献に意欲があれば、USD 自動化の出発点として十分に活用できます。
今後のロードマップ
今後のリリースでは、次の機能を追加する予定です。
- 物理シミュレーションツール
- マテリアルの作成と管理
- アニメーションのキーフレーム設定
- シーングラフの可視化
- 高度なジオメトリ操作
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
謝辞
- USD のコアライブラリを提供してくださった Pixar USD チーム
- Omniverse プラットフォームを提供してくださった NVIDIA Omniverse チーム
- AI とツールの連携を実現してくださった Model Context Protocol チーム
Jan Haluszka がメンテナンスしています
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。