mcpField
R
Reachy Mini Mcp

Reachy Mini Mcp

本地服务
github.com/OriNachum其他3415 周前更新

关于 Reachy Mini Mcp

Reachy Mini Mcp 是用于通过守护进程控制 Reachy Mini 机器人或模拟器的 MCP 服务和管理命令行工具。它通过一个操作工具提供头部和天线移动、摄像头访问、状态监控、手势、情绪表达及顺序执行命令。

主要功能

  1. 01控制头部和天线
  2. 02获取图像并查看摄像头状态
  3. 03检查机器人健康状况和电源
  4. 04执行手势和表达情绪
  5. 05按顺序运行多个操作
  6. 06通过命令行管理服务注册

适用场景

  1. 01移动 Reachy Mini 机器人的头部和天线
  2. 02触发手势或情绪表达
  3. 03检查机器人状态并获取摄像头图像
  4. 04注册或诊断 MCP 服务

MCP 相关

通过 `operate_robot` MCP 工具提供机器人控制和监控操作,并支持顺序执行命令。其命令行工具可为受支持的 MCP 客户端注册、运行和诊断服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Reachy Mini MCP 服务

Coverage Quality Gate Status

一个使用 FastMCP 控制 Reachy Mini 机器人的模型上下文协议(MCP)服务。

说明

想了解完整的对话应用? 此代码库还包含完整的“对话栈”(听觉 + 大模型 + 对话逻辑),可将 Reachy Mini 打造成自主对话机器人。

Docker 配置专为运行此完整对话应用而设。

👉 阅读对话栈概览

👉 Docker 完整配置指南

此 MCP 服务提供全面的工具集,可用于控制 Reachy Mini 的头部动作、天线和摄像头,以及执行各种手势和情绪表达。

路线图

MCP
  • 语音:TTS、piper
  • Agent 层
  • 支持动作队列
  • 支持中断
  • 支持移动身体,reachy-mini python SDK
对话应用
  • 听觉:
    • VAD、WebRTCVAD / SileroVAD
    • STT、faster-whisper
  • 视觉
  • 记忆:
    • 文件
    • 向量数据库
    • 向量图数据库
  • 成长,支持每晚微调
  • 支持 MQTT
  • 移至 autonomous-intelligence 代码库

功能

动作与语音控制
  • 头部控制:在 3D 空间中移动头部(x、y、z),并调整朝向(roll、pitch、yaw)
  • 天线控制:分别控制左、右天线
  • 语音(TTS):让机器人在执行动作时说话(通过 speech 参数)
  • 手势:执行预定义手势(问候、是、否、思考、庆祝)
  • 情绪:表达情绪(开心、悲伤、好奇、惊讶、困惑)
  • 方向注视:让机器人朝特定方向看(上、下、左、右)
监控与控制
  • 状态监控:获取机器人完整状态、头部状态、天线状态和摄像头状态
  • 电源管理:开启/关闭机器人
  • 紧急停止:立即停止所有动作
  • 健康状态:监控机器人健康状况和系统状态
高级功能
  • 命令序列:在一次调用中执行多个机器人操作(新增!)
  • 统一接口:通过一个 operate_robot 工具使用所有功能
  • 基于代码库的工具:使用 JSON 定义的易扩展工具系统

前提条件

  1. Python 3.10+(已使用 Python 3.10-3.13 测试)
  2. Reachy Mini 机器人:通过 USB 或无线连接的实体机器人,或在 MuJoCo 中运行的模拟环境
  3. Reachy Mini 守护进程:必须在 localhost:8000 上运行(默认值)

安装

此项目以可通过 pip 安装的发行包 reachy-mini-mcp 发布,提供 MCP 服务和管理器 CLI(reachy-mini-mcp)。

# Manager CLI only (pure stdlib — show/install/uninstall/doctor/overview):
uv tool install reachy-mini-mcp        # or: pipx install reachy-mini-mcp

# To actually run the server, add the [server] extra (and [tts] for speech):
pip install "reachy-mini-mcp[server]"          # MCP stdio server
pip install "reachy-mini-mcp[server,tts]"      # + Piper TTS
pip install "reachy-mini-mcp[openai]"          # OpenAI-compatible HTTP server

从源码检出目录运行 ./setup.sh,会创建 .venv 并以可编辑模式安装带有 [server,tts] 的软件包。

管理器 CLI

reachy-mini-mcp 是 MCP 服务管理器——它会告知 Agent 或操作者如何注册和运行此服务,也可以代为完成:

reachy-mini-mcp overview     # one-screen status (also the no-arg default)
reachy-mini-mcp show         # print the mcp.json snippet for this machine
reachy-mini-mcp explain      # how MCP registration works + where configs live
reachy-mini-mcp install --client claude-code --scope project   # set it up
reachy-mini-mcp uninstall --client claude-code --scope project # put it down
reachy-mini-mcp doctor       # diagnose deps, daemon, and client registration
reachy-mini-mcp serve        # run the FastMCP stdio server (what mcp.json calls)

install / uninstall 的目标可以是 claude-code(项目 .mcp.json 或用户 ~/.claude.json)、claude-desktop、cursor,也可以是任意 --path FILE。它们会合并现有配置(保留其他服务),并支持使用 --dry-run 打印结果而不写入文件。

向 MCP 客户端注册

要添加的 mcp.json 条目(也可通过 reachy-mini-mcp show 生成):

{
  "mcpServers": {
    "reachy-mini": {
      "command": "reachy-mini-mcp",
      "args": ["serve"],
      "env": { "REACHY_BASE_URL": "http://localhost:8000" }
    }
  }
}

运行 MCP 服务

步骤 1:启动 Reachy Mini 守护进程

启动 MCP 服务前,需要先运行 Reachy Mini 守护进程。

👉 请遵循 Reachy Mini 官方守护进程设置指南

确保守护进程正在运行且可访问(默认地址:http://localhost:8000)。

步骤 2:启动 MCP 服务
reachy-mini-mcp serve

等效调用方式:python -m reachy_mini_mcp serve;如果是源码检出,则使用 fastmcp run reachy_mini_mcp/server.py。

现在 MCP 服务将开始运行,并准备好接受来自 MCP 客户端的连接。

可用的 MCP 工具

单一统一工具:operate_robot

此 MCP 服务提供一个 MCP 工具,用于访问所有机器人控制功能:

工具描述
operate_robot(tool_name, parameters)元工具,可通过名称动态执行任意机器人控制操作。
operate_robot(commands)序列模式,按顺序执行多个操作。

通过此统一接口,你可以单独调用任意机器人控制操作,也可以按序列调用:

单条命令模式:

# Example: Get robot state
operate_robot("get_robot_state")

# Example: Express emotion with parameters
operate_robot("express_emotion", {"emotion": "happy"})

# Example: Move head with multiple parameters
operate_robot("move_head", {"z": 10, "duration": 2.0, "mm": True})

序列模式(新增!):

# Example: Execute multiple commands in sequence
operate_robot(commands=[
    {"tool_name": "perform_gesture", "parameters": {"gesture": "greeting"}},
    {"tool_name": "nod_head", "parameters": {"duration": 2.0, "angle": 15}},
    {"tool_name": "move_antennas", "parameters": {"left": 30, "right": -30, "duration": 1.5}},
    {"tool_name": "look_at_direction", "parameters": {"direction": "left", "duration": 1.0}}
])

注意: 工具名称必须完全匹配。正确的工具是 get_robot_state,而不是 get_robot_status。

可用的机器人操作

所有操作都可通过 operate_robot 工具访问。以下是所有可用操作:

基本状态与控制
操作描述
get_robot_state获取完整的机器人状态,包括所有组件
get_head_state获取当前头部位置和朝向
get_antennas_state获取当前天线位置
get_camera_state获取摄像头状态
get_power_state检查机器人是否已开机
get_health_status获取整体健康状态
turn_on_robot开启机器人
turn_off_robot关闭机器人
stop_all_movements紧急停止所有动作
头部移动
操作描述
move_head将头部移动到指定姿势(参数:x、y、z、roll、pitch、yaw、duration)
reset_head将头部恢复到中立位置
nod_head让机器人点头(参数:duration、angle)
shake_head让机器人摇头(参数:duration、angle)
tilt_head将头部向左或向右倾斜(参数:direction、angle、duration)
look_at_direction朝某个方向看(参数:direction - up/down/left/right、duration)
天线移动
操作描述
move_antennas将天线移动到指定位置(参数:left、right、duration)
reset_antennas将天线恢复到中立位置
情绪与手势
操作描述
express_emotion表达情绪(参数:emotion - happy/sad/curious/surprised/confused)
perform_gesture做出手势(参数:gesture - greeting/yes/no/thinking/celebration)
摄像头
操作描述
get_camera_image从摄像头捕获图像
get_camera_state获取摄像头状态

使用示例

所有操作都通过 operate_robot 工具调用。以下是一些示例:

示例 1:基本头部移动
# In your MCP client (e.g., Claude Desktop)
# Move head up 10mm and tilt 15 degrees
operate_robot("move_head", {"z": 10, "roll": 15, "duration": 2.0})

# Return to neutral
operate_robot("reset_head")
示例 2:表达情绪
# Make the robot look happy
operate_robot("express_emotion", {"emotion": "happy"})

# Make the robot look curious
operate_robot("express_emotion", {"emotion": "curious"})

# Return to neutral
operate_robot("express_emotion", {"emotion": "neutral"})
示例 3:做出手势
# Wave hello
operate_robot("perform_gesture", {"gesture": "greeting"})

# Nod yes
operate_robot("perform_gesture", {"gesture": "yes"})

# Shake no
operate_robot("perform_gesture", {"gesture": "no"})
示例 4:复杂交互
# Turn on the robot
operate_robot("turn_on_robot")

# Check state
state = operate_robot("get_robot_state")

# Make robot look around
operate_robot("look_at_direction", {"direction": "left", "duration": 1.5})
operate_robot("look_at_direction", {"direction": "right", "duration": 1.5})
operate_robot("look_at_direction", {"direction": "forward"})

# Express surprise
operate_robot("express_emotion", {"emotion": "surprised"})

# Perform celebration
operate_robot("perform_gesture", {"gesture": "celebration"})

# Turn off when done
operate_robot("turn_off_robot")
示例 5:控制天线
# Move antennas independently
operate_robot("move_antennas", {"left": 30, "right": -30, "duration": 1.0})

# Reset to neutral
operate_robot("reset_antennas")
示例 6:命令序列(新增!)

通过命令序列执行复杂的机器人行为:

# Greeting sequence
operate_robot(commands=[
    {"tool_name": "express_emotion", "parameters": {"emotion": "happy"}},
    {"tool_name": "perform_gesture", "parameters": {"gesture": "greeting"}},
    {"tool_name": "nod_head", "parameters": {"duration": 1.5, "angle": 10}},
    {"tool_name": "reset_head", "parameters": {}}
])

# Curious behavior - look around
operate_robot(commands=[
    {"tool_name": "express_emotion", "parameters": {"emotion": "curious"}},
    {"tool_name": "move_antennas", "parameters": {"left": 30, "right": 30, "duration": 1.0}},
    {"tool_name": "look_at_direction", "parameters": {"direction": "left", "duration": 1.0}},
    {"tool_name": "look_at_direction", "parameters": {"direction": "right", "duration": 1.0}},
    {"tool_name": "look_at_direction", "parameters": {"direction": "forward", "duration": 0.5}}
])

# Initialization routine
operate_robot(commands=[
    {"tool_name": "turn_on_robot", "parameters": {}},
    {"tool_name": "reset_head", "parameters": {}},
    {"tool_name": "reset_antennas", "parameters": {}},
    {"tool_name": "get_robot_state", "parameters": {}}
])

有关命令序列的更多详情,请参阅 SEQUENCE_COMMANDS.md。

与 MCP 支持的客户端配合使用

最简单的方法是让管理器 CLI 为你写入配置:

reachy-mini-mcp install --client claude-desktop   # or claude-code / cursor

如需手动操作,请将以下内容添加到客户端的配置文件中(同一份 JSON 适用于 Claude Desktop、Claude Code 和 Cursor——请参见下方的位置):

{
  "mcpServers": {
    "reachy-mini": {
      "command": "reachy-mini-mcp",
      "args": ["serve"],
      "env": { "REACHY_BASE_URL": "http://localhost:8000" }
    }
  }
}

配置文件位置:

  • Claude Desktop — macOS:~/Library/Application Support/Claude/claude_desktop_config.json; Linux:~/.config/Claude/claude_desktop_config.json; Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Claude Code — 项目:./.mcp.json;用户:~/.claude.json
  • Cursor — 项目:./.cursor/mcp.json;用户:~/.cursor/mcp.json

编辑配置后,重启客户端。Reachy Mini 工具即可在对话中使用。

MCP 提示词

该服务包含以下实用提示词:

  • control_prompt - 控制 Reachy Mini 的指南
  • safety_prompt - 安全指南和限制

架构

┌─────────────────┐         ┌──────────────────┐         ┌─────────────────┐
│  MCP Client     │◄───────►│  FastMCP Server  │◄───────►│ Reachy Daemon   │
│  (Claude, etc)  │  stdio  │ (reachy-mini-mcp │  HTTP   │  (localhost:8000)│
│                 │         │      serve)      │         │                 │
└─────────────────┘         └──────────────────┘         └─────────────────┘
                                                                    │
                                                                    ▼
                                                          ┌─────────────────┐
                                                          │  Reachy Mini    │
                                                          │  Robot/Sim      │
                                                          └─────────────────┘

开发

基于仓库的工具系统

此 MCP 服务采用基于仓库的方式定义工具,具有很强的可扩展性和可定制性。工具定义在 JSON 文件中,而不是硬编码在 Python 中。

主要优点:

  • ✅ 无需修改服务代码即可添加新工具
  • ✅ 通过编辑 JSON 文件自定义工具行为
  • ✅ 易于对工具定义进行版本控制和共享
  • ✅ 可通过脚本执行复杂操作

仓库结构:

tools_repository/
├── tools_index.json          # Root file listing all tools
├── *.json                    # Individual tool definitions
└── scripts/                  # Python scripts for complex tools
    ├── nod_head.py
    ├── shake_head.py
    ├── express_emotion.py
    └── perform_gesture.py
添加新工具

在 tools_repository/scripts/my_tool.py 中创建 Python 脚本:

async def execute(make_request, create_head_pose, params):
    """Execute the tool."""
    # Your logic here
    await make_request("POST", "/api/endpoint1", json_data={...})
    await asyncio.sleep(1.0)
    await make_request("POST", "/api/endpoint2", json_data={...})
    return {"status": "success"}

然后创建 JSON 文件(例如 tools_repository/my_tool.json):

{
  "name": "my_tool",
  "description": "Description of what my tool does",
  "parameters": {
    "required": [
      {"name": "param1", "type": "string", "description": "First parameter"}
    ],
    "optional": [
      {"name": "param2", "type": "number", "default": 1.0, "description": "Second parameter"}
    ]
  },
  "execution": {
    "type": "script",
    "script_file": "my_tool.py"
  }
}

添加到 tools_repository/tools_index.json:

{
  "name": "my_tool",
  "enabled": true,
  "definition_file": "my_tool.json"
}

重启服务——现在即可使用你的工具!

测试工具

验证工具定义:

python test_repository.py

此操作会验证所有 JSON 文件是否有效,以及脚本文件是否存在。

资源

许可证

本项目采用 MIT 许可证,其中包括此仓库内的对话和听力应用;许可证不适用于 Reachy Mini Daemon。

贡献

欢迎贡献!欢迎提交问题或拉取请求。

支持

关于以下内容的问题:

致谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。