使用说明
泰勒特工
使用以下方式注册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
这将:
- 创建一个具有名称、描述和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获取。