Reachy Mini MCP
# Reachy Mini MCP Server
MCP (Model Context Protocol) server for controlling [Reachy Mini](https://www.pollen-robotics.com/reachy-mini/) robot from Claude.
## Installation
```bash
uv sync
```
## Usage
### With Claude Code
Add to `~/.claude/claude_code_config.json`:
```json
{
"mcpServers": {
"reachy-mini": {
"command": "uv",
"args": ["run", "--directory", "/path/to/reachy-mini-mcp", "reachy-mini-mcp"],
"env": {
"REACHY_HOST": "localhost"
}
}
}
}
```
### Environment Variables
- `REACHY_HOST` - Daemon host (default: `localhost`)
- `REACHY_PORT` - Daemon port (default: `8000`)
- `REACHY_SSH_USER` - SSH username for streaming commands (default: `reachy`)
## Available Tools
| Tool | Description |
|------|-------------|
| `reachy_status` | Get daemon health status |
| `reachy_get_state` | Get full robot state |
| `reachy_move_head` | Move head (pitch, roll, yaw) |
| `reachy_look_at` | Look at world coordinates |
| `reachy_move_body` | Rotate body yaw |
| `reachy_play_animation` | Play animation (wave, nod, dance) |
| `reachy_antenna_happy` | Happy antenna expression |
| `reachy_antenna_sad` | Sad antenna expression |
| `reachy_antenna_wiggle` | Wiggle antennas |
| `reachy_enable_motors` | Enable motors (stiff) |
| `reachy_disable_motors` | Disable motors (limp) |
| `reachy_gravity_compensation` | Enable soft mode |
| `reachy_capture_image` | Capture camera frame |
| `reachy_say` | Text-to-speech |
| `reachy_play_sound` | Play sound file |
| `reachy_start_webrtc_stream` | Start WebRTC video/audio streaming |
| `reachy_stop_webrtc_stream` | Stop WebRTC streaming |
| `reachy_webrtc_stream_status` | Check if stream is running |
## Requirements
- Reachy Mini daemon running on port 8000
- Python 3.10+
TDQS
Scored across 19 tools
Most tools target clearly distinct actions such as moving the head, capturing images, or checking status. Some overlap exists among reachy_status, reachy_get_state, and reachy_get_motor_status, and between reachy_check_camera and reachy_capture_image, but the descriptions mostly clarify their different purposes.
All tools follow a consistent reachy_ prefix with verb_noun naming, such as move_head, capture_image, and stop_webrtc_stream. The pattern is uniform and predictable across the entire set.
At 19 tools, the count is slightly above the ideal sweet spot but remains justifiable for a robot control server covering movement, sensors, media, and streaming. The tools are not redundant enough to warrant trimming, though a few could potentially be consolidated.
The tool set covers the main robot lifecycle: wake/sleep, status, movement, camera, microphone, audio playback, and WebRTC streaming. Minor gaps exist such as no explicit individual joint control or audio file upload capability, but these do not critically undermine the server's apparent purpose.