AI Rover Studio

Official registry Developer tools

Let an AI agent drive a 2D robot rover simulator in the browser: sensors, camera, wiring and code.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package ai-rover-mcp
Claude Code
claude mcp add ai-rover-studio -e 'ROVER_SIMULATOR_URL=<ROVER_SIMULATOR_URL>' -e 'ROVER_BRIDGE_PORT=<ROVER_BRIDGE_PORT>' -e 'ROVER_ALLOWED_ORIGINS=<ROVER_ALLOWED_ORIGINS>' -- npx -y ai-rover-mcp@1.1.2
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "ai-rover-studio": {
            "command": "npx",
            "args": [
                "-y",
                "ai-rover-mcp@1.1.2"
            ],
            "env": {
                "ROVER_SIMULATOR_URL": "<ROVER_SIMULATOR_URL>",
                "ROVER_BRIDGE_PORT": "<ROVER_BRIDGE_PORT>",
                "ROVER_ALLOWED_ORIGINS": "<ROVER_ALLOWED_ORIGINS>"
            }
        }
    }
}

Environment variables

  • ROVER_SIMULATOR_URL Simulator page that open_simulator opens: a URL or a path to a local build. Default: https://ai-rover.app/app/?mcp=on
  • ROVER_BRIDGE_PORT Local WebSocket port the simulator page connects to. Default: 8765
  • ROVER_ALLOWED_ORIGINS Extra comma-separated https origins the bridge accepts

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. ai-rover-mcp
  2. Setup
  3. Opening the simulator yourself
  4. Tools
  5. Configuration
  6. Security
  7. License

ai-rover-mcp

MCP server for AI Rover Studio, a 2D robot simulator that runs in the browser. It lets an AI agent (Claude Code, Claude Desktop or any MCP client) observe and drive the rover, change its body, run programs and read the real wiring for an ESP32 / Arduino Uno / Raspberry Pi. Simulation only: nothing is sent to hardware.

MCP client ──stdio──▶ ai-rover-mcp ──WebSocket 127.0.0.1:8765──▶ simulator page in your browser

The page must be open in a browser and the tab must stay visible, because browsers pause animation frames in background tabs, so the simulation stops there. The badge in the page header shows MCP ● connected while the bridge is up.

Setup

Needs Node.js 18 or newer.

Claude Code
claude mcp add ai-rover -- npx -y ai-rover-mcp

Then ask Claude to "open the rover simulator". open_simulator opens the hosted simulator with ?mcp=on, which tells the page to connect to this server.

Claude Desktop / other clients
{
  "mcpServers": {
    "ai-rover": {
      "command": "npx",
      "args": ["-y", "ai-rover-mcp"]
    }
  }
}
From a clone
npm install
claude mcp add ai-rover -- node /path/to/ai-rover-mcp/server.js

Opening the simulator yourself

Open https://ai-rover.app/app/?mcp=on. Without ?mcp=on the hosted page does not try to reach a local MCP server; you can also press เชื่อมต่อ MCP on its Agent / MCP page. A copy opened from disk (file://) or from localhost connects on its own.

Tools

ToolWhat it does
open_simulatorOpens the simulator (hosted, or ROVER_SIMULATOR_URL) in the default browser and waits for it to connect
connection_statusWhether the page is connected
get_observationPose, velocity, sensor readings, face state and simulation status
read_sensorsFresh readings from the enabled sensors, with mounting info and units
driveforward / backward / left / right for 0.2–10 s; waits by default and returns the new observation
turnTurn on the spot by an exact angle
stopEmergency stop: cancels movement, turns autopilot off, pauses
set_simulationStart or pause the simulation
set_autopilotRule-based autopilot (seek light, avoid obstacles) on or off
set_powerMotor power, 10–100 %
set_head / get_headHead pan servo: turn to an angle, or track the light
press_button / get_button_eventsPress a push button on the rover / read presses made by a person
run_program / stop_program / get_programRun JavaScript that uses the rover library in the page, stop it, read its status and console
set_emotionFace expression on the display, with a message in the top line
display_textThe rover "says" a text: small face + speech bubble on the Face Display (Thai supported)
set_displayFit a display module: ssd1306 (128×64 mono OLED), ssd1331 (96×64 colour OLED) or st7789 (240×240 colour TFT)
draw_displayShow a picture on the Face Display from rows of characters
read_displayWhat the display shows: mode, stats and pixels as ASCII art
move_lightMove the light source
reset_worldRover and light back to their start positions
send_chatSend text to the in-page Agent Chat parser and get its reply
get_manifestRobot Capability Manifest (ai-cartridge/body-v1)
list_sensors / add_sensor / update_sensor / remove_sensorConfigure the sensors on the robot body
set_moduleFit or remove wheels, head, display or camera
capture_cameraPicture from the rover's forward camera (PNG image) plus detections with bearing and distance
get_sensor_mapMap the rover built from its own sensors: occupancy grid, floor colors, camera landmarks, bump points
get_wiringCircuit for the fitted body on esp32, uno or raspberrypi: every pin, power budget, wiring issues, pins.h / pins.py
get_firmwareComplete firmware for the fitted body: Arduino .ino or Raspberry Pi rover.py
get_bomParts list to build the fitted body for real, with quantities, approximate prices and shop links
list_worldWorld layout: light, obstacles, colored floor tape
add_obstacle / remove_obstaclePlace test objects: cylinder, ball, box or wall, with size and color
add_color_tape / remove_color_tapeColored floor tape for the color sensor, line following and the camera

Example prompts: "Open the rover simulator and drive it to the light without using the autopilot", "Add an IR sensor on each side angled ±45° and tell me the readings", "What parts do I need to build this rover on an ESP32?"

Configuration

  • ROVER_BRIDGE_PORT (default 8765). If you change it, the page needs ?mcpPort=<port> (open_simulator adds this for you).
  • ROVER_SIMULATOR_URL: the page open_simulator opens instead of the hosted one. A URL (http://localhost:5173 while developing) or a path to a local build (dist/index.html, relative to the working directory).
  • ROVER_ALLOWED_ORIGINS: extra comma-separated https:// origins the bridge accepts (for a self-hosted copy of the simulator).
  • On the page: ?mcp=on connects to the server, ?mcp=off never does.

Security

The WebSocket listens on 127.0.0.1 only. It accepts connections only from the page opened from disk (file://), from localhost, from the hosted simulator, or from the origin of ROVER_SIMULATOR_URL / ROVER_ALLOWED_ORIGINS, so other websites open in the same browser cannot pose as the rover. The page only runs the fixed set of methods listed above; it never evaluates code it receives from the server, except the program you send with run_program, which runs in a Web Worker.

License

MIT

Frequently asked questions

What is AI Rover Studio?

Let an AI agent drive a 2D robot rover simulator in the browser: sensors, camera, wiring and code.

How do I install AI Rover Studio?

It runs on your machine. In Claude Code: claude mcp add ai-rover-studio -e 'ROVER_SIMULATOR_URL=<ROVER_SIMULATOR_URL>' -e 'ROVER_BRIDGE_PORT=<ROVER_BRIDGE_PORT>' -e 'ROVER_ALLOWED_ORIGINS=<ROVER_ALLOWED_ORIGINS>' -- npx -y ai-rover-mcp@1.1.2. For other clients, paste the JSON configuration from this page into their MCP settings.

Does AI Rover Studio need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is AI Rover Studio open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains AI Rover Studio?

It is published by taewankung. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.