Coppeliaslim Test について
ロボットシミュレーションの開発やテスト向けの CoppeliaSim MCP サーバーです。関節操作やシーン記述のツールを提供し、FastAPI と FastMCP、HTTP/SSE と stdio に対応します。
主な機能
- 01指定角度への関節回転
- 02関節の種類と可動範囲の一覧
- 03ロボットとシーンオブジェクトの記述
- 04HTTP/SSE と stdio のトランスポート
活用シーン
- 01シミュレーション内での関節操作
- 02LLM へのロボットとシーン情報の提供
MCP 対応
MCP クライアントに関節操作とロボット・シーン記述のツールを公開します。HTTP/SSE と stdio で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CoppeliaSim MCP サーバー
CoppeliaSim のロボットシミュレーション向けに、FastAPI と FastMCP の両バックエンドに対応した、Python ベースの MCP(Motion Control Protocol)サーバー実装です。
特長
- JSON-RPC 2.0 プロトコル
- 関節制御およびロボット/シーンの説明ツール
- HTTP/SSE と stdio の両トランスポートに対応
- 柔軟で LLM に適した出力
必要条件
- Python 3.x
- CoppeliaSim(旧称 V-REP)バージョン 4.3 以降(ZeroMQ リモート API が必要です)
- 必要な Python パッケージ(requirements.txt を参照)
インストール
0. (推奨)Conda 環境を作成する
依存関係の競合を避けるため、conda 環境の使用を強く推奨します。
conda create -n coppelia-mcp python=3.10
conda activate coppelia-mcp
その後、以下の手順に進んでください。
1. リポジトリをクローンして必要なパッケージをインストールする
git clone https://github.com/alsak0de/CoppeliaSlim-mcpserver.git
cd CoppeliaSlim-mcpserver
pip install -r requirements.txt
使用方法
1. CoppeliaSim を起動し、ロボットモデルを読み込む
2. MCP サーバーを実行する
注:MCP サーバーは通常、ツールのプロバイダーが MCP サーバーと同じマシン上で動作し、多くの場合、MCP ホストとクライアントも同じマシン上で動作することを前提として、stdio トランスポートで実行されます。 このプロジェクトでは SSE トランスポートを実装しており、CoppeliaSim、MCP サーバー、MCP クライアントをそれぞれ異なるマシンで動作させる、完全な分散構成が可能です。
どのサーバーを使用すればよいですか?
- **オプション A(FastAPI ベース、
coppelia_mcp.py)**は、標準的なウェブサーバー機能やウェブツールとの統合、カスタムエンドポイントが必要な場合など、ほとんどの本番環境で推奨されます。 - **オプション B(FastMCP ベース、
coppelia_fastmcp.py)**は、エージェント/LLM ネイティブのワークフロー、stdio トランスポート、または MCP/エージェントとの連携のみを行う場合に最適です。 - **オプション C(直接スクリプト、
coppelia_mcp.py)**は、開発やデバッグ、または CLI で--coppeliaHostを指定する必要がある場合に使用します。
オプション A:FastAPI ベースのサーバー(coppelia_mcp.py)[本番環境に推奨]
COPPELIASIM_HOST=<coppelia_host> uvicorn coppelia_mcp:app --host 0.0.0.0 --port 8000
- FastAPI アプリを本番環境で実行するための標準的な方法です。
COPPELIASIM_HOST環境変数を設定して、CoppeliaSim ホストを指定します。- 優先順位:
COPPELIASIM_HOST環境変数(設定されている場合)- デフォルト:
127.0.0.1
- トランスポート:
- HTTP POST(JSON-RPC)
/sseエンドポイントでの SSE- stdio(npx mcp-remote ブリッジ経由。以下を参照)
オプション B:FastMCP ベースのサーバー(coppelia_fastmcp.py)
- デフォルト:
python coppelia_fastmcp.py --host 0.0.0.0 --port 8000 --coppeliaHost <coppelia_host>--coppeliaHostで CoppeliaSim ホストを指定できます(デフォルト:127.0.0.1)。
- トランスポート:
- HTTP POST(JSON-RPC)
/sseエンドポイントでの SSE- stdio(ネイティブ、または必要に応じて npx mcp-remote 経由)
オプション C:直接スクリプト(開発/デバッグ用、coppelia_mcp.py)
python coppelia_mcp.py --host 0.0.0.0 --port 8000 --coppeliaHost <coppelia_host>
- 開発やデバッグ、または CLI で
--coppeliaHostを指定する必要がある場合に、この方法を使用します。 - 本番環境での使用は推奨されません。デプロイにはオプション A を使用してください。
3. クライアントを接続する
- SSE/HTTP:
- SSE クライアントには
/sseエンドポイントを使用します(最新の LLM/エージェントクライアントに推奨)。 - 例:
http://localhost:8000/sse
- SSE クライアントには
- Stdio:
- クライアントが stdio のみをサポートしている場合は、ブリッジを使用します:
npx mcp-remote http://localhost:8000 - または、FastMCP がネイティブにサポートしている場合は、stdio トランスポートを使用するようクライアントを設定します。
- クライアントが stdio のみをサポートしている場合は、ブリッジを使用します:
4. ツール呼び出しを自動承認する
- ほとんどのクライアント(例:Cursor)では、ツール呼び出しごとの確認プロンプトを避けるため、サーバー設定で「Auto Approve」を有効にします。
API ツール
rotate_joint:関節を指定した角度まで回転させますlist_joints:すべての関節とその種類、制限値を一覧表示しますdescribe_robot:ロボットのすべての要素について、詳細で LLM に適した説明を返しますdescribe_scene:ロボットの関節を除く、すべてのシーンオブジェクトの説明を返します
**注:**すべてのツールのロジックは現在、tools.py に集約されています。新しいツールを追加するには、tools.py で関数を定義し(最初の引数に sim を取ります)、必要に応じて coppelia_mcp.py と coppelia_fastmcp.py の両方に登録します。これにより、両方のサーバーで同じツールロジックを共有し、一貫性を保つことができます。
メモ
- どちらのサーバーもデフォルトでは
0.0.0.0:8000を使用しますが、--hostと--portで変更できます。 - 最新の LLM/エージェントクライアントとの互換性を最大限に高めるには、SSE エンドポイントを使用してください。
- stdio のみをサポートするクライアントでは、npx ブリッジまたは FastMCP のネイティブ stdio サポートを使用してください。
- uvicorn が必要なのはなぜですか?また、どのような場合に必要ですか?
- FastAPI ベースのサーバー(
coppelia_mcp.py)では、HTTP/SSE エンドポイントを実際に提供するために、uvicorn(または別の ASGI サーバー)が必要です。FastAPI はあくまでフレームワークであり、Web サーバーは含まれていないためです。 - FastMCP ベースのサーバー(
coppelia_fastmcp.py)では、HTTP/SSE エンドポイントを提供する場合にのみuvicornが必要です。stdio モード(エージェント/CLI との統合)で FastMCP を実行する場合は、すべての通信が stdin/stdout 経由で行われるため、uvicornも Web サーバーも必要ありません。
- FastAPI ベースのサーバー(
作者とクレジット
Albert Sagarra が作成・保守しています。
コミュニティからの貢献を歓迎します。参加方法については、CONTRIBUTING.md を参照してください。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。
このライセンスの条項に従って、このプロジェクトを自由に使用、変更、配布できます。
Docker での実行
デプロイやテストに適した、クリーンで分離された環境を確保するために推奨される方法です。
1. Docker イメージをビルドする
docker build -t coppelia-mcp .
2. MCP サーバーのコンテナを実行する
重要:
- MCP サーバーがコンテナ外で実行されている CoppeliaSim インスタンスに接続できるよう、
--coppeliaHost引数で CoppeliaSim のホストを必ず指定してください。 - サーバーはコンテナ内で常に
0.0.0.0にバインドします。 - ポートは
docker runの最初の引数として渡すことで設定できます(デフォルト:8000)。コンテナ外から API にアクセスするには、サーバーのポートを必ず公開してください。 --rmフラグを使用すると、停止時にコンテナが自動的に削除されます(永続化は不要です)。
例(<coppelia_host> を CoppeliaSim のホスト IP に置き換えてください):
docker run --rm -p 8000:8000 coppelia-mcp --coppeliaHost <coppelia_host>
- 別のポートを使用するには、最初の引数として渡し、ポートをマッピングしてください。
docker run --rm -p 9000:9000 coppelia-mcp 9000 --coppeliaHost <coppelia_host>
- ポートの後に続く追加の引数は、サーバースクリプトに直接渡されます。
- CoppeliaSim が同じマシン上(ただし Docker 内ではない)で実行されている場合は、
--coppeliaHost host.docker.internal(Mac/Windows の場合)またはホストの IP アドレス(Linux の場合)を使用してください。 - CoppeliaSim が別のコンテナ内で実行されている場合は、両方のコンテナが同じ Docker ネットワーク上にあることを確認し、適切なサービス名/コンテナ名または IP アドレスを使用してください。
3. サーバーにアクセスする
- MCP サーバーは
http://localhost:8000(またはマッピングしたポート)で利用できます。 - SSE クライアントには
/sseエンドポイントを使用するか、JSON-RPC の場合は/に POST してください。
トラブルシューティング
- CoppeliaSim に接続できない場合:
--coppeliaHostの値が正しく、コンテナ内から到達可能であることを確認してください。- ファイアウォールとネットワークの設定を確認してください。
- ポートがすでに使用されている場合:
-pフラグのホスト側ポートを変更してください(例:-p 8080:8000)。
- データの永続化:
- この構成ではデータは永続化されません。ログや設定を永続化する必要がある場合は、ボリュームをマウントしてください。
高度な使用方法(FastMCP サーバー、カスタムポート、ボリュームなど)では、必要に応じて Docker コマンドと引数を調整してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。