Isaacsim Mcp Server

io.github.whats2000Published by GitHub account whats2000v0.6.1Updated Oct 24, 2026

Control NVIDIA Isaac Sim robotics simulator through MCP with 42 tools

VerifiedSTDIODesktop onlyDeveloper ToolsMedia & DesignAI & ML

Overview

AI-generated overview

Controls a running NVIDIA Isaac Sim robotics simulator from an MCP-capable editor, creating scenes, robots, sensors, and running simulations.

What you can do
Exposes 42 tools across nine categories: scene inspection and physics setup, object creation and transforms, lighting, robot spawning from a library of 107+ robots, cameras and LiDAR sensors, materials, USD and URDF asset loading, Action Graphs, and simulation control. Simulation tools include play, pause, stop, step, physics parameter changes, log retrieval, and Python script execution with hot-reload. It talks to an Isaac Sim extension over a local TCP socket.
When to use it
Use it when you work with NVIDIA Isaac Sim and want to build or debug robotic scenes, spawn robots, capture sensor data, or iterate on controller scripts from your editor instead of the Isaac Sim GUI. It suits robotics simulation and research workflows on Linux or Windows.
Requirements
A local install of NVIDIA Isaac Sim 5.1.0 to 6.0.1 (PhysX or Newton), Python 3.10+, and Linux (Ubuntu 22.04+) or Windows 10/11; macOS is not supported. The PyPI package is installed with pip, and the Isaac Sim extension from the repository must also be launched. Optional 3D generation uses the BEAVER3D_MODEL, ARK_API_KEY, and NVIDIA_API_KEY environment variables. Multiple instances use ISAAC_MCP_PORT.
Before you install
The execute_script and reload_script tools run arbitrary Python inside Isaac Sim, and scene tools create, delete, and modify simulation content, so prompts can change or remove work in the running session. Optional 3D generation sends requests to external services using ARK_API_KEY and NVIDIA_API_KEY. Known defects affect some versions: Newton joint drives do not converge, an RTX camera cannot be removed, and LiDAR point clouds may need retries.

Installation

In SourceWeft

  1. Open Isaacsim Mcp Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Isaac Sim MCP Server

[PyPI version] [Isaac Sim 5.1.0 - 6.0.1] [Python 3.10+] [License: MIT] [MCP Quality] [isaacsim-mcp-server MCP server]

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

Connect any MCP-compatible IDE (Cursor, VS Code, Claude Code, Windsurf, Antigravity, 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 Simulate Demo]


Highlights

  • 43 tools across 9 categories -- scene, objects, lighting, robots, sensors, materials, assets, simulation, graphs
  • 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 - 6.0.1 (PhysX + Newton) with a modular adapter layer for version isolation

Installation

Option A: pip install (recommended)

bash
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

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

Requirements

RequirementVersion
NVIDIA Isaac Sim5.1.0 - 6.0.1 (PhysX or Newton)
Python3.10+
uvlatest (for source install)
PlatformLinux (Ubuntu 22.04+) or Windows 10/11

[!IMPORTANT] Linux and Windows are supported. On Windows, use the PowerShell launcher scripts/run_isaac_sim.ps1 in place of the .sh scripts (see below). macOS is not supported because NVIDIA Isaac Sim does not run on macOS.

[!NOTE] We are welcoming contributions to support other Isaac Sim versions. The adapter layer is designed for easy version isolation.


Quick Start

1. Set up the environment

If you installed from source:

bash
./scripts/setup_python_env.sh

On Windows, uv sync creates the virtual environment (.venv) and installs the package plus its dependencies:

powershell
uv sync

2. Launch Isaac Sim with the extension

bash
./scripts/run_isaac_sim.sh

You should see in the logs:

Registered 43 command handlersIsaac Sim MCP server started on localhost:8766

The script looks for Isaac Sim in $HOME/isaacsim; set ISAACSIM_ROOT to use a different install.

Choosing the physics engine. Isaac Sim 6.0+ ships PhysX (default) and Newton backends. Select one with --newton / --physx, or ISAACSIM_ENGINE:

bash
./scripts/run_isaac_sim.sh                  # PhysX (default)./scripts/run_isaac_sim.sh --newton         # NewtonISAACSIM_ENGINE=newton ./scripts/run_isaac_sim.sh

The same flags work with scripts/launch_isaac_sim_mcp.sh. Everything else on the command line is forwarded to Kit untouched. The server auto-detects the active engine, so no MCP-side configuration changes. Newton requires 6.0 or newer; asking for it on 5.1.0 fails with a clear message.

On Windows, use the PowerShell launcher instead. It takes the same engine selection and forwards extra arguments to Kit:

powershell
.\scripts\run_isaac_sim.ps1                          # PhysX (default).\scripts\run_isaac_sim.ps1 -Engine newton           # Newton$env:ISAACSIM_ENGINE = 'newton'; .\scripts\run_isaac_sim.ps1

The script resolves the install from -IsaacSimRoot, then $env:ISAACSIM_ROOT, then a local source build, then C:\isaacsim, then %USERPROFILE%\isaacsim. It also creates a writable USD working directory (.cache\usd) since Windows has no /tmp.

Optional: Beaver3D / NVIDIA API keys for 3D generation
bash
export BEAVER3D_MODEL="<your beaver3d model name>"export ARK_API_KEY="<your beaver3d api key>"export NVIDIA_API_KEY="<your nvidia api key>"

On Windows (PowerShell):

powershell
$env:BEAVER3D_MODEL = "<your beaver3d model name>"$env:ARK_API_KEY = "<your beaver3d api key>"$env: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. The command examples are for Linux/macOS; each guide shows the Windows equivalent, which wraps the PowerShell launcher scripts\run_mcp_server.ps1.

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

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

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

On Windows, wrap the PowerShell launcher:

bash
claude mcp add isaac-sim -- powershell -NoProfile -ExecutionPolicy Bypass -File C:\path\to\isaacsim-mcp-server\scripts\run_mcp_server.ps1
json
{  "mcpServers": {    "isaac-sim": {      "command": "powershell",      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]    }  }}
VS Code

Create .vscode/mcp.json in your workspace:

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

On Windows, wrap the PowerShell launcher:

json
{  "servers": {    "isaac-sim": {      "command": "powershell",      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]    }  }}
Cursor

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

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

On Windows, wrap the PowerShell launcher:

json
{  "mcpServers": {    "isaac-sim": {      "command": "powershell",      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]    }  }}
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
json
{  "mcpServers": {    "isaac-sim": {      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"    }  }}

On Windows, wrap the PowerShell launcher:

json
{  "mcpServers": {    "isaac-sim": {      "command": "powershell",      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]    }  }}
Windsurf

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

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

On Windows, wrap the PowerShell launcher:

json
{  "mcpServers": {    "isaac-sim": {      "command": "powershell",      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]    }  }}
Antigravity

Open the agent side panel, click … > MCP Servers > Manage MCP Servers > View raw config, or edit ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (workspace):

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

On Windows, wrap the PowerShell launcher:

json
{  "mcpServers": {    "isaac-sim": {      "command": "powershell",      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]    }  }}
JetBrains IDEs

Go to Settings > Tools > AI Assistant > MCP Servers and add the server, with the command /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh. See the JetBrains MCP docs for details.

On Windows, set the command to powershell and the arguments to -NoProfile -ExecutionPolicy Bypass -File C:\path\to\isaacsim-mcp-server\scripts\run_mcp_server.ps1.

4. Start prompting

text
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

text
MCP Client (IDE)      |      visaacsim-mcp-server          (PyPI package / CLI)      |      v  TCP socket (localhost:8766)      |isaac.sim.mcp_extension      (Omniverse extension)      |      vHandlers -> Adapter -> Isaac Sim 5.1 / 6.0 APIs

Tools

43 tools across 9 categories:

CategoryCountWhat you can do
Scene7Inspect scenes, create physics, list/load environments, browse prims
Objects4Create, delete, transform, and clone primitives
Lighting2Create and tune lights
Robots6Spawn 107+ robots, inspect joints, set positions, refresh library
Sensors4Create cameras/LiDAR, capture images, get point clouds
Materials2Create and apply materials
Assets4Import URDF, load/search USD, generate 3D models
Graphs2Build and edit Action Graphs (OnPlaybackTick, ScriptNode, script file attachment)
Simulation11Play/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

Graphs: create_action_graph edit_action_graph

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


Known Limitations

Open defects a normal session can hit. Each is warned about at the point of use where that is possible; this list is for choosing a runtime before you start.

AffectsWhat happensIssue
6.0 NewtonJoint drives do not converge — a commanded target is overshot and the joint keeps going, and joint limits are not enforced. Scene setup, stepping and inspection are fine; run motion work on PhysX (isaac-sim.sh).#21
6.0The first RTX camera created in a session cannot be removed. create_camera warns once when it hands you that camera.#20
5.1get_lidar_point_cloud fills on roughly a third of reads, so a caller must retry. A lidar created while the timeline is running never fills at all — create it stopped.#31
5.1An RTX lidar prim cannot be deleted; the prim is left behind as a Camera. create_lidar refuses such a path and names a free one.#25

Example Prompts

Scene bootstrap

text
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

text
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

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

Asset search and 3D generation

text
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).

bash
# 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
json
{  "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:

bash
./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 create_action_graph to wire OnPlaybackTick → ScriptNode controllers
  6. Use step_simulation with observe_prims and observe_joints for debugging
  7. 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:

text
Please use the Isaac MCP tool complete this:
Create a physics scene with a ground plane, then spawn a Franka FR3 robot at the origin.
Add two textured tables with a gap along Y. Place a small textured cube with physics enabled on top of the first table.
Use `create_action_graph` to wire `OnPlaybackTick` → `ScriptNode`, and write a pick-and-place controller script using RMPflow for motion planning. Save the script to the `demo/` directory.
Use `get_prim_info` to query actual positions and sizes of the tables and cube before writing the controller — do not hardcode coordinates.
Start the simulation with Play. The robot should pick the cube from table 1 and place it on table 2. Verify the process using `step_simulation` with `observe_prims` on the cube to confirm it reaches table 2.

Uses create_action_graph with script_file for one-step Action Graph + ScriptNode setup, plus the observability tools: get_joint_config, step_simulation with observe_prims, get_physics_state, and edit_action_graph for script hot-reload.


Development

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

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

Setup Notes

ScriptPurposeDefault
setup_python_env.shCreate venv and install packagePython 3.10
run_isaac_sim.shLaunch Isaac Sim with extension (Linux)$HOME/isaacsim
run_isaac_sim.ps1Launch Isaac Sim with extension (Windows)C:\isaacsim
run_mcp_server.shStart the MCP server (Linux)Port 8766
run_mcp_server.ps1Start the MCP server (Windows)Port 8766
launch_isaac_sim_mcp.shCombined launcherAuto-assigns port
dev_mcp_server.shDev server with hot-reloadPort 8766

Override defaults:

bash
PYTHON_SPEC=3.11 ./scripts/setup_python_env.shISAACSIM_ROOT=/opt/isaacsim ./scripts/run_isaac_sim.shISAACSIM_ENGINE=newton ./scripts/run_isaac_sim.sh

Engine selection lives in scripts/lib/isaac_launcher.sh: each engine maps to the launcher script Isaac Sim ships for it. Adding an entry to that map is all a new backend needs — it enables both ISAACSIM_ENGINE=<name> and --<name> in every launcher script.

Troubleshooting

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

bash
# Make sure you're in the repo rootpwdtest -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.

Source: README.md at commit 9d166f7

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.6.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts