isaacsim-mcp-server 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,80 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+ MANIFEST
23
+
24
+ # Virtual environments
25
+ .env
26
+ .venv
27
+ env/
28
+ venv/
29
+ ENV/
30
+ env.bak/
31
+ venv.bak/
32
+
33
+ # IDE - VSCode
34
+ .vscode/*
35
+ !.vscode/settings.json
36
+ !.vscode/tasks.json
37
+ !.vscode/launch.json
38
+ !.vscode/extensions.json
39
+
40
+ # IDE - PyCharm
41
+ .idea/
42
+ *.iml
43
+ *.iws
44
+ *.ipr
45
+ .idea_modules/
46
+
47
+ # IDE - Cursor
48
+ .cursor/
49
+
50
+ # Logs
51
+ logs/
52
+ *.log
53
+ npm-debug.log*
54
+ yarn-debug.log*
55
+ yarn-error.log*
56
+
57
+ # OS specific
58
+ .DS_Store
59
+ .DS_Store?
60
+ ._*
61
+ .Spotlight-V100
62
+ .Trashes
63
+ ehthumbs.db
64
+ Thumbs.db
65
+
66
+ # Isaac Sim specific
67
+ *.usd
68
+ *.usda
69
+ *.usdc
70
+ *.usdz
71
+ local_cache/
72
+ *checkpoint.pth
73
+ /results/
74
+
75
+ # MCP specific
76
+ mcp_cache/
77
+ .coverage
78
+
79
+ # Don't ignore demo usd files
80
+ !demo/*usd
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-2025 omni-mcp
4
+ Copyright (c) 2026 whats2000
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,37 @@
1
+ # MIT License
2
+ #
3
+ # Copyright (c) 2023-2025 omni-mcp
4
+ # Copyright (c) 2026 whats2000
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.
23
+
24
+ # How to use this header:
25
+ # 1. Copy the license text above (excluding this instruction block)
26
+ # 2. Paste at the beginning of each Python source file
27
+ # 3. Optionally, add a brief description of the file below the license
28
+ #
29
+ # Example:
30
+ # # MIT License
31
+ # #
32
+ # # Copyright (c) 2023-2025 omni-mcp
33
+ # # Copyright (c) 2026 whats2000
34
+ # #
35
+ # # [License text...]
36
+ #
37
+ # Description: This module implements the core functionality for the Isaac Sim MCP extension.
@@ -0,0 +1,78 @@
1
+ # Source Code Licensing
2
+
3
+ This project is licensed under the MIT License. To properly maintain licensing information across the codebase, we provide utilities for applying license headers to all Python source files.
4
+
5
+ ## License Files
6
+
7
+ - `LICENSE` - The main MIT license file for the project
8
+ - `LICENSE_HEADER.py` - Example license header for Python files
9
+ - `add_license_headers.py` - Utility script to automatically add license headers to Python files
10
+
11
+ ## Adding License Headers to Source Files
12
+
13
+ You can add the MIT license header to all Python files in your project by running:
14
+
15
+ ```bash
16
+ python add_license_headers.py
17
+ ```
18
+
19
+ This will recursively search through the project directory and add the license header to any Python file that doesn't already have one.
20
+
21
+ You can also specify a specific directory to process:
22
+
23
+ ```bash
24
+ python add_license_headers.py path/to/directory
25
+ ```
26
+
27
+ ## License Header Format
28
+
29
+ Each Python source file should have the following license header at the top:
30
+
31
+ ```python
32
+ # MIT License
33
+ #
34
+ # Copyright (c) 2023-2025 omni-mcp
35
+ # Copyright (c) 2026 whats2000
36
+ #
37
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
38
+ # of this software and associated documentation files (the "Software"), to deal
39
+ # in the Software without restriction, including without limitation the rights
40
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
41
+ # copies of the Software, and to permit persons to whom the Software is
42
+ # furnished to do so, subject to the following conditions:
43
+ #
44
+ # The above copyright notice and this permission notice shall be included in all
45
+ # copies or substantial portions of the Software.
46
+ #
47
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
48
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
49
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
50
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
51
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
52
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
53
+ # SOFTWARE.
54
+ ```
55
+
56
+ This uses comments rather than a docstring so it does not interfere with module docstrings or `from __future__ import ...` placement.
57
+
58
+ It can be followed by a brief description of the file's purpose:
59
+
60
+ ```python
61
+ # Description: This file implements...
62
+ ```
63
+
64
+ ## Adding License Headers Manually
65
+
66
+ If you prefer to add headers manually, or are creating a new file, simply copy the header from `LICENSE_HEADER.py` and paste it at the beginning of your Python file.
67
+
68
+ ## Excluded Directories
69
+
70
+ The automated script skips the following directories:
71
+ - `.git`
72
+ - `.vscode`
73
+ - `__pycache__`
74
+ - `venv`, `env`, `.env`
75
+ - `build`
76
+ - `dist`
77
+
78
+ If you need to modify this list, edit the `SKIP_DIRS` variable in `add_license_headers.py`.
@@ -0,0 +1,431 @@
1
+ Metadata-Version: 2.4
2
+ Name: isaacsim-mcp-server
3
+ Version: 0.4.0
4
+ Summary: Control NVIDIA Isaac Sim robotics simulator through MCP -- 39 tools for scene management, robot control, sensors, and simulation
5
+ Project-URL: Homepage, https://github.com/whats2000/isaacsim-mcp-server
6
+ Project-URL: Repository, https://github.com/whats2000/isaacsim-mcp-server
7
+ Project-URL: Issues, https://github.com/whats2000/isaacsim-mcp-server/issues
8
+ Author: omni-mcp, whats2000
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ License-File: LICENSE_HEADER.py
12
+ License-File: LICENSE_README.md
13
+ Keywords: isaac-sim,mcp,nvidia,robotics,simulation
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Classifier: Topic :: Software Development :: Libraries
24
+ Requires-Python: >=3.10
25
+ Requires-Dist: mcp[cli]
26
+ Description-Content-Type: text/markdown
27
+
28
+ # Isaac Sim MCP Server
29
+
30
+ [![PyPI version](https://img.shields.io/pypi/v/isaacsim-mcp-server)](https://pypi.org/project/isaacsim-mcp-server/)
31
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/downloads/)
32
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
33
+ [![MCP Quality](https://archestra.ai/mcp-catalog/api/badge/quality/whats2000/isaacsim-mcp-server)](https://archestra.ai/mcp-catalog/api/badge/quality/whats2000/isaacsim-mcp-server)
34
+
35
+ > Natural language control for NVIDIA Isaac Sim through the [Model Context Protocol](https://modelcontextprotocol.io/) (MCP).
36
+
37
+ Connect any MCP-compatible IDE (Cursor, VS Code, Claude Code, Windsurf, JetBrains) to a running Isaac Sim instance and control it with plain-English prompts -- create robots, build scenes, run simulations, and debug physics all from your editor.
38
+
39
+ ![Robot Party Demo](media/add_more_robot_into_party.gif)
40
+
41
+ ---
42
+
43
+ ## Highlights
44
+
45
+ - **39 tools** across 8 categories -- scene, objects, lighting, robots, sensors, materials, assets, simulation
46
+ - **107+ robots** auto-discovered from the Isaac Sim asset library (Franka, UR, Unitree, Boston Dynamics, and more)
47
+ - **Step-and-observe** debugging -- step the simulation and inspect prim positions, joint states, and physics in one call
48
+ - **Hot-reload** -- iterate on Python controllers without restarting Isaac Sim
49
+ - **Multi-instance** -- run multiple Isaac Sim sessions side by side on different ports
50
+ - Built for **Isaac Sim 5.1.0** with a modular adapter layer for version isolation
51
+
52
+ ---
53
+
54
+ ## Installation
55
+
56
+ ### Option A: pip install (recommended)
57
+
58
+ ```bash
59
+ pip install isaacsim-mcp-server
60
+ ```
61
+
62
+ This installs the MCP server and the `isaacsim-mcp-server` CLI. You still need the Isaac Sim extension from the repo (see [Launching Isaac Sim](#2-launch-isaac-sim-with-the-extension) below).
63
+
64
+ ### Option B: From source
65
+
66
+ ```bash
67
+ git clone https://github.com/whats2000/isaacsim-mcp-server
68
+ cd isaacsim-mcp-server
69
+ ./scripts/setup_python_env.sh
70
+ ```
71
+
72
+ ### Requirements
73
+
74
+ | Requirement | Version |
75
+ |-------------|---------|
76
+ | NVIDIA Isaac Sim | `5.1.0` |
77
+ | Python | `3.10+` |
78
+ | `uv` | latest (for source install) |
79
+
80
+ ---
81
+
82
+ ## Quick Start
83
+
84
+ ### 1. Set up the environment
85
+
86
+ If you installed from source:
87
+
88
+ ```bash
89
+ ./scripts/setup_python_env.sh
90
+ ```
91
+
92
+ ### 2. Launch Isaac Sim with the extension
93
+
94
+ ```bash
95
+ ./scripts/run_isaac_sim.sh
96
+ ```
97
+
98
+ You should see in the logs:
99
+
100
+ ```
101
+ Registered 40 command handlers
102
+ Isaac Sim MCP server started on localhost:8766
103
+ ```
104
+
105
+ <details>
106
+ <summary>Optional: Beaver3D / NVIDIA API keys for 3D generation</summary>
107
+
108
+ ```bash
109
+ export BEAVER3D_MODEL="<your beaver3d model name>"
110
+ export ARK_API_KEY="<your beaver3d api key>"
111
+ export NVIDIA_API_KEY="<your nvidia api key>"
112
+ ```
113
+
114
+ </details>
115
+
116
+ ### 3. Connect your IDE
117
+
118
+ Add the MCP server to your editor. Replace the path with your actual repo location.
119
+
120
+ <details>
121
+ <summary><strong>Claude Code (CLI)</strong></summary>
122
+
123
+ ```bash
124
+ claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh
125
+ ```
126
+
127
+ Or edit `~/.claude.json` / `.mcp.json`:
128
+
129
+ ```json
130
+ {
131
+ "mcpServers": {
132
+ "isaac-sim": {
133
+ "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
134
+ }
135
+ }
136
+ }
137
+ ```
138
+
139
+ </details>
140
+
141
+ <details>
142
+ <summary><strong>VS Code</strong></summary>
143
+
144
+ Create `.vscode/mcp.json` in your workspace:
145
+
146
+ ```json
147
+ {
148
+ "servers": {
149
+ "isaac-sim": {
150
+ "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
151
+ }
152
+ }
153
+ }
154
+ ```
155
+
156
+ </details>
157
+
158
+ <details>
159
+ <summary><strong>Cursor</strong></summary>
160
+
161
+ Open **Cursor Settings > MCP**, or edit `~/.cursor/mcp.json`:
162
+
163
+ ```json
164
+ {
165
+ "mcpServers": {
166
+ "isaac-sim": {
167
+ "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
168
+ }
169
+ }
170
+ }
171
+ ```
172
+
173
+ </details>
174
+
175
+ <details>
176
+ <summary><strong>Claude Desktop</strong></summary>
177
+
178
+ Edit the config file for your platform:
179
+
180
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
181
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
182
+ - Linux: `~/.config/Claude/claude_desktop_config.json`
183
+
184
+ ```json
185
+ {
186
+ "mcpServers": {
187
+ "isaac-sim": {
188
+ "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
189
+ }
190
+ }
191
+ }
192
+ ```
193
+
194
+ </details>
195
+
196
+ <details>
197
+ <summary><strong>Windsurf</strong></summary>
198
+
199
+ Open **Windsurf Settings > MCP** or edit `~/.codeium/windsurf/mcp_config.json`:
200
+
201
+ ```json
202
+ {
203
+ "mcpServers": {
204
+ "isaac-sim": {
205
+ "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
206
+ }
207
+ }
208
+ }
209
+ ```
210
+
211
+ </details>
212
+
213
+ <details>
214
+ <summary><strong>JetBrains IDEs</strong></summary>
215
+
216
+ Go to **Settings > Tools > AI Assistant > MCP Servers** and add the server. See the [JetBrains MCP docs](https://www.jetbrains.com/help/idea/model-context-protocol.html) for details.
217
+
218
+ </details>
219
+
220
+ ### 4. Start prompting
221
+
222
+ ```text
223
+ Check the connection with get_scene_info.
224
+ If the scene is empty, create a physics scene.
225
+ Add a Franka robot at the origin and a Go1 quadruped at [2, 0, 0].
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Architecture
231
+
232
+ ```text
233
+ MCP Client (IDE)
234
+ |
235
+ v
236
+ isaacsim-mcp-server (PyPI package / CLI)
237
+ |
238
+ v TCP socket (localhost:8766)
239
+ |
240
+ isaac.sim.mcp_extension (Omniverse extension)
241
+ |
242
+ v
243
+ Handlers -> Adapter -> Isaac Sim 5.1.0 APIs
244
+ ```
245
+
246
+ ---
247
+
248
+ ## Tools
249
+
250
+ 39 tools across 8 categories:
251
+
252
+ | Category | Count | What you can do |
253
+ |----------|------:|-----------------|
254
+ | **Scene** | 7 | Inspect scenes, create physics, list/load environments, browse prims |
255
+ | **Objects** | 4 | Create, delete, transform, and clone primitives |
256
+ | **Lighting** | 2 | Create and tune lights |
257
+ | **Robots** | 6 | Spawn 107+ robots, inspect joints, set positions, refresh library |
258
+ | **Sensors** | 4 | Create cameras/LiDAR, capture images, get point clouds |
259
+ | **Materials** | 2 | Create and apply materials |
260
+ | **Assets** | 4 | Import URDF, load/search USD, generate 3D models |
261
+ | **Simulation** | 10 | Play/pause/stop/step, execute Python, inspect physics, hot-reload |
262
+
263
+ <details>
264
+ <summary>Full tool list</summary>
265
+
266
+ **Scene:** `get_scene_info` `create_physics_scene` `clear_scene` `list_prims` `get_prim_info` `list_environments` `load_environment`
267
+
268
+ **Objects:** `create_object` `delete_object` `transform_object` `clone_object`
269
+
270
+ **Lighting:** `create_light` `modify_light`
271
+
272
+ **Robots:** `create_robot` `list_available_robots` `refresh_robot_library` `get_robot_info` `set_joint_positions` `get_joint_positions`
273
+
274
+ **Sensors:** `create_camera` `capture_image` `create_lidar` `get_lidar_point_cloud`
275
+
276
+ **Materials:** `create_material` `apply_material`
277
+
278
+ **Assets:** `import_urdf` `load_usd` `search_usd` `generate_3d`
279
+
280
+ **Simulation:** `play_simulation` `pause_simulation` `stop_simulation` `step_simulation` `set_physics_params` `execute_script` `get_simulation_state` `get_physics_state` `get_joint_config` `reload_script`
281
+
282
+ </details>
283
+
284
+ ---
285
+
286
+ ## Example Prompts
287
+
288
+ **Scene bootstrap**
289
+ ```text
290
+ Check the connection with get_scene_info. If the scene is empty, create a physics scene.
291
+ Add stronger lighting and place a camera that looks at the workspace.
292
+ ```
293
+
294
+ **Robot layout**
295
+ ```text
296
+ Create three Franka robots in a row at [0,0,0], [2,0,0], and [4,0,0].
297
+ Then add a Go1 robot at [1, 3, 0].
298
+ ```
299
+
300
+ **Environment loading**
301
+ ```text
302
+ List available environments, choose a warehouse-like one, and load it.
303
+ Create a camera and capture an image.
304
+ ```
305
+
306
+ **Asset search and 3D generation**
307
+ ```text
308
+ Search for a rusty desk, load the best result near [0, 5, 0], scaled to [2, 2, 2].
309
+ ```
310
+
311
+ ---
312
+
313
+ ## Advanced Usage
314
+
315
+ ### Multiple Instances
316
+
317
+ Run multiple Isaac Sim sessions side by side. Each uses a different port (auto-assigned from `8766`).
318
+
319
+ ```bash
320
+ # First instance (default port 8766)
321
+ claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh
322
+
323
+ # Second instance (port 8767)
324
+ claude mcp add isaac-sim-2 -e ISAAC_MCP_PORT=8767 -- /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh
325
+ ```
326
+
327
+ <details>
328
+ <summary>JSON config for multiple instances</summary>
329
+
330
+ ```json
331
+ {
332
+ "mcpServers": {
333
+ "isaac-sim": {
334
+ "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
335
+ },
336
+ "isaac-sim-2": {
337
+ "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh",
338
+ "env": { "ISAAC_MCP_PORT": "8767" }
339
+ }
340
+ }
341
+ }
342
+ ```
343
+
344
+ </details>
345
+
346
+ ### Desktop Launcher (Linux)
347
+
348
+ Install a dedicated **Isaac Sim MCP** application icon:
349
+
350
+ ```bash
351
+ ./scripts/install_desktop_entry.sh
352
+ ```
353
+
354
+ This creates a launcher that auto-assigns ports, waits for the extension socket, and cleans up on exit.
355
+
356
+ ### Recommended Workflow
357
+
358
+ 1. Start with `get_scene_info` to verify the connection
359
+ 2. Create a physics scene if the stage is empty
360
+ 3. Prefer purpose-built tools before `execute_script`
361
+ 4. Use `list_available_robots` / `list_environments` before loading
362
+ 5. Use `step_simulation` with `observe_prims` and `observe_joints` for debugging
363
+ 6. Use `reload_script` to iterate on controllers without restarting
364
+
365
+ ---
366
+
367
+ ## Demo: Franka Pick-and-Place
368
+
369
+ A ready-to-run demo at `demo/franka_pick_place.py` using RMPflow for motion planning:
370
+
371
+ ```text
372
+ 1. Create a physics scene, ground plane, and a Franka FR3 robot
373
+ 2. Add two tables and a small cube on the first table
374
+ 3. Wire the pick-and-place script into an Action Graph
375
+ 4. Press Play -- the robot picks the cube and places it on the second table
376
+ ```
377
+
378
+ Uses the observability tools: `get_joint_config`, `step_simulation` with `observe_prims`, `get_physics_state`, and `reload_script`.
379
+
380
+ ---
381
+
382
+ ## Development
383
+
384
+ ```bash
385
+ # Run the MCP inspector
386
+ ./.venv/bin/python -m mcp dev ./isaac_mcp/server.py
387
+ ```
388
+
389
+ The inspector is available at `http://localhost:5173`.
390
+
391
+ ### Setup Notes
392
+
393
+ | Script | Purpose | Default |
394
+ |--------|---------|---------|
395
+ | `setup_python_env.sh` | Create venv and install package | Python 3.10 |
396
+ | `run_isaac_sim.sh` | Launch Isaac Sim with extension | `$HOME/isaacsim` |
397
+ | `run_mcp_server.sh` | Start the MCP server | Port 8766 |
398
+ | `launch_isaac_sim_mcp.sh` | Combined launcher | Auto-assigns port |
399
+ | `dev_mcp_server.sh` | Dev server with hot-reload | Port 8766 |
400
+
401
+ Override defaults:
402
+
403
+ ```bash
404
+ PYTHON_SPEC=3.11 ./scripts/setup_python_env.sh
405
+ ISAACSIM_ROOT=/opt/isaacsim ./scripts/run_isaac_sim.sh
406
+ ```
407
+
408
+ <details>
409
+ <summary>Troubleshooting</summary>
410
+
411
+ If Isaac Sim says `Can't find extension with name: isaac.sim.mcp_extension`:
412
+
413
+ ```bash
414
+ # Make sure you're in the repo root
415
+ pwd
416
+ test -f ./isaac.sim.mcp_extension/config/extension.toml && echo OK
417
+ ```
418
+
419
+ Note: `--ext-folder` must point to the **repo root**, not to `isaac.sim.mcp_extension/` directly.
420
+
421
+ </details>
422
+
423
+ ---
424
+
425
+ ## Contributing
426
+
427
+ Pull requests are welcome. Improvements to tools, docs, adapters, and tests are all useful.
428
+
429
+ ## License
430
+
431
+ MIT License. Copyright (c) 2023-2025 omni-mcp, Copyright (c) 2026 whats2000. See [LICENSE](LICENSE).