IsaacSim-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ISAAC_MCP_HOST | No | The host address for the runtime TCP socket between the Python MCP Server and the Isaac Sim Extension. | 127.0.0.1 |
| ISAAC_MCP_PORT | No | The port for the runtime TCP socket between the Python MCP Server and the Isaac Sim Extension. | 8766 |
| MCP_ALLOWED_HOSTS | No | Additional exact Host headers allowed to reach the HTTP endpoint, comma-separated. Loopback hosts are always allowed. | |
| ISAAC_MCP_HTTP_HOST | No | The address for the MCP HTTP listener. | 127.0.0.1 |
| ISAAC_MCP_HTTP_PORT | No | The port for the MCP HTTP listener. | 8000 |
| ISAAC_MCP_TRANSPORT | No | The transport type. Set to 'streamable-http' or alias 'http' to enable HTTP transport. | stdio |
| ISAAC_MCP_RUNTIME_STATE_FILE | No | Path to the bounded crash/restart state file shared between the Supervisor and MCP Server. | %LOCALAPPDATA%\IsaacSim-MCP\runtime-state.json |
| ISAAC_MCP_RUNTIME_PROBE_TIMEOUT_SECONDS | No | Timeout in seconds for the get_runtime_status protocol health probe. | 1 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_capabilitiesA | Discover the live Isaac Sim MCP runtime and its explicit limitations. Returns the Isaac Sim version, selected adapter, active physics backend, adapter-owned PhysX/Newton matrix, extension states, sensor warm-up policy, feature flags, and unsupported arguments. This query is read-only and works while the USD stage is still starting. |
| get_runtime_statusA | Read supervisor, crash, restart, and protocol-health state without requiring Isaac Sim. This local diagnostic remains available when the extension socket is closed. It never starts, stops, or mutates Isaac Sim and never replays a failed command. |
| list_controller_profilesA | List the exact gripper and mobile-base profiles accepted by high-level controller tools. |
| set_gripper_widthA | Set total gripper opening width using an explicit robot profile. The profile validates exact joint names and types before applying any position target. width_m is the total distance between both fingers. |
| open_gripperB | Open a gripper to the profile's declared open width with immediate target read-back. |
| close_gripperA | Close a gripper to the profile's declared closed width with immediate target read-back. |
| set_mobile_base_velocityA | Apply a profiled differential or holonomic base velocity target. The timeline must be playing for a non-zero command. Targets persist until replaced, so always call stop_mobile_base at the end of motion. Differential profiles reject non-zero lateral velocity. |
| stop_mobile_baseB | Set every profiled wheel velocity target to zero and verify the stop target read-back. |
| get_artifact_infoB | Get size, type, hash, expiry, and producer metadata for a managed artifact. |
| read_artifactB | Read one bounded base64 chunk from a managed artifact. |
| delete_artifactA | Delete one managed artifact after validating its opaque handle. |
| cleanup_artifactsC | Delete expired managed artifacts and report reclaimed capacity. |
| get_scene_infoC | Ping the Isaac Sim extension server and return scene information including stage path, assets root, and prim count. |
| create_physics_sceneB | Create a physics scene with ground plane. Call get_scene_info first to verify connection. Args: gravity: Gravity vector [x, y, z]. Default is standard gravity. scene_name: Name for the physics scene prim. |
| clear_sceneA | Remove all prims from the scene. Also empties any environment loaded by load_environment, so a later create_physics_scene(floor=True) does not stack a second ground under the first. 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. |
| list_primsA | List all prims in the scene, optionally filtered by type. Args: root_path: Root path to start listing from. prim_type: Filter by prim type (e.g. "Mesh", "Xform"). |
| get_prim_infoA | Get detailed information about a specific prim. Returns type, children, and a transform block holding position, rotation [rx, ry, rz] in degrees (XYZ order, the same convention transform_object accepts), and scale. For geometric prims (Cube, Sphere, Cylinder, Cone, Capsule), also returns actual_size [x, y, z] in meters accounting for scale and default primitive dimensions. Args: prim_path: The USD prim path to inspect. |
| list_environmentsA | List all available environments discovered from the Isaac Sim asset server. Includes warehouses, offices, outdoor scenes, and more. |
| load_environmentA | Load a pre-built environment into the scene. Supports fuzzy matching. Call list_environments first to see available options. Many shipped environments are authored Y-up and/or in centimeters; those are rotated and rescaled to match the stage, and the response reports what was applied under "corrections". It also returns "bounds" with the environment's extent and floor_height, so objects can be placed on the ground without a second query. Read prim_path from the response rather than assuming it — it defaults to a named child of /Environment. Args: environment: Environment name or search term (e.g. "warehouse", "hospital", "office"). prim_path: Prim path for the loaded environment. Defaults to /Environment/, which keeps it separate from the stage's default lighting and lets clear_scene remove it. |
| new_stageA | Preview or create a new empty stage. Requires scratch_stage=true, a scratch_root, stopped timeline, and defaults to preview-only. |
| open_stageB | Preview or open a local USD stage inside scratch_root. Destructive stage replacement requires explicit scratch_stage=true. |
| save_stage_asA | Preview or export the current stage to a different local USD file inside scratch_root. Source overwrite is always rejected. |
| get_stage_compositionB | Read the root layer, full layer stack, prim count, references/payloads, variant selections, semantics, and stage metadata. |
| edit_sublayerC | Preview or add/remove a root-layer subLayer path with stopped-timeline and exact read-back checks. |
| edit_composition_arcB | Preview or edit a reference/payload arc. Payloads also support load/unload; every mutation is read back and rolled back on failure. |
| set_variant_selectionB | Preview or select an existing USD variant after validating the set and available names. |
| get_semantic_labelsA | Read Isaac Sim 6.0.1 LabelsAPI taxonomies and labels, plus any legacy semantic labels. |
| set_semantic_labelsA | Preview or apply Isaac Sim 6.0.1 UsdSemantics LabelsAPI labels under one taxonomy with read-back. |
| get_typed_attributeA | Read a USD attribute value, declared type, and authored-value state in JSON-safe form. |
| set_typed_attributeA | Preview or set a finite, explicitly typed USD attribute. Existing attributes require overwrite=true and cannot change type. |
| apply_stage_batchA | Preview or atomically apply up to 100 layer/arc/variant/semantic/attribute edits. Any failed operation restores the stage snapshot. |
| create_objectA | Create a primitive object (Cube, Sphere, Cylinder, Cone, Capsule, Plane). Prefer
Returns prim_path, actual_size [x, y, z] in meters, and bounding_box (min/max corners in world coordinates) so you can accurately place other objects relative to this one. Args:
object_type: Type of primitive — Cube, Sphere, Cylinder, Cone, Capsule, or Plane
(case-insensitive; "cube" is normalized to "Cube").
position: [x, y, z] world position.
rotation: [rx, ry, rz] rotation in degrees.
scale: [sx, sy, sz] RAW multiplier of the native size (2 m for most
prims, 1 m for Plane). NOT meters. Overrides |
| delete_objectB | Delete an object; Camera/LiDAR use verified lifecycle teardown. Args: prim_path: The prim path of the object to delete. post_delete_updates: Camera/LiDAR verification updates, from 1 to 240. Ignored for ordinary prims. |
| transform_objectA | 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. |
| clone_objectA | 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. |
| configure_physics_bodyB | Atomically configure rigid/static body, collider approximation and mass. body_type is dynamic, kinematic, or static. approximation is one of none, convex_hull, convex_decomposition, mesh_simplification, bounding_cube, or bounding_sphere. Mass uses kg and density uses kg/m^3. The timeline must be stopped. |
| get_physics_bodyA | Read authored rigid body, collider, approximation, mass and density. |
| create_collision_groupC | Create a USD collision group and return relationship read-back. |
| get_collision_groupB | Read collision group members, filters, inversion and merge name. |
| create_physics_jointA | Create fixed, revolute, or prismatic joint with explicit local frames. Positions and prismatic limits are meters; revolute limits are degrees. Quaternion rotations use [w, x, y, z]. Axis is X, Y, or Z. |
| get_physics_jointC | Read joint type, body targets, frames, axis, limits and units. |
| get_replicator_statusC | Read Replicator extension, orchestrator, job, writer, and trigger state. |
| create_sdg_jobB | Preview or create a bounded manual-trigger BasicWriter SDG job. Randomizers are typed records. |
| start_sdg_jobC | Preview or asynchronously start one configured SDG job. |
| get_sdg_job_statusC | Read bounded SDG job progress, lifecycle state, and cleanup read-back. |
| cancel_sdg_jobB | Preview or request cancellation; resources detach at the next safe point. |
| get_sdg_manifestC | Return a terminal job manifest and managed artifact handles. |
| delete_sdg_jobC | Preview or delete one terminal job record and optionally its artifacts. |
| get_ros2_statusB | Read ROS 2 bridge/core/nodes state, domain source, distro, and workflow count. |
| list_ros2_workflowsB | List MCP-owned ROS 2 publisher graphs below a USD root. |
| create_ros2_clock_publisherB | Preview or create a playback-driven ROS 2 Clock publisher graph. |
| create_ros2_tf_publisherC | Preview or create a 6.0-style ComputeTransformTree to ROS 2 TF publisher. |
| create_ros2_joint_state_publisherC | Preview or create an IsaacReadJointState ROS 2 JointState publisher graph. |
| create_ros2_camera_publisherA | Preview or create a ROS2CameraHelper publisher for an MCP camera runtime. The camera prim must first be created with create_camera. Its owned render product is resolved automatically; render_product_path is an explicit override for externally-created render products. |
| create_ros2_lidar_publisherB | Preview or create a ROS2RtxLidarHelper publisher for an MCP RTX LiDAR runtime. The LiDAR prim must first be created with create_lidar. Its owned render product is resolved automatically; render_product_path is an explicit override for externally-created render products. |
| delete_ros2_workflowB | Preview or delete one MCP-owned ROS 2 workflow; foreign graphs are refused. |
| spawn_humanA | Spawn animated NVIDIA human characters into the CURRENT USD stage. Uses Isaac Sim 6.0+'s A NavMesh is required. The tool can bake an authored volume and waits up to 2000 update frames for complex factory stages. The extension is enabled automatically, but the tool fails closed when no usable NavMesh or character assets are available. Stop the timeline first.
Args:
count: Number of new characters to add, from 1 to 25.
group_name: USD-safe IRA group name. Reusing it appends characters.
root_prim_path: Parent prim for all characters.
asset_path: Character asset directory. Defaults to
|
| list_humansA | List IRA human characters without changing the stage. |
| get_humanC | Return USD and live Behavior Agent state for one IRA human. |
| delete_humanC | Delete one MCP-owned human. Preview is enabled by default. |
| set_human_targetC | Issue a Behavior Agent MoveTo task to exactly one target. |
| set_human_look_atC | Issue a Behavior Agent LookAt task; zero duration means indefinite. |
| set_human_idleC | Cancel the active action by issuing Idle, optionally facing one target. |
| set_human_behaviorC | Update supported live Behavior Agent settings with read-back. |
| get_navmesh_statusC | Return Navigation Core, NavMeshVolume, bake and area status. |
| bake_navmeshB | Bake the current stage NavMesh with a bounded wait; preview by default. |
| start_jobB | Start an eligible asset or sensor command as a bounded background job. Motion and SDG starts retain their typed tools; their returned IDs can still be queried and cancelled through the unified job tools. |
| get_job_statusB | Read a managed, motion, or SDG job without executing it again. |
| cancel_jobC | Request cancellation and return a predictable terminal lifecycle state. |
| list_jobsC | List the bounded retained managed-job registry. |
| create_lightB | 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. |
| modify_lightC | 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). |
| create_robotA | 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. "/World/Franka"). Overrides name-based path. |
| list_available_robotsA | 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. |
| refresh_robot_libraryA | Force re-scan the asset server for available robots. Use this if new robot assets were added. |
| get_robot_infoA | 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 (degrees for revolute, meters for prismatic). Args: prim_path: The prim path of the robot. |
| set_joint_positionsA | 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. |
| get_joint_positionsA | 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_joint_stateA | Read measured joint state and active command targets. Returns position, velocity, measured effort, position/velocity/effort targets, joint name/index mapping, joint type, and explicit units. Use either joint_names or joint_indices for a subset; the selectors are mutually exclusive. Revolute units are radians, radians_per_second, and newton_meters. Prismatic units are meters, meters_per_second, and newtons. Args: prim_path: USD path of the articulation root. joint_names: Optional exact, case-sensitive joint names in requested order. joint_indices: Optional DOF indices in requested order. |
| set_joint_commandA | Apply an atomic position, velocity, or effort joint command. All selectors and values are validated before the adapter is called, so an unknown name, invalid index, duplicate selector, non-finite value, or length mismatch applies nothing. Effort commands must be renewed every simulation update; this tool applies one update's effort command. Args: prim_path: USD path of the articulation root. mode: One of position, velocity, or effort. values: Command values ordered by the selected joints. joint_names: Optional exact, case-sensitive joint subset. joint_indices: Optional DOF-index subset; mutually exclusive with joint_names. |
| set_joint_drive_configA | Atomically update drive gains, limits, or drive type for selected joints. The timeline must be stopped. Numeric fields must be finite and non-negative. Values use runtime SI units: revolute gains are per radian, revolute velocity is radians_per_second, and prismatic velocity is meters_per_second. drive_type is force or acceleration. All inputs are validated before writing, and an apply failure triggers rollback. Args: prim_path: USD path of the articulation root. stiffness: Optional proportional gain applied to every selected joint. damping: Optional derivative gain applied to every selected joint. max_force: Optional maximum drive effort. max_velocity: Optional maximum joint velocity; PhysX only. drive_type: Optional force or acceleration drive mode. joint_names: Optional exact, case-sensitive joint subset. joint_indices: Optional DOF-index subset; mutually exclusive with joint_names. |
| compute_ikA | Solve bounded Lula inverse kinematics without moving the robot. Quaternion order is scalar-first [w, x, y, z]. The explicit warm-start and random seed make repeated requests reproducible. The result reports achieved end-effector errors and whether collision checking was done. |
| plan_joint_trajectoryA | Plan a bounded joint trajectory and return an opaque trajectory_id. planner="rrt" uses NVIDIA Lula RRT and reports collision_checked=true; planner="cspace" creates a deterministic spline and explicitly reports collision_checked=false. start_joint_positions defaults to measured state; pass it explicitly for reproducible offline planning. This call never executes. |
| execute_trajectoryC | Start a trajectory job and return immediately without blocking the MCP worker. |
| cancel_motionB | Cancel a running motion job and hold its last commanded position. |
| get_motion_statusC | Read motion job state, progress, timing, and terminal error details. |
| delete_sensorA | Release and delete one Camera or LiDAR, then verify it stays absent. Args: prim_path: Managed Camera or LiDAR prim path. post_delete_updates: Kit updates used to detect delayed prim or render-product reappearance. Range 1 to 240. |
| create_cameraB | Add a camera sensor to the scene. Args: prim_path: Prim path for the camera. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. resolution: [width, height] image resolution. Default 1280x720. |
| capture_imageB | Capture an RGB image from a camera sensor. Args: prim_path: Prim path of the camera. output_path: Optional explicit .png path for artifact mode. If omitted, uses the managed artifact root. return_mode: metadata, artifact, or inline. Defaults to artifact. inline_max_bytes: Maximum PNG bytes allowed in inline mode. Maximum configurable value is 4 MiB. |
| capture_camera_outputB | Capture a typed RTX camera annotator output. Args: prim_path: Prim path of the camera. output_type: depth, distance_to_image_plane, semantic_segmentation, instance_segmentation, instance_id_segmentation, normals, or motion_vectors. output_path: Optional explicit .npy path for artifact mode. return_mode: metadata, artifact, or inline. Defaults to artifact. inline_max_bytes: Maximum raw bytes allowed in inline mode. Maximum is 4 MiB. |
| get_camera_calibrationC | Read camera intrinsics, extrinsics, projection, resolution, and units. |
| create_lidarB | 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: Isaac Sim 6 supported preset name, such as Example_Rotary or OS1. variant: Optional preset variant string or variant-set mapping. horizontal_fov_deg: Generic sensor horizontal field of view in degrees. vertical_fov_deg: Generic sensor vertical field of view in degrees. horizontal_resolution_deg: Generic sensor horizontal angular resolution. vertical_resolution_deg: Generic sensor vertical angular resolution. rotation_rate_hz: Integer generic rotary scan rate from 1 to 100 Hz. min_range_m: Generic sensor minimum range in meters. max_range_m: Generic sensor maximum range in meters. |
| get_lidar_configB | Read effective LiDAR FOV, angular resolution, rate, range, and USD schema values. |
| get_lidar_point_cloudB | Get typed point cloud fields from a lidar sensor. Args: prim_path: Prim path of the lidar sensor. output_path: Optional explicit .npz path for artifact mode. return_mode: metadata, artifact, or inline. Defaults to artifact. inline_max_bytes: Maximum encoded NPZ bytes allowed in inline mode. |
| create_materialA | 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. color: [r, g, b] diffuse color (0-1). PBR only. roughness: Surface roughness (0-1). PBR only. metallic: Metallic value (0-1). PBR only. static_friction: Static friction coefficient (>=0). Physics only. dynamic_friction: Dynamic friction coefficient (>=0 and <= static). Physics only. restitution: Bounciness from 0 to 1. Physics only. |
| get_materialB | Read PBR or physics material parameters and explicit units. |
| apply_materialA | 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. material_purpose: auto, physics, or visual. Auto selects from the material schema. |
| get_material_bindingA | Read the resolved physics or visual material binding on a prim. |
| list_nvidia_assetsB | List NVIDIA assets that can be spawned through MCP. Combines a verified Isaac/SimReady/Vegetation prop catalog with the robot library discovered from the running Isaac Sim 6.0 asset root. Args:
category: Optional category: |
| spawn_nvidia_assetA | Spawn one catalog asset into the CURRENT USD stage. Call Args:
asset_key: Exact key returned by |
| import_urdfB | 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. |
| load_usdA | 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. |
| search_usdA | 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. |
| generate_3dB | 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. |
| play_simulationC | Start the physics simulation. |
| pause_simulationC | Pause the physics simulation. |
| stop_simulationA | 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. |
| step_simulationA | Advance the simulation by exactly N physics frames on a FROZEN timeline. step is self-contained: it initialises physics on first call and operates on a paused/stopped timeline, so N is always 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. If the timeline is already playing, step returns an error (a free run cannot be counted frame-by-frame). Use play_simulation ONLY for a final continuous run / ScriptNode-driven demo, never for debugging. Typical debug loop (no play):
Args: num_steps: Number of simulation frames to step. observe_prims: List of prim paths to observe (returns position + velocity). observe_joints: List of articulation prim paths to observe (returns joint positions). |
| set_physics_paramsA | Atomically configure Isaac Sim 6 PhysX scene parameters. The timeline must be stopped. Args: gravity: Gravity vector [x, y, z]. time_step: Physics time step in seconds. gpu_enabled: Enable or disable GPU dynamics and matching broadphase. |
| get_isaac_logsA | 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), return only entries since the last timeline Play. Set False for the full buffer. filter_command_id: Return only structured records for this command. severity: Optional structured-record severity filter. source: Optional structured-record source filter (for example kit or dispatcher). |
| get_simulation_stateA | 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. |
| get_physics_stateA | Diagnostic tool: get physics state for a prim. Returns rigid body status, mass, velocities, kinematic flag, and collision info. 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:
Args: prim_path: USD path to the prim to inspect. |
| get_joint_configA | 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:
Args: prim_path: USD path to the robot articulation root. |
| execute_scriptA | Escape hatch: execute arbitrary Python code in Isaac Sim. PREFER named tools over this for: reading/setting joints (set_joint_positions, get_joint_positions), inspecting state (get_prim_info, get_physics_state, get_joint_config), stepping simulation (step_simulation), and checking logs (get_isaac_logs). USE this only for a trusted operation that no named tool covers. Execution is policy-gated, cooperatively timed, output-bounded, cwd-restricted, and audited by code hash. Background scheduling is denied unless both the request and administrator policy explicitly opt in. CAUTION: touching an articulation controlled by a running ScriptNode / Action Graph can silently break its control path (no error is raised). While a graph is running, read-only diagnostics (get_prim_info, get_physics_state, get_joint_positions, get_isaac_logs) are safe, but stop_simulation before using execute_script or named write tools on the same articulation. For persistent controllers (>20 lines), write a .py file and load it with reload_script instead of pasting code here. Args: code: Python code to execute in the Isaac Sim context. cwd: Optional working directory to add to sys.path before execution. timeout_s: Cooperative Python deadline; capped by extension policy. max_output_bytes: Combined per-stream capture limit; capped by policy. allow_background: Request background scheduling. Default false and rejected unless the extension policy also enables it. |
| reload_scriptA | Reload a Python controller from a file on disk. Two modes, chosen automatically:
Workflow:
The file's directory is auto-added to sys.path. Args: file_path: Path to the Python file on disk. module_name: Optional module name to reload (e.g. 'my_controller'). timeout_s: Cooperative Python deadline; capped by extension policy. max_output_bytes: Per-stream capture limit; capped by policy. |
| get_script_policyB | Return the current execute/reload policy without exposing script source or credentials. |
| get_script_audit_logC | Return bounded script audit metadata. Source code is represented only by SHA-256. |
| create_action_graphA | Create and wire an OmniGraph Action Graph. Builds a complete Action Graph with nodes, connections and attribute values using og.Controller.edit(). This is the programmatic equivalent of creating an Action Graph in the visual editor. Args: graph_path: USD prim path for the graph (default "/World/ActionGraph"). nodes: List of node definitions. Each dict has: - "path": Node path relative to graph (e.g. "OnPlaybackTick") - "type": OmniGraph node type (e.g. "omni.graph.action.OnPlaybackTick") connections: List of [source_attr, target_attr] pairs for wiring nodes. Each attr is "NodePath.outputs:attrName" or "NodePath.inputs:attrName". values: List of attribute value overrides. Each dict has: - "attr": Full attribute path (e.g. "ScriptNode.inputs:script") - "value": The value to set evaluator: Graph evaluator type (default "execution", what Action Graphs use). "push" evaluates every application update regardless of the timeline, so an OnPlaybackTick-driven ScriptNode would keep running even while the simulation is stopped. script_file: Convenience shortcut — path to a local Python script file. When provided, automatically creates OnPlaybackTick → ScriptNode nodes, wires them, and attaches the script file (sets usePath + scriptPath). The nodes and connections parameters are ignored when script_file is set. RECOMMENDED for anything you will iterate on — edit the file and reload_script "just works", with the better reload story. inline_script: Convenience shortcut — inline Python (must define setup(db)/compute(db)). Auto-creates OnPlaybackTick → ScriptNode, wires them, and sets the script inline (usePath=False). For small, static graphs. For anything you will iterate on, prefer script_file — it has the better reload story (edit the file + reload_script "just works"; inline edits need edit_action_graph). Example (inline script — one-step): create_action_graph( inline_script="def setup(db): pass\ndef compute(db): return True" ) Example (script file — one-step, recommended for iteration): create_action_graph( script_file="/path/to/controller.py" ) |
| edit_action_graphA | Edit an existing OmniGraph Action Graph: set attribute values or add connections. Use this to update ScriptNode scripts (inline or file path), change attribute values, or add new connections on an already-created graph. For ScriptNode with a local file script, set both usePath and scriptPath: values=[ {"attr": "ScriptNode.inputs:usePath", "value": true}, {"attr": "ScriptNode.inputs:scriptPath", "value": "/path/to/script.py"} ] For ScriptNode with inline script: values=[ {"attr": "ScriptNode.inputs:usePath", "value": false}, {"attr": "ScriptNode.inputs:script", "value": "def compute(db): ..."} ] Args: graph_path: USD prim path of the existing graph (default "/World/ActionGraph"). values: List of attribute value overrides. Each dict has: - "attr": Attribute path relative to graph (e.g. "ScriptNode.inputs:script") - "value": The value to set connections: List of [source_attr, target_attr] pairs to add. |
| list_action_graphsA | List Action Graphs below a USD root, including disabled graphs by default. Args: root_path: USD subtree to inspect. include_disabled: Include graphs whose evaluation is disabled. |
| get_action_graphA | Read one Action Graph's nodes, edges, state, and optional values or script source. Script source is omitted by default because inline source and local file contents may be large or sensitive. |
| delete_action_graphB | Preview or delete one exact Action Graph, with deletion read-back. |
| connect_action_graphC | Preview or connect one source output to one target input in an Action Graph. |
| disconnect_action_graphC | Preview or remove one exact connection from an Action Graph. |
| set_action_graph_enabledB | Preview or enable/disable one Action Graph and read back its effective state. |
| get_action_graph_statusA | Read one Action Graph's enabled, evaluation, and error status. |
| evaluate_action_graphC | Explicitly evaluate one exact Action Graph and return post-evaluation status. |
| configure_script_nodeB | Preview or configure one exact ScriptNode in explicit inline/file mode.
|
| reload_script_nodeA | Preview or recompile one exact ScriptNode without cross-graph fallback. Supply |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tim0320/IsaacSim-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server