reachy-mini-mcp

by arturskowronski

Not rated
GitHub

About

Control the Reachy Mini robot (or simulator) from Claude, ChatGPT, or any MCP-compatible client.

Details

Author
arturskowronski
Categories
Other, AI

Setup

Install reachy-mini-mcp in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/arturskowronski/reachy-mini-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

Control theReachy Minirobot (or simulator) from Claude, ChatGPT, or any MCP-compatible client.

uv sync --extra reachy-sim uv run python reachy_debug.py

A short "dry run" of thereachy_debug.pysequential demo runner (simulator): step announcements, movements, vision, and artifacts.

Your browser can’t play this video.Download MP4.

AI Assistant --stdio--> MCP Server (reachy.py) --> ReachyMini SDK --> Robot / Simulator

The server exposes 16 tools, 4 prompts, and 4 resources via theModel Context Protocol. An AI assistant calls these tools to see through the robot's camera, move the robot, express emotions, play sounds, or detect audio direction -- no robotics knowledge needed on the AI side.

- Python 3.13+
-
Reachy Mini robotor the Reachy Mini simulator
-
uv(recommended) or pip

git clone https://github.com/ArturSkowronski/reachy-mini-mcp.git cd reachy-mini-mcp uv sync

Add the server to your MCP client configuration. The exact location depends on the client:

Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.jsonon macOS):

{ "mcpServers": { "reachy-mini": { "command": "uv", "args": ["--directory", "/path/to/reachy-mini-mcp", "run", "reachy.py"] } } }

Claude Code(.mcp.jsonin your project root):

{ "mcpServers": { "reachy-mini": { "command": "uv", "args": ["--directory", "/path/to/reachy-mini-mcp", "run", "reachy.py"] } } }

To enable thespeak_texttool, set these environment variables:

export ELEVENLABS_API_KEY="your-api-key" export ELEVENLABS_VOICE_ID="your-voice-id" # # Optional override prefix (takes precedence): # export REACHY_ELEVENLABS_API_KEY="your-api-key" # export REACHY_ELEVENLABS_VOICE_ID="your-voice-id"

Default voice (premade/free-tier friendly):Georgewith Voice IDJBFqnCBsd6RMkjVDRZzb.

Favorite voice (author preference):Horatiuswith Voice IDqXpMhyvQqiRxWQs4qSSB.

Optional overrides:ELEVENLABS_MODEL_ID(default:eleven_multilingual_v2),ELEVENLABS_OUTPUT_FORMAT(default:mp3_44100_128).

WAV support: if your ElevenLabs plan allows it, you can setELEVENLABS_OUTPUT_FORMAT=wav_44100to get WAV output instead of MP3.

- Default TTS output is MP3 (mp3_44100_128) because it works on lower ElevenLabs tiers.
- Some Reachy audio backends/environments may not have MP3 decoding available. In that case, MP3 playback can fail even though WAV works.
- If you need ElevenLabs to return WAV directly (wav_44100), ElevenLabs requires a higher tier (minimumPro).
- To force WAV output (when available), override the output format via environment variables:

- REACHY_ELEVENLABS_OUTPUT_FORMAT=wav_44100(preferred, takes precedence)
- orELEVENLABS_OUTPUT_FORMAT=wav_44100

- NO_COLOR: disable ANSI colors inreachy_debug.pyoutput.

- REACHY_DEBUG_ANNOUNCE_PAUSE_S(default:0.6): pause after each announcement before running the step.
- REACHY_DEBUG_TTS_SPEED(default:0.8): ElevenLabs speech speed.

ElevenLabs (used byspeak_textandreachy_debug.pyannouncements):

- REACHY_ELEVENLABS_API_KEYorELEVENLABS_API_KEY(required for TTS): API key.REACHY_prefixed value takes precedence.
- REACHY_ELEVENLABS_VOICE_IDorELEVENLABS_VOICE_ID(optional): voice id. Defaults toJBFqnCBsd6RMkjVDRZzb(George) if not set.
- REACHY_ELEVENLABS_MODEL_IDorELEVENLABS_MODEL_ID(optional): model id (default:eleven_multilingual_v2).
- REACHY_ELEVENLABS_OUTPUT_FORMATorELEVENLABS_OUTPUT_FORMAT(optional): output format (default:mp3_44100_128, optionallywav_44100if your plan allows it).

The server also exposes MCP resources that let AI assistants discover robot capabilities dynamically:

capture_imagegrabs a frame from Reachy Mini's wide-angle HD camera and returns it as inline JPEG content through the MCP protocol. The AI assistant receives the image directly in the conversation -- no file paths, no URLs, no extra setup.

scan_surroundingstakes this further by panning the camera across multiple angles and returning all frames in a single response:

User: "Look around and describe the room" Claude calls scan_surroundings(steps=5, yaw_range=120) <- Robot pans from -60deg to +60deg in 5 steps <- MCP returns 5 labeled JPEG frames + summary text Claude: "Starting from the left I can see a window with blinds, then a whiteboard, your desk with two monitors in the center, a bookshelf to the right, and a door at the far right."

The camera returns a standard BGR numpy frame from OpenCV, which gets JPEG-compressed and delivered as MCPImageContent. Any multimodal AI model that supports image inputs can process it -- Claude, GPT-4o, Gemini, etc.

Every tool carries semantic annotations that tell AI clients how to use it safely:

Pre-built prompt templates that guide AI assistants through common robot interaction scenarios:

express_emotionmaps emoji characters to choreographed movements:

# Install with dev dependencies uv sync --extra dev # Run all tests uv run pytest -v # Unit tests only uv run pytest -v -m "not integration" # Integration tests only (MCP protocol layer) uv run pytest -v -m integration # Lint uv run ruff check . && uv run ruff format --check . # Set up pre-commit hooks pre-commit install

For a one-click, full sequential debug demo (movement, gestures, audio, vision, tracking) with per-step status checks:

uv sync --extra reachy # If you want to auto-spawn the simulator daemon, also install: uv sync --extra reachy-sim uv run python reachy_debug.py

- Announces each upcoming test step (voice via ElevenLabs if configured, otherwise console fallback).
- Executes a full demo suite in sequence.
- Saves all captured images and a markdown run summary toresults/run-YYYYMMDD-HHMMSS/.
- Generates a single report file for the run:run_report.md.

This repo includes a static GitHub Pages site underdocs/(with the dry-run video embedded).

To publish: GitHub repo Settings -> Pages -> "Build and deployment" -> Source: "Deploy from a branch" -> Branch:main-> Folder:/docs.

Allows an LLM agent to control your Gaggimate espresso machine

AI-powered theatrical lighting design for the LacyLights system.

Fuses biometric signals into a stress score (0-100) for real-time AI adaptation. MCP + A2A native.

Control real robots and IoT devices through AI agents. Self-register with wallet authentication, pay with ETH for tier upgrades, and execute Vision-Language-Action commands. Features robot control, sensor monitoring, multi-agent coordination, and autonomous payments.

Control SO-ARM100 and LeKiwi robot arms using LLM-based AI agents.

AI-powered industrial fault diagnosis MCP server. 313 fault codes across Allen-Bradley, Siemens, ABB, Mitsubishi, Fanuc. 8 diagnostic tools for Claude Code.

An intelligent robot control middleware for natural language interaction with industrial robots, powered by LLMs. It integrates with Universal Robots and supports real-time, multi-robot control.

Institutional research and manager diligence reports on hedge funds, venture capital and private equity managers. Summary of filings, personnel changes, media screening and social signals delivered to you in minutes.

ALTER - identity infrastructure for the AI economy

Apigene MCP Gateway is the runtime layer that connects AI agents to APIs and MCP servers via Model Context Protocol.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.