robot-mcp-server について
robot-mcp-serverは、LLMやエージェントシステム、自動化プラットフォーム向けに、UnitreeロボットとDJI Telloドローンを統一的に制御します。モックと実機のバックエンドに加え、定型ルーチンや安全確認を備えています。
主な機能
- 01モックと実機のバックエンド
- 02統一設定とステータス確認
- 03UnitreeとDJIの制御ツール
- 04定型ルーチンとシーケンス実行
- 05ヘルスチェックと緊急停止
活用シーン
- 01機器なしで制御ワークフローを検証
- 02ロボットの点検ルーチンを実行
- 03ドローンで観察やスキャンを実施
- 04実機制御前にステータスを確認
MCP 対応
MCP サーバーとして、ロボットやドローンの制御ツール、ステータスリソース、安全操作用プロンプトをクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
robot-mcp-server
LLM、エージェントシステム、自動化プラットフォーム向けの、より充実したロボット制御 MCP サーバーです。Unitree ロボットと DJI Tello ドローンを統一的に制御できます。
改善点
元のバージョンと比べて、本プロジェクトは最小限のプロトタイプではなく、より実用的なエンジニアリングの基盤となりました。
mockとhardwareの両方のバックエンドに対応し、実機なしでワークフローを検証できます- 環境変数や CLI による上書きが可能な、統一設定レイヤーを追加しました
- ヘルスチェック、ステータスの確認、機能の検出、グローバルな緊急停止ツールを追加しました
- 一般的なロボットのワークフロー向けに、組み込みルーチンテンプレートを追加しました
- クライアントが複数の組み込みルーチンを 1 回のリクエストで実行できる、軽量なシーケンス実行機能を追加しました
- より厳格なパラメーター検証と接続状態の保護により、アダプターを強化しました
- 依存関係の宣言漏れ、不安定な起動フロー、不安定な相対インポートを修正しました
- 検証や回帰チェックを容易にするため、ユニットテストとローカルデモを追加しました
プロジェクト構成
.
├── examples/
│ └── demo.py
├── src/
│ ├── __init__.py
│ ├── config.py
│ ├── dji_adapter.py
│ ├── exceptions.py
│ ├── main.py
│ ├── service.py
│ └── unitree_adapter.py
├── tests/
│ └── test_service.py
├── README.md
├── README.zh-CN.md
├── requirements.txt
└── run.ps1
インストール
要件:
- Python 3.10+
- Python を実行できる Windows PowerShell または任意のターミナル
依存関係をインストールします:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
デフォルトで含まれるもの:
mcpdjitellopy
実際の Unitree ハードウェアに接続する場合は、対応する SDK もインストールしてください:
python -m pip install git+https://github.com/unitreerobotics/unitree_sdk2_python.git
クイックスタート
推奨する mock モードでの起動方法:
.\run.ps1
または:
python -m src.main --backend mock --transport stdio
HTTP トランスポートで起動します:
.\run.ps1 -Backend mock -Transport streamable-http -Host 127.0.0.1 -Port 8000
実際のハードウェアに接続します:
python -m src.main --backend hardware --transport stdio
hardware に切り替える前に、mock モードでワークフローを検証することをおすすめします。
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
ROBOT_MCP_BACKEND | mock | バックエンドモード:mock / hardware |
ROBOT_MCP_TRANSPORT | stdio | トランスポート:stdio / streamable-http |
ROBOT_MCP_HTTP_HOST | 127.0.0.1 | HTTP バインドホスト |
ROBOT_MCP_HTTP_PORT | 8000 | HTTP ポート |
ROBOT_MCP_LOG_LEVEL | INFO | ログレベル |
ROBOT_MCP_UNITREE_TIMEOUT_SECONDS | 10 | Unitree の接続タイムアウト |
ROBOT_MCP_DEFAULT_TAKEOFF_HEIGHT | 1.2 | DJI のデフォルト離陸高度(メートル) |
ROBOT_MCP_TELLO_HOST | empty | 特定の Tello ホスト |
利用可能な MCP ツール
共通ツール:
server_statuslist_robot_capabilitieslist_robot_routinesrun_routine_sequencehealth_checkemergency_stop_all
Unitree ツール:
unitree_connectunitree_move(velocity, duration=1.0)unitree_stopunitree_statusunitree_disconnectunitree_move_and_stop(velocity, duration=1.0)unitree_out_and_back(velocity, forward_duration=1.0, return_duration=None)unitree_pulse_patrol(velocity, pulse_duration=0.8, pause_duration=0.3, cycles=3)unitree_inspection_sweep(velocity=1.0, forward_duration=1.0, checkpoint_pause=0.5, cycles=2)
注:
velocityの範囲:-3.0 ~ 3.0m/sdurationの範囲:0.1 ~ 30.0秒
DJI ツール:
dji_connectdji_takeoff(height=None)dji_landdji_emergency_stopdji_statusdji_disconnectdji_takeoff_hover_land(height=None, hover_seconds=3.0)dji_quick_observe(height=None, hover_seconds=5.0)dji_perimeter_scan(height=None, hover_seconds=2.0, checkpoints=3)
注:
heightの範囲:0.2 ~ 10.0メートルheightを省略すると、設定済みのデフォルト値が使われます
組み込みルーティン
クライアント側の開発時間を短縮するため、サーバーにはいくつかの組み合わせ済みアクションが含まれています。
unitree_move_and_stop必要に応じて接続し、1 回移動してから自動的に停止しますunitree_out_and_back前進し、戻ってから停止する、シンプルな往復パトロールを行いますunitree_pulse_patrol短い移動と一時停止を繰り返す、軽量なパトロールシナリオを実行しますunitree_inspection_sweep前進、チェックポイントでの停止、復路の移動を含む、簡潔な点検ルーティンを実行しますdji_takeoff_hover_land離陸し、設定可能な時間ホバリングしてから、自動的に着陸しますdji_quick_observe離陸、ホバリング、着陸を行う、手軽な観察ルーティンですdji_perimeter_scan複数のホバリングチェックポイントを含む、軽量な空中スキャンルーティンです
シーケンス実行
run_routine_sequence を使うと、クライアントは複数の組み込みルーティンと pause ステップを 1 回のリクエストで送信できます。
例:
[
{
"action": "unitree_move_and_stop",
"params": {
"velocity": 1.0,
"duration": 1.2
}
},
{
"action": "pause",
"params": {
"duration": 1
}
},
{
"action": "dji_takeoff_hover_land",
"params": {
"height": 1.5,
"hover_seconds": 3
}
}
]
サポートされているシーケンスアクション:
pauseunitree_move_and_stopunitree_out_and_backunitree_pulse_patrolunitree_inspection_sweepdji_takeoff_hover_landdji_quick_observedji_perimeter_scan
リソースとプロンプト
ツールに加えて、サーバーは次も公開します。
- リソース:
robot://status/summary - プロンプト:
safe_operation_checklist(device)
ローカルデモ
python examples\demo.py
テスト
python -m unittest discover -s tests -v
使用上のヒント
- 開発中は
mockモードを優先してください - 実機に接続する前に
health_checkを呼び出してください - 移動または離陸のコマンドを実行する前に
server_statusを確認してください - 問題が発生した場合は、まず
emergency_stop_allを使用してください
既知の制限事項
- Unitree ハードウェアの制御は、拡張の出発点として設計された軽量な SDK 統合レイヤーです
- 現在のテストは主に
mockモードを対象としており、実機の動作には現地での統合テストが必要です streamable-httpの正確な動作は、インストールされているmcpパッケージのバージョンによって異なります
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。