mcpField
T
Tello Drone MCP Server

Tello Drone MCP Server

ローカル
github.com/0xKodaその他2681 週間前に更新

Tello Drone MCP Server について

Tello Drone MCP Server は、DJI Tello ドローンを制御するための MCP サーバーです。MCP に対応した任意のクライアントから、離陸、着陸、移動、回転のコマンドを標準的なインターフェースで送信できます。README では開発が活発に進められていること、セキュリティ上の注意点があることが示されています。

主な機能

  1. 01SSE によるリアルタイムのドローン制御
  2. 02離陸と着陸のツール
  3. 03六方向への移動
  4. 04時計回りと反時計回りの回転
  5. 05エラー処理とログ出力
  6. 06Web クライアント向けの CORS 有効化

活用シーン

  1. 01MCP クライアントからツール経由で Tello ドローンを操作する
  2. 02管理された環境で LLM によるドローン操作を検証する

MCP 対応

MCP サーバーとして、起飛・着陸・移動・回転の操作を MCP ツールとして公開します。MCP クライアントは SSE エンドポイント /sse を通じて接続し、ツールを呼び出します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Tello ドローン MCP サーバー

DJI Tello ドローンを制御するための Model Context Protocol(MCP)サーバーの実装です。このサーバーを使用すると、MCP 互換クライアントから標準化されたインターフェースを通じて Tello ドローンを制御できます。

現在、活発に開発中です。セキュリティに関する考慮事項をお読みください。

機能

  • MCP のサポート
  • SSE(Server-Sent Events)によるリアルタイムのドローン制御
  • 堅牢なエラー処理とログ記録
  • Web クライアント(mcp inspector など)向けの CORS 対応
  • Tello ドローンの基本的なコマンドに対応:
    • 離陸
    • 着陸
    • 移動(上/下/左/右/前進/後退)
    • 回転(時計回り/反時計回り)

前提条件

  • Python 3.7+
  • DJI Tello ドローン
  • Tello ドローンへのネットワーク接続
  • root/sudo アクセス(UDP ソケットのバインドに必要)

インストール

  1. このリポジトリをクローンします:
git clone <repository-url>
cd drone-mcp
  1. 依存関係をインストールします:
pip install -r requirements.txt

MCP の設定

MCP クライアントが Tello ドローンサーバーに接続できるようにするには、mcp.json ファイル(通常は ~/.cursor/mcp.json またはプロジェクトディレクトリ内にあります)に次の設定を追加します:

{
  "tello-drone": {
    "url": "http://localhost:3000/sse"
  }
}

この設定により、MCP 対応のツールやモデルが Tello ドローンサーバーを自動的に検出し、接続できるようになります。

使い方

  1. Tello ドローンの WiFi ネットワーク(通常は「TELLO-」で始まります)に接続します。

  2. MCP サーバーを起動します:

sudo python tello_mcp.py

サーバーは次の処理を行います:

  • Tello ドローンとの接続を初期化します
  • http://0.0.0.0:3000 で MCP サーバーを起動します
  • /sse に SSE エンドポイントを設定します
  • /message でメッセージを処理します

クライアント(cursor、windsurf、code)で使用する前に、サーバーが起動していることを確認してください。

利用可能なツール

サーバーは次の MCP ツールを提供します:

1. 離陸
{
    "name": "takeoff",
    "description": "Commands the Tello drone to take off",
    "inputSchema": {
        "type": "object",
        "properties": {}
    }
}
2. 着陸
{
    "name": "land",
    "description": "Commands the Tello drone to land",
    "inputSchema": {
        "type": "object",
        "properties": {}
    }
}
3. 移動
{
    "name": "move",
    "description": "Moves the Tello drone in a specified direction",
    "inputSchema": {
        "type": "object",
        "properties": {
            "direction": {
                "type": "string",
                "enum": ["up", "down", "left", "right", "forward", "back"]
            },
            "distance": {
                "type": "integer",
                "minimum": 20,
                "maximum": 500
            }
        },
        "required": ["direction", "distance"]
    }
}
4. 回転
{
    "name": "rotate",
    "description": "Rotates the Tello drone clockwise or counter-clockwise",
    "inputSchema": {
        "type": "object",
        "properties": {
            "direction": {
                "type": "string",
                "enum": ["cw", "ccw"]
            },
            "degrees": {
                "type": "integer",
                "minimum": 1,
                "maximum": 3600
            }
        },
        "required": ["direction", "degrees"]
    }
}

MCP クライアントとの統合

MCP クライアントを接続するには:

  1. サーバーを起動し、SSE エンドポイントに接続します:
GET http://localhost:3000/sse
  1. MCP 対応モデルにプロンプトを送信します。モデルは SSE 経由で通信します
event: endpoint
data: /message?sessionId=<session-id>
  1. 初期化リクエストを送信します:
{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize"
}
  1. 利用可能なツールを一覧表示します:
{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "listTools"
}
  1. ツールを呼び出します(例:離陸):
{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "callTool",
    "params": {
        "name": "takeoff",
        "arguments": {}
    }
}

エラー処理

このサーバーは、次のような包括的なエラー処理を実装しています:

  • ドローンへの接続失敗
  • 無効なコマンド
  • ネットワークのタイムアウト
  • プロトコルエラー
  • 無効なツールパラメーター

すべてのエラーはログに記録され、適切な JSON-RPC 2.0 エラーレスポンスとして返されます。

ログ記録

サーバーは stderr に、次の詳細情報を記録します:

  • サーバーの起動/終了
  • ドローンの接続状態
  • コマンドの実行
  • クライアントの接続
  • エラーの発生状況

セキュリティに関する考慮事項

  • UDP ポートをバインドするため、サーバーには root/sudo アクセスが必要です
  • 認証は実装されていません(ネットワークセキュリティに依存します)
  • すべてのオリジンに対して CORS が有効になっています(*)
  • 管理された環境でのみ使用してください

開発

このサーバーは次の技術を使用して構築されています:

  • プロトコル処理用の Python の mcp ライブラリ
  • HTTP/SSE トランスポート用の Starlette
  • ASGI サーバーとしての Uvicorn
  • ドローンとの UDP 通信に使用する Python 標準のソケットライブラリ

トラブルシューティング

  1. サーバーが起動しない:

    • sudo/root アクセスがあることを確認します
    • Tello の WiFi に接続されていることを確認します
    • ポート 3000 をほかのプロセスが使用していないことを確認します
  2. ドローンに接続できない:

    • ドローンの電源が入っていることを確認します
    • WiFi 接続を確認します
    • ほかのアプリケーションがドローンを制御していないことを確認します
  3. コマンドが失敗する:

    • ドローンのバッテリー残量を確認します
    • ドローンが安全な飛行環境にあることを確認します
    • コマンドのパラメーターが許容範囲内であることを確認します

ライセンス

MIT

貢献

貢献を歓迎します。

コメント

MCP は初めてですか?

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

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