Isaac Sim MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ARK_API_KEY | No | Optional: Your beaver3d API key for 3D generation | |
| BEAVER3D_MODEL | No | Optional: Your beaver3d model name for 3D generation | |
| ISAAC_MCP_PORT | No | Port for the MCP server to listen on | 8766 |
| NVIDIA_API_KEY | No | Optional: Your NVIDIA API key for 3D generation |
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_scene_infoA | Ping the Isaac Sim extension server and return scene information including stage path, assets root, and prim count. |
| create_physics_sceneA | 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. Args: keep_physics: If True, keep physics scene prims. |
| 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_infoB | Get detailed information about a specific prim. Returns type, world-space position, and children. 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. Args: environment: Environment name or search term (e.g. "warehouse", "hospital", "office"). prim_path: Prim path for the loaded environment. |
| create_objectA | Create a primitive object (Cube, Sphere, Cylinder, Cone, Capsule, Plane). The scale parameter multiplies the primitive's default size. For example, a Cube has default size 2.0, so scale=[0.5, 0.5, 0.5] creates a 1.0m cube. 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 (e.g. placing a cube on top of a table). Args: object_type: Type of primitive — Cube, Sphere, Cylinder, Cone, Capsule, or Plane. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. scale: [sx, sy, sz] scale factors. color: [r, g, b] color values (0-1). physics_enabled: Enable physics on this object. prim_path: Custom prim path. Auto-generated if not provided. |
| delete_objectB | Delete an object from the scene. Args: prim_path: The prim path of the object to delete. |
| 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. |
| 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. |
| create_cameraA | 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_imageA | 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. |
| 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: Lidar configuration name (e.g. "Example_Rotary"). |
| get_lidar_point_cloudB | Get point cloud data from a lidar sensor. Args: prim_path: Prim path of the lidar sensor. |
| 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. |
| apply_materialC | 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. |
| 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_usdB | 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_simulationB | Start the physics simulation. |
| pause_simulationB | Pause the physics simulation. |
| stop_simulationB | Stop the physics simulation. |
| step_simulationA | Step the simulation forward by N frames, then observe prim and joint states. This is the primary tool for debugging robot behavior. Use it instead of play_simulation + sleep + execute_script. The observe parameters let you inspect positions, velocities, and joint states in a single call. Typical debug loop:
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_paramsB | Configure physics engine parameters. Args: gravity: Gravity vector [x, y, z]. time_step: Physics time step in seconds. gpu_enabled: Enable GPU-accelerated physics. |
| get_isaac_logsA | Diagnostic tool: get recent warnings and errors from the Isaac Sim console. Call this after any tool returns an error, after simulation behavior is unexpected, or after execute_script / reload_script fails. Helps diagnose physics warnings, collision issues, and script errors that are not surfaced in tool responses. Args: clear: Clear the log buffer after reading. Default True. count: Maximum number of log entries to return. |
| get_simulation_stateA | Get the current simulation state including timeline status (playing/stopped/paused), simulation time, and physics dt. Call this to verify the simulation is running before using step_simulation. |
| get_physics_stateA | Diagnostic tool: get physics state for a prim. Returns rigid body status, mass, velocities, kinematic flag, and collision info. 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 for: operations no named tool covers, such as creating Action Graphs, computing IK, setting up physics callbacks, or configuring advanced USD properties. 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. |
| reload_scriptA | Load a Python controller or module into Isaac Sim from a file on disk. Use this instead of execute_script for persistent controllers, state machines, or any code longer than ~20 lines. 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'). |
| 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 "push"). 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. Example (inline script): create_action_graph( values=[ {"attr": "ScriptNode.inputs:script", "value": "def compute(db): ..."} ] ) Example (script file — one-step): 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. |
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/whats2000/isaacsim-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server