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. 01通过 SSE 实时控制无人机
  2. 02支持起飞与降落
  3. 03支持前后左右上下移动
  4. 04支持顺时针与逆时针旋转
  5. 05提供错误处理与日志记录
  6. 06为 Web 客户端启用 CORS

适用场景

  1. 01让 MCP 客户端调用工具控制 Tello 无人机
  2. 02在受控环境中测试基于 LLM 的无人机指令

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Tello 无人机 MCP 服务

一个用于控制 DJI Tello 无人机的 Model Context Protocol (MCP) 服务实现。该服务允许任何兼容 MCP 的客户端通过标准化接口控制 Tello 无人机。

该项目正在积极开发中,请阅读安全注意事项

功能

  • 支持 MCP
  • 通过 SSE(Server-Sent Events)实时控制无人机
  • 健壮的错误处理与日志记录
  • 为 Web 客户端启用 CORS(如 mcp inspector)
  • 支持基本的 Tello 无人机命令:
    • 起飞
    • 降落
    • 移动(上/下/左/右/前/后)
    • 旋转(顺时针/逆时针)

前置条件

  • Python 3.7+
  • DJI Tello 无人机
  • 与 Tello 无人机的网络连接
  • Root/sudo 权限(UDP socket 绑定所需)

安装

  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. Takeoff
{
    "name": "takeoff",
    "description": "Commands the Tello drone to take off",
    "inputSchema": {
        "type": "object",
        "properties": {}
    }
}
2. Land
{
    "name": "land",
    "description": "Commands the Tello drone to land",
    "inputSchema": {
        "type": "object",
        "properties": {}
    }
}
3. Move
{
    "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. Rotate
{
    "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. 发送 initialize 请求:
{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize"
}
  1. 列出可用工具:
{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "listTools"
}
  1. 调用工具(示例 - takeoff):
{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "callTool",
    "params": {
        "name": "takeoff",
        "arguments": {}
    }
}

错误处理

该服务实现了全面的错误处理:

  • 无人机连接失败
  • 无效命令
  • 网络超时
  • 协议错误
  • 无效的工具参数

所有错误都会被记录,并作为正确的 JSON-RPC 2.0 错误响应返回。

日志记录

该服务将详细日志记录到 stderr,包括:

  • 服务启动/关闭
  • 无人机连接状态
  • 命令执行
  • 客户端连接
  • 错误情况

安全注意事项

  • 该服务需要 root/sudo 权限才能绑定 UDP 端口
  • 未实现身份验证(依赖网络安全)
  • 对所有来源(*)启用 CORS
  • 仅在受控环境中使用

开发

该服务使用以下技术构建:

  • Python 的 mcp 库用于协议处理
  • Starlette 用于 HTTP/SSE 传输
  • Uvicorn 作为 ASGI 服务器
  • 原生 Python socket 库用于无人机 UDP 通信

故障排查

  1. 服务无法启动:

    • 确保你拥有 sudo/root 权限
    • 检查 Tello 的 WiFi 是否已连接
    • 确认没有其他进程正在使用端口 3000
  2. 无人机无法连接:

    • 确保无人机已开机
    • 检查 WiFi 连接
    • 确认没有其他应用正在控制无人机
  3. 命令失败:

    • 检查无人机电池电量
    • 确保无人机处于安全的飞行环境
    • 确认命令参数在允许范围内

许可证

MIT

贡献

欢迎贡献。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。