Skip to main content

Control NVIDIA Isaac Sim robotics simulator through MCP -- 39 tools for scene management, robot control, sensors, and simulation

Project description

Isaac Sim MCP Server

PyPI version Python 3.10+ License: MIT MCP Quality

Natural language control for NVIDIA Isaac Sim through the Model Context Protocol (MCP).

Connect any MCP-compatible IDE (Cursor, VS Code, Claude Code, Windsurf, JetBrains) to a running Isaac Sim instance and control it with plain-English prompts -- create robots, build scenes, run simulations, and debug physics all from your editor.

Robot Party Demo


Highlights

  • 39 tools across 8 categories -- scene, objects, lighting, robots, sensors, materials, assets, simulation
  • 107+ robots auto-discovered from the Isaac Sim asset library (Franka, UR, Unitree, Boston Dynamics, and more)
  • Step-and-observe debugging -- step the simulation and inspect prim positions, joint states, and physics in one call
  • Hot-reload -- iterate on Python controllers without restarting Isaac Sim
  • Multi-instance -- run multiple Isaac Sim sessions side by side on different ports
  • Built for Isaac Sim 5.1.0 with a modular adapter layer for version isolation

Installation

Option A: pip install (recommended)

pip install isaacsim-mcp-server

This installs the MCP server and the isaacsim-mcp-server CLI. You still need the Isaac Sim extension from the repo (see Launching Isaac Sim below).

Option B: From source

git clone https://github.com/whats2000/isaacsim-mcp-server
cd isaacsim-mcp-server
./scripts/setup_python_env.sh

Requirements

Requirement Version
NVIDIA Isaac Sim 5.1.0
Python 3.10+
uv latest (for source install)

Quick Start

1. Set up the environment

If you installed from source:

./scripts/setup_python_env.sh

2. Launch Isaac Sim with the extension

./scripts/run_isaac_sim.sh

You should see in the logs:

Registered 40 command handlers
Isaac Sim MCP server started on localhost:8766
Optional: Beaver3D / NVIDIA API keys for 3D generation
export BEAVER3D_MODEL="<your beaver3d model name>"
export ARK_API_KEY="<your beaver3d api key>"
export NVIDIA_API_KEY="<your nvidia api key>"

3. Connect your IDE

Add the MCP server to your editor. Replace the path with your actual repo location.

Claude Code (CLI)
claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh

Or edit ~/.claude.json / .mcp.json:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}
VS Code

Create .vscode/mcp.json in your workspace:

{
  "servers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}
Cursor

Open Cursor Settings > MCP, or edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}
Claude Desktop

Edit the config file for your platform:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}
Windsurf

Open Windsurf Settings > MCP or edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}
JetBrains IDEs

Go to Settings > Tools > AI Assistant > MCP Servers and add the server. See the JetBrains MCP docs for details.

4. Start prompting

Check the connection with get_scene_info.
If the scene is empty, create a physics scene.
Add a Franka robot at the origin and a Go1 quadruped at [2, 0, 0].

Architecture

MCP Client (IDE)
      |
      v
isaacsim-mcp-server          (PyPI package / CLI)
      |
      v  TCP socket (localhost:8766)
      |
isaac.sim.mcp_extension      (Omniverse extension)
      |
      v
Handlers -> Adapter -> Isaac Sim 5.1.0 APIs

Tools

39 tools across 8 categories:

Category Count What you can do
Scene 7 Inspect scenes, create physics, list/load environments, browse prims
Objects 4 Create, delete, transform, and clone primitives
Lighting 2 Create and tune lights
Robots 6 Spawn 107+ robots, inspect joints, set positions, refresh library
Sensors 4 Create cameras/LiDAR, capture images, get point clouds
Materials 2 Create and apply materials
Assets 4 Import URDF, load/search USD, generate 3D models
Simulation 10 Play/pause/stop/step, execute Python, inspect physics, hot-reload
Full tool list

Scene: get_scene_info create_physics_scene clear_scene list_prims get_prim_info list_environments load_environment

Objects: create_object delete_object transform_object clone_object

Lighting: create_light modify_light

Robots: create_robot list_available_robots refresh_robot_library get_robot_info set_joint_positions get_joint_positions

Sensors: create_camera capture_image create_lidar get_lidar_point_cloud

Materials: create_material apply_material

Assets: import_urdf load_usd search_usd generate_3d

Simulation: play_simulation pause_simulation stop_simulation step_simulation set_physics_params execute_script get_simulation_state get_physics_state get_joint_config reload_script


Example Prompts

Scene bootstrap

Check the connection with get_scene_info. If the scene is empty, create a physics scene.
Add stronger lighting and place a camera that looks at the workspace.

Robot layout

Create three Franka robots in a row at [0,0,0], [2,0,0], and [4,0,0].
Then add a Go1 robot at [1, 3, 0].

Environment loading

List available environments, choose a warehouse-like one, and load it.
Create a camera and capture an image.

Asset search and 3D generation

Search for a rusty desk, load the best result near [0, 5, 0], scaled to [2, 2, 2].

Advanced Usage

Multiple Instances

Run multiple Isaac Sim sessions side by side. Each uses a different port (auto-assigned from 8766).

# First instance (default port 8766)
claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh

# Second instance (port 8767)
claude mcp add isaac-sim-2 -e ISAAC_MCP_PORT=8767 -- /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh
JSON config for multiple instances
{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    },
    "isaac-sim-2": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh",
      "env": { "ISAAC_MCP_PORT": "8767" }
    }
  }
}

Desktop Launcher (Linux)

Install a dedicated Isaac Sim MCP application icon:

./scripts/install_desktop_entry.sh

This creates a launcher that auto-assigns ports, waits for the extension socket, and cleans up on exit.

Recommended Workflow

  1. Start with get_scene_info to verify the connection
  2. Create a physics scene if the stage is empty
  3. Prefer purpose-built tools before execute_script
  4. Use list_available_robots / list_environments before loading
  5. Use step_simulation with observe_prims and observe_joints for debugging
  6. Use reload_script to iterate on controllers without restarting

Demo: Franka Pick-and-Place

A ready-to-run demo at demo/franka_pick_place.py using RMPflow for motion planning:

1. Create a physics scene, ground plane, and a Franka FR3 robot
2. Add two tables and a small cube on the first table
3. Wire the pick-and-place script into an Action Graph
4. Press Play -- the robot picks the cube and places it on the second table

Uses the observability tools: get_joint_config, step_simulation with observe_prims, get_physics_state, and reload_script.


Development

# Run the MCP inspector
./.venv/bin/python -m mcp dev ./isaac_mcp/server.py

The inspector is available at http://localhost:5173.

Setup Notes

Script Purpose Default
setup_python_env.sh Create venv and install package Python 3.10
run_isaac_sim.sh Launch Isaac Sim with extension $HOME/isaacsim
run_mcp_server.sh Start the MCP server Port 8766
launch_isaac_sim_mcp.sh Combined launcher Auto-assigns port
dev_mcp_server.sh Dev server with hot-reload Port 8766

Override defaults:

PYTHON_SPEC=3.11 ./scripts/setup_python_env.sh
ISAACSIM_ROOT=/opt/isaacsim ./scripts/run_isaac_sim.sh
Troubleshooting

If Isaac Sim says Can't find extension with name: isaac.sim.mcp_extension:

# Make sure you're in the repo root
pwd
test -f ./isaac.sim.mcp_extension/config/extension.toml && echo OK

Note: --ext-folder must point to the repo root, not to isaac.sim.mcp_extension/ directly.


Contributing

Pull requests are welcome. Improvements to tools, docs, adapters, and tests are all useful.

License

MIT License. Copyright (c) 2023-2025 omni-mcp, Copyright (c) 2026 whats2000. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

isaacsim_mcp_server-0.4.1.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isaacsim_mcp_server-0.4.1-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file isaacsim_mcp_server-0.4.1.tar.gz.

File metadata

  • Download URL: isaacsim_mcp_server-0.4.1.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for isaacsim_mcp_server-0.4.1.tar.gz
Algorithm Hash digest
SHA256 3ba422d62f1d1ee8104203a281ff64861af597312ea252d14c11121cb4b482cd
MD5 21e7d9e1f3d9bb545668f8f07821ddee
BLAKE2b-256 f5e3b028c452333b5f0362a69ac97f7078324fe9f36bf21d7dcc03555e583e98

See more details on using hashes here.

Provenance

The following attestation bundles were made for isaacsim_mcp_server-0.4.1.tar.gz:

Publisher: release.yml on whats2000/isaacsim-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file isaacsim_mcp_server-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for isaacsim_mcp_server-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b79ad4f864896da89a2aaf19bbce40d66c8031e1ed6155fbec54905566815d95
MD5 9d35ce19d1cead4efa08b70d6faa16c9
BLAKE2b-256 6aa7eae42a8c6088741608bbd8f03fe651208b5014ef20728c757adbd7f7984e

See more details on using hashes here.

Provenance

The following attestation bundles were made for isaacsim_mcp_server-0.4.1-py3-none-any.whl:

Publisher: release.yml on whats2000/isaacsim-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page