robot_MCP
IliaLarchenko/robot_MCP加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你对着一台电脑说:"把红色的积木从左边搬到右边",然后一台真实的机械臂就动了起来,精准地完成了任务。这不是科幻,而是 IliaLarchenko/robot_MCP 这个开源项目正在做的事情。
场景还原:当你用 Claude Desktop 或 Cursor 编写代码时,顺手让它"帮我把桌上的水杯拿过来"——这台 6 轴机械臂会真的执行这个动作。背后的原理是将机器人的控制接口封装成 MCP(Model Context Protocol)工具,让大语言模型能够以自然语言指令的方式操控真实世界的物理设备。
这个项目填补了一个有趣的空白:传统机器人控制需要学习专用语言(ROS 消息、G-code 等),现在只需要会说英语,就能指挥机器人。
MCP(Model Context Protocol)是 Anthropic 主导的 AI Agent 工具调用协议标准,类似 USB 接口——有了它,大模型可以调用各种工具和服务。这个项目将 SO-ARM100 机械臂封装为一个 MCP Server,暴露了以下核心工具:
值得注意的是,MCP Server 使用 FastMCP 框架实现,支持 stdio、SSE、streamable-http 三种传输方式,其中 HTTP SSE 允许远程访问(跨越机器运行 MCP 服务),这对于机器人这种需要物理连接的设备非常实用。
项目的机器人控制层依赖 Hugging Face 的 LeRobot 框架。这是一个专门为低成本开源机器人设计的控制和模仿学习库,支持 SO-ARM100、SO-101、LeKiwi 等多种机器人硬件。
代码中导入了 LeRobot 的三个核心组件:SO100Follower、SO101Follower 和 LeKiwiClient。通过统一的接口层(RobotController 类),项目实现了对不同机器人的兼容。
from lerobot.robots import Robot
from lerobot.robots.so101_follower import SO101Follower, SO101FollowerConfig
from lerobot.robots.lekiwi import LeKiwiClient, LeKiwiClientConfig
这是一个典型的适配器模式应用:上层 MCP 服务调用统一的 RobotController,下层通过 LeRobot 适配不同的机器人硬件,实现"一个接口,多种设备"的设计目标。
整个系统的架构可以分为清晰的三层:
第一层:LLM 决策层(agent.py + llm_providers/)
llm_providers/factory.py 工厂模式,按模型名称自动选择对应 provider第二层:MCP 协议层(mcp_robot_server.py)
get_state_with_images() 负责合并机器人状态 JSON 和摄像头图像_np_to_mcp_image() 将 numpy 数组格式的 RGB 图像转换为 MCP Image 对象_robot 全局变量),允许 MCP Inspector 在无硬件时启动调试第三层:机器人控制层(robot_controller.py + kinematics.py)
RobotController 类:统一的机器人操作接口,返回结构化的 MoveResultKinematicsModel 类:正逆运动学计算,管理臂长参数(L1/L2)、基座高度、肩/肘安装偏移opencv-python) 读取,支持多摄像头配置这种分层设计使得任意一层都可以独立替换——换用不同的 LLM 提供商不需要修改 MCP Server,改用其他机器人控制库也只需替换底层驱动。
项目还提供了纯 Python 的键盘控制器(keyboard_controller.py),基于 pynput 库实现。这意味着即使不用 MCP,用户也可以手动控制机器人。这在调试阶段特别有用——先确认硬件连接和校准正常,再切换到 AI 控制模式。
README 中特别提到了成本问题:MCP Server 本身免费,但调用 LLM 的费用由用户承担。每次 Agent 请求都会附带摄像头图像帧,而 Claude 会将这些图像计入门槛 token 用量(比纯文本贵得多)。Gemini 则不将 MCP 图像计入 token(仅显示文本 token 用量),相对更经济。
局限一:lerobot 版本兼容性问题 作者在 README 中明确提到,LeRobot 在视频发布后有一次重大更新,导致与原始代码不兼容。如果想严格复现视频教程,需要使用 v0.0.1 release 版本。这是一个持续维护中的"版本漂移"风险。
局限二:依赖不稳定
lerobot 直接从 GitHub 安装(git+https://github.com/huggingface/lerobot.git),而非 PyPI 稳定版本,任何 LeRobot 的 breaking change 都可能导致项目失效。
局限三:测试覆盖 项目有 5 个测试文件覆盖 agent、config、llm_providers、mcp_server 和 robot_controller,但这些都是单元/集成测试,没有端到端的硬件测试(因为 CI 环境无法连接真实机器人)。
局限四:LeKiwi 移动底盘尚未支持 README 提到 LeKiwi 支持仅限机械臂部分,移动底座的 MCP 控制还在 TODO 列表中。
这个项目代表了一个有趣的方向:让 AI Agent 不仅能调用软件工具(搜索、代码执行),还能操控真实世界的物理设备。这是具身智能(Embodied AI)的一个轻量级实践案例。
SO-ARM100 是一款基于 Feetech STS3215 伺服电机的 6 轴机械臂,零售价在数百美元级别,Hugging Face 还提供了其数字孪生模型。结合本项目,它成为大模型操控真实硬件的低成本实验平台——无需昂贵的工业机械臂,普通爱好者也能参与具身智能的研究。
从数据来看,81 stars、5 个 open issues、持续的更新维护(lerobot 兼容性修复),说明这是一个活跃的开发者项目,而非已停止维护的"僵尸仓库"。
| 步骤 | 命令 | 说明 |
|---|---|---|
| 安装 | pip install -r requirements.txt | 依赖包含 lerobot(GitHub 安装) |
| 校准 | python check_positions.py | 无控制状态下检查关节状态 |
| 手动 | python keyboard_controller.py | 键盘控制,调试硬件 |
| MCP 调试 | mcp dev mcp_robot_server.py | MCP Inspector 可视化调试 |
| 正式运行 | mcp run mcp_robot_server.py --transport sse | SSE 传输,配置 Claude Desktop |
| AI 控制 | python agent.py --model claude-3-7-sonnet-latest | 命令行 AI Agent |
整体来看,这是一个有明确应用场景、有实际硬件依赖、有活跃维护的项目。它不是通用的 AI 框架,而是一个专精于机器人控制的 MCP Server,适合对具身智能有兴趣、且拥有对应硬件的开发者研究学习。