泰勒特工
使用以下方式注册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)先决条件
快速开始
1.克隆并安装
git clone
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这将:
- 创建一个具有名称、描述和MCP端点的代理
- 声明MCP工具:
takeoff,land,move,rotate,flip,get_status,get_attitude,is_drone_online,get_drone_info - 设置链上元数据:
category=robot,robot_type=quadrotor,fleet_provider,fleet_domain - 通过Pinata将代理卡JSON上传到IPFS
- 在身份注册表上创建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_sdkEndpointCrawler不支持MCP流式http传输。工具必须通过以下方式手动申报mcp_ep.meta["mcpTools"]随着auto_fetch=False. - 子图索引延迟:链上更新后,Graph可能需要时间重新索引。发现脚本回退到MCP工具的直接IPFS获取。
