Skip to main content
Glama
README.md
# 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

A3.7/5.0

Scored across 19 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues