Releases: kickthemoon0817/simul
Releases · kickthemoon0817/simul
v0.0.19
What's Changed
Bug Fixes
- execute_unreal_script: Remove output_schema constraint that forced ErrorResponse validation on success responses, fixing schema error on every call (Fixes #21)
- capture_unreal_viewport: Add LinuxEditor/Linux to screenshot directory candidates, fixing empty image on Linux (Fixes #21)
Dependencies & Setup
- Bump Python minimum to >=3.11, <3.14
- Move
usd-corefrom optional to core dependency - Add
aiohttpas core dependency, remove unusedasyncio-mqtt - Bump all dependency floors to current stable versions
- Add per-backend installation guide to README
Plugin
- Add
"skills"path to plugin.json for Claude Code skill discovery - Add
simul-setupskill for guided installation workflow - Register simul as plugin in khemoo marketplace
Full Changelog: v0.0.18...v0.0.19
v0.0.17
What's Changed
Unreal Engine Thin MCP Surface
- Register only 3 essential MCP tools (
unreal_health_check,capture_unreal_viewport,execute_unreal_script) to minimize AI agent context overhead - Full 53-tool set still available with
thin=False
--backends Flag
- New
simul-mcp server --backends unrealflag for selective backend registration - Supports:
isaac,usd,blender,unreal(comma-separated or repeated) - Validates backend names at startup
Unreal CLI (18 subcommands)
health,info,scene,map— inspectionlist-actors,actor-info,search,scene-graph— scene queriesspawn,delete,set-transform,set-property,set-visibility— manipulationsim,sim-status— Play-In-Editor controlcapture,exec,materials— viewport, scripting, materials- Tested against Unreal Engine 5.3.2 with Remote Control API
Documentation
- Full Unreal Engine setup guide (plugins, DefaultRemoteControl.ini,
bRestrictServerAccessgotcha) - Claude Code MCP configuration example for Unreal-only mode
Fixes
model_copyfor frozen config overrides in Unreal CLI- Removed duplicate
unreal_adapterinitialization in server
Full Changelog: v0.0.16...v0.0.17
v0.0.16
What's Changed
Schema Package Split
- Split monolithic 3,250-line
schemas.pyinto per-backend package:common.py,blender.py,unreal.py,usd.py,instance.py,simready.py - Each backend owns its class definitions with proper
__all__exports _all.pyreduced to only theToolResultunion type for backward compatibility- Eliminates wildcard namespace pollution across registration modules
Centralized pxr Imports
- New
src/simul_mcp/usd/_pxr.pyas single import surface for all USD Python bindings - Removes duplicated
try/except ImportError+PXR_AVAILABLEguard blocks from 5 modules - Makes pxr dependency explicit and IDE-navigable
Dependency Changes
- Breaking: Minimum Python raised from 3.8 to 3.10 (matches Isaac Sim 5.1)
- Added
usd-coreoptional dependency under[usd]extra - Constrained
bpyto compatible Python version ranges - Added
uv.lockfor reproducible installs
Tests
- 328 passed, 2 skipped, 0 failed
- Updated all imports for new schema paths and pxr refactor
Full Changelog: v0.0.15...v0.0.16
v0.0.14
What's Changed
Bridge Auto-Port Allocation
- Zero-config multi-instance Isaac Sim — bridge extension auto-negotiates available ports (tries configured port, increments on conflict up to 10 retries)
- Discovery files at
/tmp/simul-mcp/{pid}.jsonenable instant instance finding without port scanning - MCP server reads discovery files first, falls back to port scanning
VS Code Protocol Compatibility
- Bridge extension accepts both typed JSON (bridge) and raw Python (VS Code compat) on a single port
- Protocol auto-detection via 4-byte peek — eliminates the need for two ports per instance
- VS Code extension kept as last-resort fallback
Review Fixes (34 findings resolved)
- Socket client: Fix
ping()race condition, catchIncompleteReadError, deadline-based read timeout, lazy lock init - Config: Fix
lru_cachememory leak (maxsize=1), addfrozen=Trueto all config models, port range cross-validation - Isaac tools: Fix transport routing inversion where default mode bypassed bridge
- CLI: Parallel
asyncio.gatherinstatus/scenecommands, fixemit_errorand falsy-value bugs - MCP server: Add
shutdown()lifecycle, parallel port scanning, file-based discovery
Security Hardening
- Docker: bind sockets to
127.0.0.1, non-root user by default - Discovery files: atomic writes,
0o700directory mode, loopback-only host validation - CORS: tightened from wildcard to specific ports
Tests
- 345 passed, 0 failed
- New tests for socket client, CLI, bridge server, extension package
Full Changelog: v0.0.13...v0.0.14
v0.0.8
What's Changed
New Features
- Claude Code Plugin — 8 Skill 2.0 skills (scene-setup, physics, materials, camera, simulation, robot-import, USD, scripting), 4 slash commands, 1 scene-builder agent
- Agent-Friendly CLI — Global
--jsonflag with TTY auto-detection, 22 Isaac CLI commands (13 new), structured JSON error envelopes,simul commandsintrospection - 3 New Dedicated MCP Tools —
create_isaac_physics_scene,create_isaac_light,create_isaac_materialreduceexecute_isaac_scriptdependency
Improvements
- Modular Registration — Extracted tool registration from monolithic
server.pyinto per-backend modules undermcp/registration/ - Dual-mode Output — JSON to stdout for agents, Rich tables to stderr for humans across all CLI commands
- USD CLI — Fixed
summary --format jsonwriting to stderr instead of stdout
Bug Fixes
- Fixed 6 parameter name mismatches in CLI-to-tool layer (set-transform, capture, step, list-prims, search-prims)
- Added input validation for all CSV-parsed numeric arguments
- Capture command properly decodes base64 and writes to disk
emit()no longer mutates caller's dictcreate-materialvalidates shader_type before calling tool
Full Changelog: v0.0.7...v0.0.8
v0.0.7 — Isaac Sim Tool Expansion
v0.0.7 — Isaac Sim Tool Expansion
Expanded from 2 to 45 Isaac Sim tools across 8 domains, transforming simul-mcp into a comprehensive Isaac Sim automation server.
New Tool Domains
| Domain | Tools | Description |
|---|---|---|
| Scene Inspection | 7 | Stage info, prim listing/search/info/transform, scene summary |
| Viewport & Camera | 4 | Camera info/control, viewport capture, camera listing |
| Prim Manipulation | 8 | Create/delete/duplicate/reparent prims, transform/visibility/attribute control |
| Physics Inspection | 6 | Rigid body, collision, joint, mass properties, physics scene info |
| Physics Configuration | 4 | Add rigid body/collision, set mass/physics material |
| Simulation Control | 7 | Start/stop/pause/step/reset simulation, state and time queries |
| Materials & Appearance | 4 | Material info/listing, material assignment, property editing |
| Asset & Stage Ops | 5 | Open/save/new stage, import assets, add USD references |
Security Hardening
- Input sanitization: All user-provided strings use
json.dumps()before f-string interpolation to prevent code injection - File path validation: Sandbox policy enforcement on
open_isaac_stage,save_isaac_stage,import_isaac_asset,add_isaac_reference - Numeric bounds: Viewport dimensions, step counts, and result limits are bounded to safe ranges
Quality
- 56 unit tests covering all 43 tool methods + 9 error handling paths
- Live integration tested against running Isaac Sim — 10 bugs found and fixed during testing
- 5 engineer reviews addressing performance, type safety, error handling, API design, and security
Technical Details
- Communication via TCP socket to Isaac Sim's
isaacsim.code_editor.vscodeextension on port 8226 - Each tool constructs a Python script, sends it for execution, and parses JSON output
- Type-safe
Coroutineannotations on async helpers Optional[str] = Nonefor optional camera path parameters- Simplified error handling with structured logging
v0.0.6 — End-to-End Discoverability Test
Changes
- Add tests/mcp/test_discoverability.py with 9 tests validating the full MCP discoverability chain
- Server name, version, instructions, tool listing, and tool descriptions all verified
- Type-safe test double with full annotations for Python 3.8+ compatibility
- Immutable frozenset for expected tool sets
- Explicit next-with-default pattern for clear assertion errors
- Bump version to 0.0.6
v0.0.5 — Connection Resilience
Changes
- Make Isaac Sim TCP socket host/port/timeout configurable via IsaacSimConfig
- Add public timeout_seconds property to IsaacSocketClient
- Wire IsaacSocketClient to read from settings instead of hardcoded defaults
- Update execute_isaac_script description to suggest calling ping_isaac first
- Update ping_isaac as pre-flight connectivity check with timeout info
- Improve error messages: dynamic address, actionable guidance
- Remove unused defaults from _is_isaac_reachable
- CLI banner and status commands read host/port from settings
- Add socket config to default.yaml and .env.example
- Bump version to 0.0.5
v0.0.4 — Server Name Clarity
Changes
- Rename MCP server from simul-mcp to Simul – 3D Simulation & DCC Tools
- MCP clients now see a descriptive name without reading instructions
- CLI banner, help text, version panel, config files all updated
- pyproject.toml description enriched with explicit 3D and DCC context
- Bump version to 0.0.4
v0.0.3 — USD Tool Descriptions
Changes
- Add Isaac Sim and USD-capable application context to all 10 USD tool descriptions
- Each tool description now mentions compatibility with local files and live stages
- Helps agents understand tools work beyond local USD files
- Bump version to 0.0.3
Tools Updated
load_usd_file, validate_usd_file, get_prim_info, create_prim, update_prim_attributes, delete_prim, get_mesh_info, search_prims, get_bounding_box, summarize_scene