article
README
🚀 Tello 无人机 MCP 服务器
Tello 无人机 MCP 服务器是一个用于控制 DJI Tello 无人机的 Model Context Protocol (MCP) 服务器实现。它允许任何与 MCP 兼容的客户端通过标准化接口控制 Tello 无人机,为无人机控制提供了便捷且通用的解决方案。
🚀 快速开始
先决条件
- Python 3.7+
- DJI Tello 无人机
- 与 Tello 无人机的网络连接
- 根用户或 sudo 访问权限(用于绑定 UDP 套接字)
安装步骤
- 克隆此仓库:
git clone <repository-url>
cd drone-mcp
- 安装依赖项:
pip install -r requirements.txt
配置 MCP
要使您的 MCP 客户端连接到 Tello 无人机服务器,请在 mcp.json 文件中添加以下配置(通常位于 ~/.cursor/mcp.json 或项目目录中):
{
"tello-drone": {
"url": "http://localhost:3000/sse"
}
}
此配置允许 MCP 工具和模型自动发现并连接到您的 Tello 无人机服务器。
启动服务器
- 连接到您的 Tello 无人机的 WiFi 网络(通常以“TELLO-”开头)。
- 启动服务器:
python -m mcp server --config config.yaml
- 访问
http://localhost:8000查看文档和 API 接口。
✨ 主要特性
- MCP 支持:提供对 Model Context Protocol (MCP) 的支持,实现标准化的无人机控制接口。
- 实时控制:通过 SSE(Server-Sent Events)进行实时无人机控制,确保操作的及时性。
- 健壮的错误处理和日志记录:全面处理各种错误情况,如无人机连接故障、无效命令等,并详细记录日志。
- CORS 启用:对所有来源启用 CORS(*),适用于 web 客户端,如 mcp 检查器。
- 基本命令支持:支持起飞、着陆、移动(上/下/左/右/前/后)、旋转(顺时针/逆时针)等基本的 Tello 无人机命令。
💻 使用示例
基础用法
起飞无人机
curl http://localhost:8000/api/drone/takeoff -X POST
响应:
{
"result": true,
"message": "Drone has taken off"
}
着陆无人机
curl http://localhost:8000/api/drone/land -X POST
响应:
{
"result": true,
"message": "Drone is landing"
}
高级用法
使用 SSE 接口发送命令
const eventSource = new EventSource('http://localhost:3000/sse');
eventSource.addEventListener('command', function(e) {
console.log(e.data);
});
🔧 技术细节
服务器使用以下技术构建:
- Python 的
mcp库用于协议处理,确保对 MCP 协议的高效支持。 - Starlette 用于 HTTP/SSE 传输,提供稳定的网络通信。
- Uvicorn 作为 ASGI 服务器,保证高性能的服务运行。
- 原生 Python 套接字库用于无人机 UDP 通信,实现与 Tello 无人机的可靠连接。
📄 许可证
本项目采用 MIT 许可证。
⚠️ 重要提示
- 此项目正在积极开发中,请阅读安全注意事项。
- 服务器需要 root/sudo 访问权限以绑定 UDP 端口。
- 没有实现身份验证,依赖于网络安全性。
- CORS 对所有来源启用(*),仅在受控环境中使用。
💡 使用建议
服务器无法启动
- 确保您有 sudo/root 访问权限。
- 检查 Tello 的 WiFi 是否已连接。
- 验证没有其他进程占用端口 3000。
无人机无法连接
- 确保无人机已开启电源。
- 检查 WiFi 连接状态。
- 验证没有其他应用程序在控制无人机。
命令失败
- 检查无人机电池电量。
- 确保无人机处于安全的飞行环境中。
- 验证命令参数是否在允许范围内。
贡献
欢迎对本项目进行贡献。
Scan to contact