无人机AI代理服务

将DJI Tello无人机注册为基于区块链的AI代理,通过MCP协议提供服务,用于远程控制和交互。

  • by YakRoboticsGarage
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 YakRoboticsGarage/tello-8004-mcp

使用说明

泰勒特工

使用以下方式注册DJI Tello无人机作为链上AI代理 ERC-8004 并通过MCP展示其功能。

该项目将DJI Tello四旋翼无人机的UDP SDK封装为MCP服务器,并在以太坊Sepolia上注册,以便其他代理可以发现并与之交互。

建筑

Claude / AI Client
        |
        | MCP (streamable-http)
        v
  FastMCP Server (port 8000)
        |
        | ngrok tunnel
        v
  Public URL (*.ngrok-free.dev/mcp)
        |
        | registered on-chain
        v
  ERC-8004 Identity Registry (Sepolia)
        |
        | tokenURI -> IPFS
        v
  Agent Card JSON (Pinata/IPFS)

先决条件

  • Python 3.13+
  • 紫外线 包管理器
  • DJI Tello无人机(通过WiFi连接)
  • Sepolia ETH用于天然气(免费 水龙头)
  • 增加 IPFS上传帐户(免费层)
  • 吸烟 公共隧道账户(免费等级)

快速开始

1.克隆并安装

git clone <repo-url>
cd tello-agent
uv sync --prerelease=allow

--prerelease=allow 是必需的,因为 agent0_sdk 取决于 ipfshttpclient>=0.8.0a2.

2.配置环境

cp .env.example .env

编辑 .env 与你的价值观:

变量 描述
TELLO_HOST 无人机IP地址(默认: 192.168.10.1 对于AP模式)
NGROK_AUTHTOKEN 从 ngrok仪表板
NGROK_DOMAIN 免费静态域 ngrok域名
RPC_URL 以太坊Sepolia RPC(默认值: https://ethereum-sepolia-rpc.publicnode.com)
WALLET_ADDRESS 您的以太坊地址(在步骤3中自动生成)
SIGNER_PVT_KEY 用于签署交易的私钥(在步骤3中自动生成)
PINATA_JWT JWT令牌来自 Pinata API密钥

3.生成钱包

uv run python src/generate_wallet.py --new

这将创建一个以太坊密钥对并将其保存到 .env。从水龙头上用Sepolia ETH为其提供资金。

4.启动MCP服务器

连接Tello的WiFi热点(TELLO-XXXXXX)那么:

# Local only (for testing with Claude Code)
uv run python src/server.py

# With ngrok tunnel (for public access and registration)
uv run python src/server.py --ngrok

服务器运行在 http://localhost:8000/mcp 使用MCP流式http传输。

5.使用克劳德代码进行测试

将MCP服务器添加到Claude代码中:

claude mcp add --transport http tello http://localhost:8000/mcp

然后在克劳德代码会话中,让克劳德检查无人机状态、起飞、移动或降落。

6.在ERC-8004上注册

MCP服务器正在运行( --ngrok):

uv run python src/register_agent.py

这将:

  1. 创建一个具有名称、描述和MCP端点的代理
  2. 声明MCP工具: takeoff, land, move, rotate, flip, get_status, get_attitude, is_drone_online, get_drone_info
  3. 设置链上元数据: category=robot, robot_type=quadrotor, fleet_provider, fleet_domain
  4. 通过Pinata将代理卡JSON上传到IPFS
  5. 在身份注册表上创建ERC-721 NFT,并将tokenURI设置为IPFS哈希

7.发现已注册的机器人

uv run python src/discover_robot_agent.py

搜索所有代理 category=robot Sepolia上的元数据,并显示他们的工具和车队信息。

MCP工具

工具 参数 说明
takeoff -- 起飞并悬停在约1米的高度
land -- 在当前位置安全着陆
move direction (向前/向后/向左/向右/向上/向下), distance (20-500厘米) 向某个方向移动
rotate direction (顺时针/逆时针), degrees (1-360) 旋转到位
flip direction (前/后/左/右) 特技翻转(需要>50%的电池)
get_status -- 电池百分比、高度、飞行时间、温度、飞行状态
get_attitude -- 俯仰、横滚、偏航、气压计、飞行时间距离、速度
is_drone_online -- 使用电池电量进行健康检查
get_drone_info -- SDK版本、序列号、WiFi信号

WiFi连接

AP模式(默认): Tello创建了自己的WiFi热点(TELLO-XXXXXX).将你的电脑连接到它。无人机在 192.168.10.1。注意:在此模式下,您的计算机将无法访问互联网,因此ngrok将无法工作。

车站模式(仅限Tello EDU): 无人机将加入您现有的WiFi网络。使用 station-control.py setup 脚本来自 飞得更远 项目来配置此。集 TELLO_HOST 在 .env 无人机的DHCP分配IP。

更新现有注册

注册后更新IPFS元数据或MCP工具:

uv run python src/update_agent.py

要单独修复链上元数据键(避免随机数问题):

uv run python src/fix_metadata.py

项目结构

src/
  server.py                 # FastMCP server with drone tools
  tello_client.py           # Async wrapper around djitellopy SDK
  tunnel.py                 # ngrok tunnel helper
  register_agent.py         # ERC-8004 registration (first time)
  update_agent.py           # Update existing registration
  fix_metadata.py           # Fix on-chain metadata keys
  discover_robot_agent.py   # Find registered robot agents
  generate_wallet.py        # Ethereum wallet generator
docs/
  PLAN.md                   # Architecture and implementation plan
  CHANGELOG.md              # Release notes

已知限制

  • WiFi独家:在AP模式下,电脑必须连接Tello的WiFi,失去互联网接入。使用工作站模式同时进行互联网+无人机控制。
  • 自动着陆Tello在15秒无指令后自动着陆。MCP服务器不发送保活数据包,因此如果AI代理在命令之间暂停太久,无人机将着陆。
  • UDP端口冲突:一次只能有一个进程绑定到Tello的UDP端口(8889、8890)。不要同时运行其他Tello脚本。
  • SDK自动发现功能已损坏:The agent0_sdk EndpointCrawler不支持MCP流式http传输。工具必须通过以下方式手动申报 mcp_ep.meta["mcpTools"] 随着 auto_fetch=False.
  • 子图索引延迟:链上更新后,Graph可能需要时间重新索引。发现脚本回退到MCP工具的直接IPFS获取。

链接