Skip to content
Agentmart
Submit a tool

Isaacsim MCP Server

Control NVIDIA Isaac Sim robotics simulator through MCP with 42 tools

Connector by whats2000 · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 69
Write a review

Chalk Labs

Need help deploying Isaacsim MCP Server?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/whats2000-isaacsim-mcp-server

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Control NVIDIA Isaac Sim robotics simulator through MCP with 42 tools

Use cases: testing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
14 read · 19 write · 3 delete · 7 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 43

Read from the source code; the running server may list different tools.

Read 14 · Look things up without changing anything.

  • capture_image
  • get_isaac_logs
  • get_joint_config
  • get_joint_positions
  • get_lidar_point_cloud
  • get_physics_state
  • get_prim_info
  • get_robot_info
  • get_scene_info
  • get_simulation_state
  • list_available_robots
  • list_environments
Show 2 more tools
  • list_prims
  • search_usd

Write 19 · Create, change, send or run things.

  • apply_material
  • clone_object
  • create_action_graph
  • create_camera
  • create_lidar
  • create_light
  • create_material
  • create_object
  • create_physics_scene
  • create_robot
  • edit_action_graph
  • import_urdf
Show 7 more tools
  • modify_light
  • play_simulation
  • set_drive_params
  • set_joint_positions
  • set_physics_params
  • stop_simulation
  • transform_object

Delete 3 · Delete, drop, revoke or wipe things.

  • clear_scene
  • delete_object
  • execute_script

Not yet classified 7 · We could not tell from the name and description.

  • generate_3d
  • load_environment
  • load_usd
  • pause_simulation
  • refresh_robot_library
  • reload_script
  • step_simulation

Network hosts it talks to 5

  • ai.api.nvidia.com · found in code
  • ark.cn-beijing.volces.com · found in code
  • github.com · found in code
  • lvlecheng.tos-cn-beijing.volces.com · found in code
  • omniverse-content-production.s3.us-west-2.amazonaws.com · found in code

Files it touches

  • Your home directory (~)
  • Any path the agent passes to its tools

Tools (43)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • apply_material

    Bind a material to an object. Args: material_path: Prim path of the material. target_prim_path: Prim path of the object to apply the material to.

  • capture_image

    Capture an RGB image from a camera sensor. Args: prim_path: Prim path of the camera. output_path: File path to save the image. Returns metadata only if not set.

  • clear_scene

    Remove all prims from the scene. Also empties any environment loaded by load_environment, which removes that environment's collision floor along with it — so a later create_physics_scene finds no floor and supplies its own. The stage's defaultLight is always kept — a stage with no light renders black, which looks like a broken camera. Args: keep_physics: If True, keep physics scene prims. keep_environment: If True, keep the loaded environment. Reloading one costs seconds, so pass this when clearing objects between attempts.

  • clone_object

    Duplicate an existing object to a new prim path. Args: source_path: Prim path of the object to clone. target_path: Prim path for the cloned object. position: [x, y, z] position for the clone. Keeps original position if not set.

  • create_action_graph

    Create and wire an OmniGraph Action Graph. Args: graph_path: USD prim path for the graph (default "/World/ActionGraph"). nodes: [{"path": <path relative to graph>, "type": <node type>}], e.g. {"path": "OnPlaybackTick", "type": "omni.graph.action.OnPlaybackTick"}. connections: [source_attr, target_attr] pairs, each written "NodePath.outputs:attrName" or "NodePath.inputs:attrName". values: [{"attr": "ScriptNode.inputs:script", "value": ...}] overrides. evaluator: Graph evaluator (default "execution", what Action Graphs use). "push" evaluates every app…

  • create_camera

    Add a camera sensor to the scene. Prefer target= over rotation= for aiming: cameras look down their local -Z and carry a built-in orientation, so hand-computed euler angles are easy to get wrong and give you a picture of the sky. The response echoes the rotation that was applied under "rotation" and the point under "aimed_at". Args: prim_path: Prim path for the camera. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. Ignored if target is given. resolution: [width, height] image resolution. Default 1280x720. target: [x, y, z] world point to l…

  • create_lidar

    Add a lidar sensor to the scene. Args: prim_path: Prim path for the lidar. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. config: Lidar configuration name (e.g. "Example_Rotary").

  • create_light

    Create a light in the scene. Args: light_type: Type of light — DistantLight, DomeLight, SphereLight, RectLight, DiskLight, or CylinderLight. position: [x, y, z] world position. intensity: Light intensity. color: [r, g, b] light color (0-1). rotation: [rx, ry, rz] rotation in degrees. prim_path: Custom prim path. Auto-generated if not provided.

  • create_material

    Create a PBR or physics material. Args: material_type: "pbr" for visual material or "physics" for physics material. prim_path: Prim path for the material. Auto-generated if not set. material_path: Alias for prim_path. apply_material names this argument material_path, and an unknown argument is dropped silently rather than rejected — so asking for material_path="/World/Looks/Red" used to succeed while creating the material somewhere else entirely, and the follow-up apply_material then failed on a path that was never used. color: [r, g, b]…

  • create_object

    Create a primitive object (Cube, Sphere, Cylinder, Cone, Capsule, Plane). Prefer `size`, which is absolute METERS: `size=0.3` gives a 0.3 m object of any type. `scale` is a RAW MULTIPLIER of the primitive's native size (2 m for Cube/Sphere/Cylinder/Cone/Capsule, 1 m for Plane), so `scale=0.5` on a Cube gives 1 m, not 0.5 m. Use `scale` only for deliberate non-uniform shaping; if both are given, `scale` wins. Returns prim_path, plus — for the geometric prims — actual_size [x, y, z] in meters and bounding_box (world-space min/max corners) for placing other objects relative to this one. A Plane…

  • create_physics_scene

    Create a physics scene, adding a ground plane only if the stage lacks one. Call load_environment BEFORE this. An environment brings its own collision floor and this skips adding a second one, but it checks only when it runs: the reverse order leaves two floors and the engine decides which one objects land on. load_environment reports that as "collision_floor_warning". Returns "ground_plane" (the floor objects will actually land on) and "ground_plane_created". Read the floor height from that prim rather than assuming z=0. Only a collision-enabled prim of type Plane is recognised, so an enviro…

  • create_robot

    Create a robot in the scene from the Isaac Sim asset library. Supports fuzzy matching — e.g. "franka", "spot", "g1", "go1". Call list_available_robots first to see all available robots. Call create_physics_scene before creating robots. Returns prim_path, robot_key, joint_names, and num_dof so you can immediately use set_joint_positions without a follow-up get_robot_info call. Args: robot_type: Robot name or search term. Fuzzy matched against available robots. position: [x, y, z] world position. name: Custom name for the robot prim. prim_path: Exact USD prim path (e.g. "/Worl…

  • delete_object

    Delete an object from the scene. Args: prim_path: The prim path of the object to delete.

  • edit_action_graph

    Edit an existing Action Graph: set attribute values or add connections. Use this to update a ScriptNode's script (inline or file path), change attribute values, or add connections on an already-created graph. For a ScriptNode backed by a file, set usePath alongside the path: values=[ {"attr": "ScriptNode.inputs:usePath", "value": true}, {"attr": "ScriptNode.inputs:scriptPath", "value": "/path/to/script.py"} ] For an inline script, set usePath false and write "inputs:script" instead. Args: graph_path: USD prim path of the existing graph (default "/World/ActionG…

  • execute_script

    Escape hatch: execute arbitrary Python code in Isaac Sim. PREFER a named tool wherever one exists — joints, prim / physics / joint state, stepping, logs. USE this for what none covers: Action Graphs, IK, physics callbacks, advanced USD properties. CAUTION: touching an articulation controlled by a running ScriptNode / Action Graph silently breaks its control path (no error is raised). Read-only diagnostics stay safe while a graph runs; stop_simulation before any write to the same articulation. For persistent controllers (>20 lines), write a .py file and load it with reload_script instead. A…

Show 28 more tools
  • generate_3d

    Generate a 3D model from text or image using Beaver3D, then load it into the scene. Args: text_prompt: Text description for 3D generation. image_url: URL of an image for 3D generation. position: [x, y, z] world position for the generated model. scale: [sx, sy, sz] scale factors.

  • get_isaac_logs

    Diagnostic tool: recent WARN/ERROR logs plus captured print() output. Captures carb.log_*/omni.log WARN+ERROR and stdout from execute_script / reload_script (tagged [PRINT]). Plain print() outside those captured contexts may not appear. Defaults are agent-friendly: non-destructive (clear=False) and scoped to the current run (since_last_play=True) so you see logs from what you just did, not stale entries from previous runs. Args: clear: If True, empty the buffer after reading. Default False. count: Maximum number of log entries to return. since_last_play: If True (default), retur…

  • get_joint_config

    Diagnostic tool: get joint drive configuration for a robot articulation. Returns stiffness, damping, limits, target vs actual positions, and position error for each joint. Call this when: - Joint drives are not tracking targets (check position_error) - Joints are oscillating or unstable (check stiffness/damping ratio) - Joints hit limits unexpectedly (check lower_limit/upper_limit) Units: gains are per-radian (angular) or per-meter (linear), per each joint's `gain_units`. Write them back with set_drive_params, which takes the same units. Args: prim_path: USD path to the robot articulati…

  • get_joint_positions

    Read current joint positions from a robot. Units: radians for revolute joints, meters for prismatic joints. Joint order matches the joint_names from get_robot_info. For a combined step-and-read, prefer step_simulation with observe_joints. Args: prim_path: The prim path of the robot.

  • get_lidar_point_cloud

    Get point cloud data from a lidar sensor. Requires the timeline to be playing — RTX lidar data is produced by Replicator while the sim runs, and a sweep only completes on some frames, so an empty read means "not this frame", not "saw nothing". By default returns a summary rather than the raw cloud: point_count, bounds, and the nearest hit. A full sweep is tens of thousands of points and megabytes of JSON, which is rarely what you want in a response. Args: prim_path: Prim path of the lidar sensor. max_points: Include this many points in the response, sampled at an even stride…

  • get_physics_state

    Diagnostic tool: get physics state for a prim. Returns rigid body status, velocities, kinematic flag, and collision info. `mass` is included only when the prim carries a UsdPhysics MassAPI — objects created by create_object do not, and take their mass from the collider's density. Velocity units: linear_velocity in m/s, angular_velocity in rad/s. Velocities are only non-zero once the simulation has advanced — step the simulation (or play) before reading them. Call this when: - Objects fall through the ground (check collision enabled) - Objects don't move when expected (check is_kinematic, mass…

  • get_prim_info

    Get detailed information about a specific prim. Returns type, children, and a transform block. There is no bare "position": position_local — parent-relative, the value transform_object writes. position_world — where the prim actually is on the stage. Use this for distance, reach or contact; for a nested prim such as a robot link the two differ by the parent's pose. position_world_source is "usd" (from the authored transform) or "physics" (measured, on Newton). On Newton, position_local_warning means only position_local is the spawn pose (position_worl…

  • get_robot_info

    Get robot joint information including names, DOF count, joint types, and limits. Call this after create_robot to understand the robot's kinematic structure. Returns joint names ordered by DOF index, joint types (revolute/prismatic), and joint limits (radians for revolute, meters for prismatic — each entry carries its own `units`). Args: prim_path: The prim path of the robot.

  • get_scene_info

    Ping the Isaac Sim extension server and return scene information including stage path, assets root, and prim count.

  • get_simulation_state

    Get the current simulation state: timeline status (playing/stopped/paused), simulation time, and physics dt. step_simulation does NOT require a running timeline — do not play just to step.

  • import_urdf

    Import a robot from a URDF file into the scene. Args: urdf_path: Path to the URDF file. prim_path: Prim path for the imported robot. position: [x, y, z] world position.

  • list_available_robots

    List all available robots discovered from the Isaac Sim asset server. Returns robot keys, descriptions, manufacturers, and asset paths. The list is auto-discovered at startup and reflects the actual assets available in your Isaac Sim version.

  • list_environments

    List all available environments discovered from the Isaac Sim asset server. Includes warehouses, offices, outdoor scenes, and more.

  • list_prims

    List the prims directly under root_path, optionally filtered by type. One level deep by default, so `list_prims("/")` names /World and /Environment rather than everything inside them — a robot alone is hundreds of prims. The response echoes `recursive` so a shallow answer is never mistaken for a complete one. Pass recursive=True to walk the whole subtree. That is the one you want when checking whether something was really deleted, or when hunting a prim nested under a robot: a Camera at /World/Arm/EyeCam does not appear in a shallow listing of /World. Args: root_path: Root path to start…

  • load_environment

    Load a pre-built environment into the scene. Supports fuzzy matching. Call list_environments first for options, and call this BEFORE create_physics_scene — the reverse order leaves two collision floors, and is reported as "collision_floor_warning". Y-up and/or centimetre environments are rotated and rescaled to match the stage; "corrections" reports what was applied. Read prim_path from the response rather than assuming it. "bounds" carries two heights — use the right one: floor_height — the surface objects rest on. Place with position=[x, y, floor_height]. bounds_min…

  • load_usd

    Load a USD asset from a URL or file path into the scene. Args: usd_url: URL or local path to the USD file. prim_path: Prim path for the loaded asset. position: [x, y, z] world position. scale: [sx, sy, sz] scale factors.

  • modify_light

    Modify properties of an existing light. Args: prim_path: The prim path of the light to modify. intensity: New intensity value. color: [r, g, b] new light color (0-1).

  • pause_simulation

    Pause the physics simulation.

  • play_simulation

    Start the physics simulation.

  • refresh_robot_library

    Force re-scan the asset server for available robots. Use this if new robot assets were added.

  • reload_script

    Reload a Python controller from a file on disk. Two modes, chosen automatically: - If any Action-Graph ScriptNode references this file (inputs:scriptPath), those ScriptNodes are force-recompiled so on-disk edits take effect on the running graph. This is how you iterate on a ScriptNode controller. - Otherwise the file is (re-)executed as a standalone controller. The file's directory is auto-added to sys.path. Args: file_path: Path to the Python file on disk. script_file: Alias for file_path — create_action_graph spells it that way, and both are accepted so neither spellin…

  • search_usd

    Search the NVIDIA USD asset library by text description, then load the best match. Args: text_prompt: Text description of the 3D asset to search for. target_path: Prim path for the loaded result. position: [x, y, z] world position. scale: [sx, sy, sz] scale factors.

  • set_drive_params

    Write a joint drive's stiffness, damping and/or max_force. Use after get_joint_config shows a drive not tracking or oscillating. Pass only the fields to change. Gains take the units get_joint_config reports (per-radian or per-meter, its `gain_units`), so a value read there can be passed back unchanged. Values must be >= 0. Errors if the joint has no drive, or its name matches several joints under prim_path. On Newton the stage is updated but the running solver keeps its old gain (`applied_to_solver: false`); tune live gains on PhysX. Args: prim_path: Robot articulation root, as passed t…

  • set_joint_positions

    Set target joint positions on a robot via ArticulationAction. Units: radians for revolute joints, meters for prismatic joints (e.g. gripper fingers). Use get_robot_info to discover joint names, types, and limits first. After calling this, use step_simulation to advance and observe the result — do not use play_simulation + sleep. Args: prim_path: The prim path of the robot. joint_positions: List of target joint position values. joint_indices: Optional list of joint indices to set. Sets all joints if not provided.

  • set_physics_params

    Configure physics engine parameters. Args: gravity: Gravity vector [x, y, z]. time_step: Physics time step in seconds. gpu_enabled: Enable GPU-accelerated physics.

  • step_simulation

    Advance the simulation by exactly N physics frames on a FROZEN timeline. Initialises physics on first call and operates on a paused/stopped timeline, so N is exact and observations correlate to a known frame count. Do NOT call play_simulation before or during the debug loop — step is for a frozen timeline and errors if the timeline is already playing. play is only for a final continuous run / ScriptNode demo. Args: num_steps: Number of simulation frames to step. observe_prims: Prim paths to observe. Each returns position_world, or position_local plus position_world_warning w…

  • stop_simulation

    Stop the physics simulation and reset to spawn state. Resets articulations and rigid bodies to their spawn pose (the state captured at first Play), like the Isaac UI Stop button. Call this to return the scene to a clean starting point before another run.

  • transform_object

    Set the transform (position, rotation, scale) of an existing object. Args: prim_path: The prim path of the object to transform. position: [x, y, z] new world position. rotation: [rx, ry, rz] new rotation in degrees. scale: [sx, sy, sz] new scale factors.

Signals

Stars
69
Forks
15
Open issues
7
Contributors
6
Weekly downloads
68
Last commit
Oct 20, 2026 (10 days ago)
Last release
Sep 1, 2026 (1 month ago)
Last package publish
Sep 1, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.whats2000/isaacsim-mcp-server
Version
0.6.1
Auth
No auth
Packages
pypi isaacsim-mcp-server
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get Isaacsim MCP Server running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying Isaacsim MCP Server?

CallGet help
Cite this page

Isaacsim MCP Server. Agent Mart. https://agentmart.dev/connectors/whats2000-isaacsim-mcp-server (last updated 2026-10-24)