Isaac Sim MCP Server

Conecta cualquier IDE compatible con MCP (Cursor, VS Code, Claude Code, Windsurf, JetBrains) a una instancia en ejecución de Isaac Sim y contrólala con comandos en lenguaje natural: crea robots, construye escenas, ejecuta simulaciones y depura física todo desde tu editor.

Documentación

Servidor MCP de Isaac Sim

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

Control por lenguaje natural para NVIDIA Isaac Sim a través del Model Context Protocol (MCP).

Conecta cualquier IDE compatible con MCP (Cursor, VS Code, Claude Code, Windsurf, Antigravity, JetBrains) a una instancia de Isaac Sim en ejecución y contrólala con instrucciones en inglés sencillo: crea robots, construye escenas, ejecuta simulaciones y depura física, todo desde tu editor.

Robot Simulate Demo


Características destacadas

  • 42 herramientas en 9 categorías: escena, objetos, iluminación, robots, sensores, materiales, activos, simulación, gráficos
  • Más de 107 robots descubiertos automáticamente desde la biblioteca de activos de Isaac Sim (Franka, UR, Unitree, Boston Dynamics y más)
  • Depuración paso a paso y observación: avanza la simulación e inspecciona posiciones de prims, estados de articulaciones y física en una sola llamada
  • Recarga en caliente: itera sobre controladores Python sin reiniciar Isaac Sim
  • Multi-instancia: ejecuta múltiples sesiones de Isaac Sim en paralelo en diferentes puertos
  • Diseñado para Isaac Sim 5.1.0 - 6.0.1 (PhysX + Newton) con una capa de adaptadores modular para aislamiento de versiones

Instalación

Opción A: instalación con pip (recomendada)

pip install isaacsim-mcp-server

Esto instala el servidor MCP y la CLI isaacsim-mcp-server. Aún necesitas la extensión de Isaac Sim del repositorio (consulta Iniciar Isaac Sim más abajo).

Opción B: desde el código fuente

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

Requisitos

RequisitoVersión
NVIDIA Isaac Sim5.1.0 - 6.0.1 (PhysX o Newton)
Python3.10+
uvúltima versión (para instalación desde el código fuente)
PlataformaLinux (Ubuntu 22.04+) o Windows 10/11

[!IMPORTANTE] Linux y Windows son compatibles. En Windows, usa el lanzador de PowerShell scripts/run_isaac_sim.ps1 en lugar de los scripts .sh (consulta más abajo). macOS no es compatible porque NVIDIA Isaac Sim no se ejecuta en macOS.

[!NOTA] Agradecemos contribuciones para admitir otras versiones de Isaac Sim. La capa de adaptadores está diseñada para un aislamiento sencillo de versiones.


Inicio rápido

1. Configura el entorno

Si instalaste desde el código fuente:

./scripts/setup_python_env.sh

En Windows, uv sync crea el entorno virtual (.venv) e instala el paquete junto con sus dependencias:

uv sync

2. Inicia Isaac Sim con la extensión

./scripts/run_isaac_sim.sh

Deberías ver en los registros:

Registered 42 command handlers
Isaac Sim MCP server started on localhost:8766

El script busca Isaac Sim en $HOME/isaacsim; establece ISAACSIM_ROOT para usar una instalación diferente.

Elección del motor de física. Isaac Sim 6.0+ incluye los motores PhysX (predeterminado) y Newton. Selecciona uno con --newton / --physx, o ISAACSIM_ENGINE:

./scripts/run_isaac_sim.sh                  # PhysX (default)
./scripts/run_isaac_sim.sh --newton         # Newton
ISAACSIM_ENGINE=newton ./scripts/run_isaac_sim.sh

Las mismas opciones funcionan con scripts/launch_isaac_sim_mcp.sh. Todo lo demás en la línea de comandos se reenvía a Kit sin cambios. El servidor detecta automáticamente el motor activo, por lo que no se requieren cambios de configuración en el lado de MCP. Newton requiere 6.0 o posterior; solicitarlo en 5.1.0 falla con un mensaje claro.

En Windows, usa el lanzador de PowerShell en su lugar. Acepta la misma selección de motor y reenvía argumentos adicionales a Kit:

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

El script resuelve la instalación desde -IsaacSimRoot, luego $env:ISAACSIM_ROOT, luego una compilación local del código fuente, luego C:\isaacsim, luego %USERPROFILE%\isaacsim. También crea un directorio de trabajo USD escribible (.cache\usd) ya que Windows no tiene /tmp.

Opcional: claves de API de Beaver3D / NVIDIA para generación 3D
export BEAVER3D_MODEL="<your beaver3d model name>"
export ARK_API_KEY="<your beaver3d api key>"
export NVIDIA_API_KEY="<your nvidia api key>"

En Windows (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. Conecta tu IDE

Agrega el servidor MCP a tu editor. Reemplaza la ruta con la ubicación real de tu repositorio. Los ejemplos de command son para Linux/macOS; cada guía muestra el equivalente Windows, que envuelve el lanzador de PowerShell scripts\run_mcp_server.ps1.

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

O edita ~/.claude.json / .mcp.json:

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

En Windows, envuelve el lanzador de PowerShell:

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

Crea .vscode/mcp.json en tu espacio de trabajo:

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

En Windows, envuelve el lanzador de PowerShell:

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

Abre Cursor Settings > MCP, o edita ~/.cursor/mcp.json:

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

En Windows, envuelve el lanzador de PowerShell:

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

Edita el archivo de configuración para tu plataforma:

  • 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"
    }
  }
}

En Windows, envuelve el lanzador de PowerShell:

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

Abre Windsurf Settings > MCP o edita ~/.codeium/windsurf/mcp_config.json:

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

En Windows, envuelve el lanzador de PowerShell:

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

Abre el panel lateral del agente, haz clic en … > MCP Servers > Manage MCP Servers > View raw config, o edita ~/.gemini/config/mcp_config.json (global) o .agents/mcp_config.json (espacio de trabajo):

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

En Windows, envuelve el lanzador de PowerShell:

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

Ve a Settings > Tools > AI Assistant > MCP Servers y agrega el servidor, con el comando /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh. Consulta la documentación de MCP de JetBrains para más detalles.

En Windows, establece el comando como powershell y los argumentos como -NoProfile -ExecutionPolicy Bypass -File C:\path\to\isaacsim-mcp-server\scripts\run_mcp_server.ps1.

4. Comienza a dar instrucciones

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].

Arquitectura

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 / 6.0 APIs

Herramientas

42 herramientas en 9 categorías:

CategoríaCantidadQué puedes hacer
Escena7Inspeccionar escenas, crear física, listar/cargar entornos, explorar prims
Objetos4Crear, eliminar, transformar y clonar primitivas
Iluminación2Crear y ajustar luces
Robots6Generar más de 107 robots, inspeccionar articulaciones, establecer posiciones, actualizar biblioteca
Sensores4Crear cámaras/LiDAR, capturar imágenes, obtener nubes de puntos
Materiales2Crear y aplicar materiales
Activos4Importar URDF, cargar/buscar USD, generar modelos 3D
Gráficos2Construir y editar Action Graphs (OnPlaybackTick, ScriptNode, adjuntar archivos de script)
Simulación11Reproducir/pausar/detener/avanzar, ejecutar Python, inspeccionar física, recarga en caliente
Lista completa de herramientas

Escena: get_scene_info create_physics_scene clear_scene list_prims get_prim_info list_environments load_environment

Objetos: create_object delete_object transform_object clone_object

Iluminación: create_light modify_light

Robots: create_robot list_available_robots refresh_robot_library get_robot_info set_joint_positions get_joint_positions

Sensores: create_camera capture_image create_lidar get_lidar_point_cloud

Materiales: create_material apply_material

Activos: import_urdf load_usd search_usd generate_3d

Gráficos: create_action_graph edit_action_graph

Simulación: play_simulation pause_simulation stop_simulation step_simulation set_physics_params get_isaac_logs get_simulation_state get_physics_state get_joint_config execute_script reload_script


Limitaciones conocidas

Defectos abiertos que una sesión normal puede encontrar. Cada uno se advierte en el punto de uso cuando es posible; esta lista es para elegir un entorno de ejecución antes de comenzar.

AfectaQué sucedeProblema
6.0 NewtonLos accionamientos de articulaciones no convergen: se supera un objetivo comandado y la articulación continúa, y los límites de articulación no se aplican. La configuración de escena, el avance y la inspección funcionan bien; ejecuta trabajo de movimiento en PhysX (isaac-sim.sh).#21
6.0La primera cámara RTX creada en una sesión no se puede eliminar. create_camera advierte una vez cuando te entrega esa cámara.#20
5.1get_lidar_point_cloud se llena aproximadamente en un tercio de las lecturas, por lo que el llamador debe reintentar. Un lidar creado mientras la línea de tiempo está en ejecución nunca se llena: créalo detenido.#31
5.1Un prim de lidar RTX no se puede eliminar; el prim queda como un Camera. create_lidar rechaza esa ruta y nombra una libre.#25

Ejemplos de instrucciones

Inicialización de escena

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.

Disposición de robots

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].

Carga de entornos

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

Búsqueda de activos y generación 3D

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

Uso avanzado

Múltiples instancias

Ejecuta múltiples sesiones de Isaac Sim en paralelo. Cada una usa un puerto diferente (asignado automáticamente desde 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
Configuración JSON para múltiples instancias
{
  "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" }
    }
  }
}

Lanzador de escritorio (Linux)

Instala un icono de aplicación dedicado Isaac Sim MCP:

./scripts/install_desktop_entry.sh

Esto crea un lanzador que asigna puertos automáticamente, espera el socket de la extensión y limpia al salir.

Flujo de trabajo recomendado

  1. Comienza con get_scene_info para verificar la conexión
  2. Crea una escena de física si el escenario está vacío
  3. Prefiere herramientas específicas antes de execute_script
  4. Usa list_available_robots / list_environments antes de cargar
  5. Usa create_action_graph para conectar controladores OnPlaybackTick → ScriptNode
  6. Usa step_simulation con observe_prims y observe_joints para depurar
  7. Usa reload_script para iterar sobre controladores sin reiniciar

Demo: Franka Pick-and-Place

Una demo lista para ejecutar en demo/franka_pick_place.py que usa RMPflow para planificación de movimiento:

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.

Usa create_action_graph con script_file para la configuración de Action Graph + ScriptNode en un solo paso, además de las herramientas de observabilidad: get_joint_config, step_simulation con observe_prims, get_physics_state y edit_action_graph para recarga en caliente de scripts.


Desarrollo

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

El inspector está disponible en http://localhost:5173.

Notas de configuración

ScriptPropósitoPredeterminado
setup_python_env.shCrear venv e instalar el paquetePython 3.10
run_isaac_sim.shIniciar Isaac Sim con la extensión (Linux)$HOME/isaacsim
run_isaac_sim.ps1Iniciar Isaac Sim con la extensión (Windows)C:\isaacsim
run_mcp_server.shIniciar el servidor MCP (Linux)Puerto 8766
run_mcp_server.ps1Iniciar el servidor MCP (Windows)Puerto 8766
launch_isaac_sim_mcp.shLanzador combinadoAsigna puerto automáticamente
dev_mcp_server.shServidor de desarrollo con recarga en calientePuerto 8766

Anula los valores predeterminados:

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

La selección de motor reside en scripts/lib/isaac_launcher.sh: cada motor se asigna al script de lanzamiento que Isaac Sim incluye para él. Agregar una entrada a ese mapa es todo lo que necesita un nuevo backend: habilita tanto ISAACSIM_ENGINE=<name> como --<name> en cada script de lanzamiento.

Solución de problemas

Si Isaac Sim dice 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

Nota: --ext-folder debe apuntar a la raíz del repositorio, no a isaac.sim.mcp_extension/ directamente.


Contribuciones

Las solicitudes de extracción son bienvenidas. Las mejoras a herramientas, documentación, adaptadores y pruebas son todas útiles.

Licencia

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