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.
- isaacsim_mcp_server-0.4.0/.gitignore +80 -0
- isaacsim_mcp_server-0.4.0/LICENSE +22 -0
- isaacsim_mcp_server-0.4.0/LICENSE_HEADER.py +37 -0
- isaacsim_mcp_server-0.4.0/LICENSE_README.md +78 -0
- isaacsim_mcp_server-0.4.0/PKG-INFO +431 -0
- isaacsim_mcp_server-0.4.0/README.md +404 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/__init__.py +31 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/connection.py +157 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/server.py +86 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/__init__.py +46 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/assets.py +139 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/lighting.py +91 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/materials.py +81 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/objects.py +136 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/robots.py +131 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/scene.py +136 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/sensors.py +125 -0
- isaacsim_mcp_server-0.4.0/isaac_mcp/tools/simulation.py +207 -0
- isaacsim_mcp_server-0.4.0/pyproject.toml +48 -0
|
@@ -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
|
+
[](https://pypi.org/project/isaacsim-mcp-server/)
|
|
31
|
+
[](https://www.python.org/downloads/)
|
|
32
|
+
[](https://opensource.org/licenses/MIT)
|
|
33
|
+
[](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
|
+

|
|
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).
|