Skip to content

Releases: kickthemoon0817/simul

v0.0.19

09 Apr 09:42

Choose a tag to compare

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-core from optional to core dependency
  • Add aiohttp as core dependency, remove unused asyncio-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-setup skill for guided installation workflow
  • Register simul as plugin in khemoo marketplace

Full Changelog: v0.0.18...v0.0.19

v0.0.17

08 Apr 16:27
de5f3bc

Choose a tag to compare

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 unreal flag 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 — inspection
  • list-actors, actor-info, search, scene-graph — scene queries
  • spawn, delete, set-transform, set-property, set-visibility — manipulation
  • sim, sim-status — Play-In-Editor control
  • capture, 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, bRestrictServerAccess gotcha)
  • Claude Code MCP configuration example for Unreal-only mode

Fixes

  • model_copy for frozen config overrides in Unreal CLI
  • Removed duplicate unreal_adapter initialization in server

Full Changelog: v0.0.16...v0.0.17

v0.0.16

08 Apr 13:10
15531c1

Choose a tag to compare

What's Changed

Schema Package Split

  • Split monolithic 3,250-line schemas.py into 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.py reduced to only the ToolResult union type for backward compatibility
  • Eliminates wildcard namespace pollution across registration modules

Centralized pxr Imports

  • New src/simul_mcp/usd/_pxr.py as single import surface for all USD Python bindings
  • Removes duplicated try/except ImportError + PXR_AVAILABLE guard 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-core optional dependency under [usd] extra
  • Constrained bpy to compatible Python version ranges
  • Added uv.lock for 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

30 Mar 00:45
d8a83ee

Choose a tag to compare

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}.json enable 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, catch IncompleteReadError, deadline-based read timeout, lazy lock init
  • Config: Fix lru_cache memory leak (maxsize=1), add frozen=True to all config models, port range cross-validation
  • Isaac tools: Fix transport routing inversion where default mode bypassed bridge
  • CLI: Parallel asyncio.gather in status/scene commands, fix emit_error and 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, 0o700 directory 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

13 Mar 06:29
47ea589

Choose a tag to compare

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 --json flag with TTY auto-detection, 22 Isaac CLI commands (13 new), structured JSON error envelopes, simul commands introspection
  • 3 New Dedicated MCP Toolscreate_isaac_physics_scene, create_isaac_light, create_isaac_material reduce execute_isaac_script dependency

Improvements

  • Modular Registration — Extracted tool registration from monolithic server.py into per-backend modules under mcp/registration/
  • Dual-mode Output — JSON to stdout for agents, Rich tables to stderr for humans across all CLI commands
  • USD CLI — Fixed summary --format json writing 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 dict
  • create-material validates shader_type before calling tool

Full Changelog: v0.0.7...v0.0.8

v0.0.7 — Isaac Sim Tool Expansion

21 Feb 19:27
c5a7c61

Choose a tag to compare

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.vscode extension on port 8226
  • Each tool constructs a Python script, sends it for execution, and parses JSON output
  • Type-safe Coroutine annotations on async helpers
  • Optional[str] = None for optional camera path parameters
  • Simplified error handling with structured logging

v0.0.6 — End-to-End Discoverability Test

20 Feb 08:34
cb90fed

Choose a tag to compare

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

20 Feb 08:21
6ca602c

Choose a tag to compare

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

20 Feb 08:08
90f039b

Choose a tag to compare

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

20 Feb 08:01
5683019

Choose a tag to compare

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