Skip to main content

dcc-mcp-sketchup

DCC-MCP · SKETCHUP

Production SketchUp adapter for the DCC-MCP ecosystem. It combines a small Ruby extension inside SketchUp with an external Python sidecar, exposing 28 typed tools without arbitrary Ruby execution.

Typed SketchUp model inspection, construction, organization, validation, and interchange export

Workflow illustration generated with OpenAI image generation; no third-party source assets.

Capabilities

  • Inspect model identity, bounds, entities, selection, and validation state.
  • Save or copy .skp models and use installed SketchUp importers/exporters.
  • Create boxes and cylinders, group, transform, rename, select, and erase entities.
  • List, create, edit, assign, and safely remove materials.
  • Manage saved scenes and Tags.
  • Reference entities through SketchUp persistent IDs.
  • Package four discoverable DCC-MCP Skills with complete JSON Schemas and MCP annotations.

Architecture

DCC-MCP client
      |
      v
external Python sidecar (dcc-mcp-core)
      |
      | authenticated, bounded JSON-RPC on 127.0.0.1
      v
UI.start_timer callback on SketchUp's UI thread
      |
      | nonblocking, bounded socket pump + one-request queue
      |
      v
typed SketchUp Ruby API command map

The Ruby extension has a single socket owner: the repeating UI timer. Each tick uses zero-timeout IO.select and nonblocking accept, read, and write operations across at most 16 connections, then executes at most one validated request. Frame, response, connection, and deadline limits keep every tick bounded while preserving SketchUp's thread affinity. No worker thread performs socket I/O or calls the SketchUp API. Every model mutation is a named undoable operation.

Requirements

  • SketchUp Desktop 2021 or newer on Windows or macOS.
  • Python 3.9 or newer for the external sidecar.
  • dcc-mcp-core>=0.20.14,<1.0.0 (installed automatically).

Importer and exporter availability varies by SketchUp edition, version, and installed extensions. The adapter reports the host error instead of claiming a format is available when SketchUp rejects it.

Install

See the Install and lifecycle runbook for the agent-first JSON contract, supported host versions, verification, transactional upgrade, receipt-driven uninstall, and troubleshooting.

Install the package into the Python environment used by DCC-MCP:

python -m pip install dcc-mcp-sketchup

Start SketchUp once so its versioned user profile exists, inspect the JSON plan, then install the Ruby extension:

dcc-mcp-sketchup install --dcc-path "C:/Program Files/SketchUp/SketchUp 2026/SketchUp.exe" --json --dry-run
dcc-mcp-sketchup install --dcc-path "C:/Program Files/SketchUp/SketchUp 2026/SketchUp.exe" --json --yes

Use --python when the sidecar belongs to another Python environment. The installer selects the versioned profile matching --dcc-path, writes a receipt, and verifies files, importability, bootstrap state, and the live host probe.

Open or restart SketchUp after installation. The extension binds an ephemeral loopback port, generates a random token, and launches the host-bound sidecar automatically. It terminates the sidecar when SketchUp exits.

To update or remove only files owned by this package:

dcc-mcp-sketchup upgrade --dcc-path "C:/Program Files/SketchUp/SketchUp 2026/SketchUp.exe" --json --yes
dcc-mcp-sketchup uninstall --dcc-path "C:/Program Files/SketchUp/SketchUp 2026/SketchUp.exe" --json --yes

Skills and tools

Skill Tools
sketchup-session status, inspection, root entities, save, copy, validate, import, export
sketchup-modeling box, cylinder, group, transform, rename, erase, select
sketchup-materials list, create, update, assign, remove
sketchup-scenes list/create/update/remove scenes and Tags

File paths must be absolute. Existing export and copy targets are refused unless overwrite=true. Removing a material or Tag is refused while model content uses it. The default Untagged Tag is never removable.

Development and verification

python -m pip install -e ".[dev]"
python -m pytest
python -m ruff check src tests
python -m ruff format --check src tests
python -m build
python -m twine check dist/*
ruby tests/ruby/test_commands.rb

CI covers Python 3.9 through 3.12 on Windows, macOS, and Linux, plus Ruby syntax and command-contract tests. A production release additionally requires a real SketchUp Desktop smoke test and a fresh installation from public PyPI.

Security boundary

  • Loopback-only listener on an operating-system-assigned port.
  • Random per-session bearer token with constant-time comparison.
  • Correlated request IDs, deadlines, 1 MiB request/response limits, and a bounded queue.
  • Fixed typed command allowlist; no eval, arbitrary Ruby, shell, or generic property access.
  • Sidecar is bound to one SketchUp PID and stops when that host exits.
  • Installer owns only dcc_mcp_sketchup.rb and the dcc_mcp_sketchup/ directory.

References

License

MIT. SketchUp and its marks are property of Trimble Inc.; this project is an independent integration and is not affiliated with or endorsed by Trimble.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dcc_mcp_sketchup-0.2.0.tar.gz (63.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dcc_mcp_sketchup-0.2.0-py3-none-any.whl (60.1 kB view details)

Uploaded Python 3

File details

Details for the file dcc_mcp_sketchup-0.2.0.tar.gz.

File metadata

  • Download URL: dcc_mcp_sketchup-0.2.0.tar.gz
  • Upload date:
  • Size: 63.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dcc_mcp_sketchup-0.2.0.tar.gz
Algorithm Hash digest
SHA256 31420932b93c9000757ef3d46dae77b734e4eec69c78cb0b579f87114cd43e91
MD5 fb66439ae298efd2641cf961b5a9f1ed
BLAKE2b-256 bcfb738e41a1c044759ac4732b12b61b8cd965ad29f328d6971c4c294fed310d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_sketchup-0.2.0.tar.gz:

Publisher: release.yml on dcc-mcp/dcc-mcp-sketchup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dcc_mcp_sketchup-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dcc_mcp_sketchup-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b4bffc71df94c493e5797fc2cdc859b1ba7b2c3532d6eb8011dbc494102cdb4e
MD5 175cc2c80f4ff0cda6b88ab664827eda
BLAKE2b-256 54edb9e2435bfcb72565931b76f34720901e7e682c6b44a5e85126bf318a4a64

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_sketchup-0.2.0-py3-none-any.whl:

Publisher: release.yml on dcc-mcp/dcc-mcp-sketchup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page