mcpField
A
AI Rover Studio

AI Rover Studio

Local
ai-rover.appScience & Education0Updated 1w ago

About AI Rover Studio

AI Rover Studio is a browser-based 2D robot simulator with an MCP server for AI agents to observe and control a rover, configure its body, and run programs. It can also show wiring for ESP32, Arduino Uno, or Raspberry Pi; simulation actions do not control real hardware.

Key features

  1. 01Read pose, velocity, and sensor data
  2. 02Drive, turn, and control autopilot
  3. 03Configure sensors, modules, and displays
  4. 04Run and inspect JavaScript programs
  5. 05Capture camera images and sensor maps
  6. 06Get wiring, firmware, and parts lists

Use cases

  1. 01Test rover movement and obstacle avoidance in simulation
  2. 02Configure sensors and inspect their readings
  3. 03Review wiring and firmware for ESP32 and other boards
  4. 04Identify parts for the simulated rover body

MCP support

The MCP server receives client calls over stdio and connects to the simulator page in a browser through a local WebSocket, providing observation, control, and configuration tools.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"taewankung-ai-rover": {
"command": "npx",
"args": [
"-y",
"ai-rover-mcp"
],
"env": {
"ROVER_SIMULATOR_URL": "<ROVER_SIMULATOR_URL>",
"ROVER_BRIDGE_PORT": "<ROVER_BRIDGE_PORT>",
"ROVER_ALLOWED_ORIGINS": "<ROVER_ALLOWED_ORIGINS>"
}
}
}
}
Run commandnpx -y ai-rover-mcp
Environment variables to set
ROVER_SIMULATOR_URLSimulator page that open_simulator opens: a URL or a path to a local build. Default: https://ai-rover.app/app/?mcp=on
ROVER_BRIDGE_PORTLocal WebSocket port the simulator page connects to. Default: 8765
ROVER_ALLOWED_ORIGINSExtra comma-separated https origins the bridge accepts

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmai-rover-mcp1.1.2

Tools

41

Saved tool list · updated 1w ago

This tool takes no parameters.

Details

From the project README

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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.