Introducing isaacsim-mcp, an MCP server that lets AI coding agents (Claude, Codex, etc.) execute Python code directly inside a running NVIDIA Isaac Sim instance and read its console output in real-time. This dramatically tightens the development loop when building robotics simulations and RL environments. No more copy-pasting errors back and forth between your agent and Isaac Sim’s Python console!
How It Works
The server bridges your AI coding agent and Isaac Sim by leveraging the Isaac Sim VS Code Edition extension (isaacsim.code_editor.vscode), which exposes a local TCP socket on port 8226 that accepts raw Python code and returns the execution result. The extension just lets you run code from VS Code using the Run button in the editor, but we can use it as a backend for our MCP server to run code from any agent. The MCP server wraps this interface to provide ability to run python code from the coding agent.
When running python code on Isaac Sim, it doesn’t always tramit the errors back. Some of the techniques use async which returns right away with OK but might be failing in the background. To address this, the MCP server also keeps track of the kit_*.log file generated by Isaac Sim, which contains all console output including warnings and errors. After executing code, the server can read the log file from the point where the code was executed to surface any relevant warnings or errors that occurred as a result of that code. This way, you get immediate feedback on both the return value of your code and any issues it may have caused in Isaac Sim.
This means your AI agent can:
- Write a Python snippet to spawn a robot, configure joints, or load a USD stage
- Send it to Isaac Sim and get back the
print()output or traceback immediately - Check the log for any warnings or errors triggered by the code
One of the interesting modes that agents use the MCP server is to use USD python libraries to infer about the USD models and then execute code to setup and modify the stage based on that. So requests like place this on that or attach to that works even when it has to do it on a geometry mesh based on the USD model.
Another mode is that it uses repeated tries to get the right python isaac sim libraries and the old problem of generating code that produces errors of “NameError: name ‘X’ is not defined” largely goes away.
One of the drawbacks is that specifying geometry for geometries in the stage like orientations is hard and has to be described in words to the agent, something that can be done visually very quickly with editing tools. Something like rotate left is then followed by other left and then again going in the wrong axes. When there are multiple rotations involved, the rotation decribed in text can be interpreted in multiple ways and the agent might not get it right.
Tools Exposed to the Agent
| Tool | Description |
|---|---|
check_isaac_connection | Test whether Isaac Sim’s executor is reachable at host:port |
execute_isaac_code | Run Python code inside Isaac Sim and return its output |
get_isaac_console_errors_warnings | Read warnings and errors from the Isaac Sim log |
execute_isaac_code snapshots the log file offset before running your code, so get_isaac_console_errors_warnings (with since_last_run=True, the default) returns only the entries produced by that specific execution — no noise from earlier sessions.
For long-running operations like loading a USD stage or running a simulation loop, pass a larger timeout:
execute_isaac_code(code="...", timeout=60)
Source
The source code is available on GitHub: mochan-b/isaacsim-mcp
