Isaac Sim MCP Server
Conecte qualquer IDE compatível com MCP (Cursor, VS Code, Claude Code, Windsurf, JetBrains) a uma instância em execução do Isaac Sim e controle-a com comandos em inglês simples — crie robôs, monte cenas, execute simulações e depure física diretamente do seu editor.
Documentação
Isaac Sim MCP Server
Controle por linguagem natural para NVIDIA Isaac Sim através do Model Context Protocol (MCP).
Conecte qualquer IDE compatível com MCP (Cursor, VS Code, Claude Code, Windsurf, Antigravity, JetBrains) a uma instância do Isaac Sim em execução e controle-a com comandos em inglês simples — crie robôs, monte cenas, execute simulações e depure física diretamente do seu editor.

Destaques
- 42 ferramentas em 9 categorias — cena, objetos, iluminação, robôs, sensores, materiais, assets, simulação, gráficos
- 107+ robôs descobertos automaticamente da biblioteca de assets do Isaac Sim (Franka, UR, Unitree, Boston Dynamics e outros)
- Depuração passo-a-passo — avance a simulação e inspecione posições de prims, estados de juntas e física em uma única chamada
- Hot-reload — itere em controladores Python sem reiniciar o Isaac Sim
- Multi-instância — execute várias sessões do Isaac Sim lado a lado em portas diferentes
- Desenvolvido para Isaac Sim 5.1.0 - 6.0.1 (PhysX + Newton) com uma camada de adaptadores modular para isolamento de versões
Instalação
Opção A: pip install (recomendado)
pip install isaacsim-mcp-server
Isso instala o servidor MCP e a CLI isaacsim-mcp-server. Você ainda precisa da extensão do Isaac Sim do repositório (veja Iniciando o Isaac Sim abaixo).
Opção B: A partir do código-fonte
git clone https://github.com/whats2000/isaacsim-mcp-server
cd isaacsim-mcp-server
./scripts/setup_python_env.sh
Requisitos
| Requisito | Versão |
|---|---|
| NVIDIA Isaac Sim | 5.1.0 - 6.0.1 (PhysX ou Newton) |
| Python | 3.10+ |
uv | mais recente (para instalação a partir do código-fonte) |
| Plataforma | Linux (Ubuntu 22.04+) ou Windows 10/11 |
[!IMPORTANT] Linux e Windows são suportados. No Windows, use o lançador do PowerShell
scripts/run_isaac_sim.ps1no lugar dos scripts.sh(veja abaixo). macOS não é suportado porque o NVIDIA Isaac Sim não roda em macOS.
[!NOTE] Agradecemos contribuições para suportar outras versões do Isaac Sim. A camada de adaptadores foi projetada para facilitar o isolamento de versões.
Início Rápido
1. Configure o ambiente
Se você instalou a partir do código-fonte:
./scripts/setup_python_env.sh
No Windows, uv sync cria o ambiente virtual (.venv) e instala
o pacote e suas dependências:
uv sync
2. Inicie o Isaac Sim com a extensão
./scripts/run_isaac_sim.sh
Você deve ver nos logs:
Registered 42 command handlers
Isaac Sim MCP server started on localhost:8766
O script procura o Isaac Sim em $HOME/isaacsim; defina ISAACSIM_ROOT para usar uma
instalação diferente.
Escolhendo o motor de física. O Isaac Sim 6.0+ inclui os backends PhysX (padrão) e Newton.
Selecione um com --newton / --physx, ou ISAACSIM_ENGINE:
./scripts/run_isaac_sim.sh # PhysX (default)
./scripts/run_isaac_sim.sh --newton # Newton
ISAACSIM_ENGINE=newton ./scripts/run_isaac_sim.sh
Os mesmos flags funcionam com scripts/launch_isaac_sim_mcp.sh. Todo o resto na
linha de comando é encaminhado ao Kit sem alterações. O servidor detecta automaticamente o
motor ativo, então não há mudanças de configuração no lado do MCP. O Newton requer 6.0 ou
mais recente; solicitá-lo na versão 5.1.0 falha com uma mensagem clara.
No Windows, use o lançador do PowerShell. Ele aceita a mesma seleção de motor e encaminha argumentos extras para o 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
O script resolve a instalação a partir de -IsaacSimRoot, depois $env:ISAACSIM_ROOT,
depois uma compilação local do código-fonte, depois C:\isaacsim, depois %USERPROFILE%\isaacsim. Ele
também cria um diretório de trabalho USD gravável (.cache\usd) já que o Windows não tem
/tmp.
Opcional: Chaves de API Beaver3D / NVIDIA para geração 3D
export BEAVER3D_MODEL="<your beaver3d model name>"
export ARK_API_KEY="<your beaver3d api key>"
export NVIDIA_API_KEY="<your nvidia api key>"
No 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. Conecte sua IDE
Adicione o servidor MCP ao seu editor. Substitua o caminho pela localização real do seu repositório.
Os exemplos command são para Linux/macOS; cada guia mostra o equivalente
Windows, que envolve o lançador do PowerShell scripts\run_mcp_server.ps1.
Claude Code (CLI)
claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh
Ou edite ~/.claude.json / .mcp.json:
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}
No Windows, envolva o lançador do 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
Crie .vscode/mcp.json no seu espaço de trabalho:
{
"servers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}
No Windows, envolva o lançador do PowerShell:
{
"servers": {
"isaac-sim": {
"command": "powershell",
"args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
}
}
}
Cursor
Abra Cursor Settings > MCP, ou edite ~/.cursor/mcp.json:
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}
No Windows, envolva o lançador do PowerShell:
{
"mcpServers": {
"isaac-sim": {
"command": "powershell",
"args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
}
}
}
Claude Desktop
Edite o arquivo de configuração para sua 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"
}
}
}
No Windows, envolva o lançador do PowerShell:
{
"mcpServers": {
"isaac-sim": {
"command": "powershell",
"args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
}
}
}
Windsurf
Abra Windsurf Settings > MCP ou edite ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}
No Windows, envolva o lançador do PowerShell:
{
"mcpServers": {
"isaac-sim": {
"command": "powershell",
"args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
}
}
}
Antigravity
Abra o painel lateral do agente, clique em … > MCP Servers > Manage MCP Servers >
View raw config, ou edite ~/.gemini/config/mcp_config.json (global) ou
.agents/mcp_config.json (espaço de trabalho):
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}
No Windows, envolva o lançador do PowerShell:
{
"mcpServers": {
"isaac-sim": {
"command": "powershell",
"args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
}
}
}
IDEs JetBrains
Vá para Settings > Tools > AI Assistant > MCP Servers e adicione o servidor, com
o comando /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh. Veja a
documentação MCP do JetBrains para detalhes.
No Windows, defina o comando como powershell e os argumentos como
-NoProfile -ExecutionPolicy Bypass -File C:\path\to\isaacsim-mcp-server\scripts\run_mcp_server.ps1.
4. Comece a dar comandos
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].
Arquitetura
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
Ferramentas
42 ferramentas em 9 categorias:
| Categoria | Quantidade | O que você pode fazer |
|---|---|---|
| Cena | 7 | Inspecionar cenas, criar física, listar/carregar ambientes, navegar por prims |
| Objetos | 4 | Criar, excluir, transformar e clonar primitivas |
| Iluminação | 2 | Criar e ajustar luzes |
| Robôs | 6 | Gerar 107+ robôs, inspecionar juntas, definir posições, atualizar biblioteca |
| Sensores | 4 | Criar câmeras/LiDAR, capturar imagens, obter nuvens de pontos |
| Materiais | 2 | Criar e aplicar materiais |
| Assets | 4 | Importar URDF, carregar/buscar USD, gerar modelos 3D |
| Gráficos | 2 | Construir e editar Action Graphs (OnPlaybackTick, ScriptNode, anexo de arquivo de script) |
| Simulação | 11 | Reproduzir/pausar/parar/avançar, executar Python, inspecionar física, hot-reload |
Lista completa de ferramentas
Cena: 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
Iluminação: create_light modify_light
Robôs: 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
Materiais: create_material apply_material
Assets: import_urdf load_usd search_usd generate_3d
Gráficos: create_action_graph edit_action_graph
Simulação: 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
Limitações Conhecidas
Defeitos abertos que uma sessão normal pode encontrar. Cada um é avisado no ponto de uso quando possível; esta lista serve para escolher um runtime antes de começar.
| Afeta | O que acontece | Issue |
|---|---|---|
| 6.0 Newton | Os acionamentos das juntas não convergem — um alvo comandado é ultrapassado e a junta continua se movendo, e os limites das juntas não são aplicados. A configuração da cena, o avanço e a inspeção funcionam; execute trabalhos de movimento no PhysX (isaac-sim.sh). | #21 |
| 6.0 | A primeira câmera RTX criada em uma sessão não pode ser removida. create_camera avisa uma vez quando entrega essa câmera. | #20 |
| 5.1 | get_lidar_point_cloud preenche em cerca de um terço das leituras, então o chamador precisa tentar novamente. Um lidar criado enquanto a linha do tempo está em execução nunca preenche — crie-o parado. | #31 |
| 5.1 | Um prim de lidar RTX não pode ser excluído; o prim é deixado para trás como um Camera. create_lidar recusa esse caminho e nomeia um livre. | #25 |
Exemplos de Comandos
Inicialização de cena
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.
Layout de robôs
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].
Carregamento de ambiente
List available environments, choose a warehouse-like one, and load it.
Create a camera and capture an image.
Busca de assets e geração 3D
Search for a rusty desk, load the best result near [0, 5, 0], scaled to [2, 2, 2].
Uso Avançado
Múltiplas Instâncias
Execute várias sessões do Isaac Sim lado a lado. Cada uma usa uma porta diferente (atribuída automaticamente a partir de 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
Configuração JSON para múltiplas instâncias
{
"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" }
}
}
}
Lançador de Desktop (Linux)
Instale um ícone de aplicativo dedicado Isaac Sim MCP:
./scripts/install_desktop_entry.sh
Isso cria um lançador que atribui portas automaticamente, aguarda o socket da extensão e limpa ao sair.
Fluxo de Trabalho Recomendado
- Comece com
get_scene_infopara verificar a conexão - Crie uma cena de física se o palco estiver vazio
- Prefira ferramentas específicas antes de
execute_script - Use
list_available_robots/list_environmentsantes de carregar - Use
create_action_graphpara conectar controladores OnPlaybackTick → ScriptNode - Use
step_simulationcomobserve_primseobserve_jointspara depuração - Use
reload_scriptpara iterar em controladores sem reiniciar
Demonstração: Franka Pick-and-Place
Uma demonstração pronta para executar em demo/franka_pick_place.py usando RMPflow para planejamento de movimento:
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 com script_file para configuração de Action Graph + ScriptNode em uma etapa, além das ferramentas de observabilidade: get_joint_config, step_simulation com observe_prims, get_physics_state e edit_action_graph para hot-reload de scripts.
Desenvolvimento
# Run the MCP inspector
./.venv/bin/python -m mcp dev ./isaac_mcp/server.py
O inspetor está disponível em http://localhost:5173.
Notas de Configuração
| Script | Finalidade | Padrão |
|---|---|---|
setup_python_env.sh | Criar venv e instalar pacote | Python 3.10 |
run_isaac_sim.sh | Iniciar Isaac Sim com extensão (Linux) | $HOME/isaacsim |
run_isaac_sim.ps1 | Iniciar Isaac Sim com extensão (Windows) | C:\isaacsim |
run_mcp_server.sh | Iniciar o servidor MCP (Linux) | Porta 8766 |
run_mcp_server.ps1 | Iniciar o servidor MCP (Windows) | Porta 8766 |
launch_isaac_sim_mcp.sh | Lançador combinado | Atribui porta automaticamente |
dev_mcp_server.sh | Servidor de desenvolvimento com hot-reload | Porta 8766 |
Substitua os padrões:
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
A seleção do motor está em scripts/lib/isaac_launcher.sh: cada motor mapeia para
o script de lançamento que o Isaac Sim inclui para ele. Adicionar uma entrada a esse mapa é tudo
que um novo backend precisa — isso habilita tanto ISAACSIM_ENGINE=<name> quanto --<name> em
todos os scripts de lançamento.
Solução de Problemas
Se o Isaac Sim disser 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 deve apontar para a raiz do repositório, não para isaac.sim.mcp_extension/ diretamente.
Contribuindo
Pull requests são bem-vindos. Melhorias em ferramentas, documentação, adaptadores e testes são todas úteis.
Licença
MIT License. Copyright (c) 2023-2025 omni-mcp, Copyright (c) 2026 whats2000. Consulte a LICENÇA.