Skip to main content
Glama
README.md
# SketchUp MCP by ArchBench

Connect an MCP-compatible assistant to SketchUp using this independent, open-source connector. Basic connectivity is free and needs no ArchBench account.

**Status: experimental alpha.** Read the [validation record](docs/VALIDATION.md) before using it with real project files. Transport fixture tests are not native-application qualification.

Implementation target: **SketchUp desktop 2021+**. Node.js 22+ runs the MCP server. Build native packages from the checkout with `npm ci --ignore-scripts` and `npm run package:hosts` (Python 3 required).

## Get the source

```sh
git clone https://github.com/3d-mcp/sketchup-mcp.git
cd sketchup-mcp
npm ci --ignore-scripts
```

The [alpha release](https://github.com/3d-mcp/sketchup-mcp/releases/tag/v0.1.0-alpha.3) contains the native adapter archive and checksums. No npm registry release is included.

## Install the native connection

Install `dist/sketchup-mcp.rbz` through Extensions → Extension Manager → Install Extension. Open Extensions → SketchUp MCP by ArchBench → Start bridge. Choose No for read-only connectivity, Yes to allow native Ruby, or Cancel to stop. Use Stop bridge to revoke access.

## Connect your assistant

Configure the assistant to launch:

```sh
node /absolute/path/to/sketchup-mcp/bin/sketchup-mcp.mjs
```

[Codex, Claude Code and desktop JSON setup](docs/CLIENTS.md). The assistant must run on the same machine and as the same user as the native application.

## First request

“Check my SketchUp connection, then describe the current selection.”

This calls `sketchup_get_status` and `sketchup_get_context`. Native context is limited to basic document and selection information; it does not use an ArchBench workflow engine.

## Optional native access

Enable native scripting explicitly in the host and set `ARCHBENCH_MCP_ALLOW_SCRIPTS=1` in the MCP server environment. This exposes `sketchup_execute_code` with `code` and `confirm: true`.

The Ruby script sets `result` to a JSON-compatible return value:

```ruby
result = { :entities => model.active_entities.length }
```

Scripts execute unsandboxed with the native application’s authority. They may modify models and local files or use the network. Keep returned data small; return values, rather than console prints, go to the assistant. See [security and Undo limitations](SECURITY.md).

Stop the native bridge to revoke access. Restarting generates a fresh token; the client reads it from the local connection descriptor.

## ArchBench

Maintained by [ArchBench](https://archbench.com/?utm_source=sketchup-mcp&utm_medium=readme&utm_campaign=open-source). Explore the separate product for integrated design work, project history, collaboration and workflows as those features become available. This connector remains usable independently.

This is an independent integration, not an official SketchUp vendor project.

## Development and ownership

Run `npm run check` from this repository. It needs no sibling checkout or parent
workspace package. Python 3 and Ruby are required for packaging and fixture checks.

This is an independently implemented public connector for external MCP clients
such as Codex and Claude Code. For ArchBench its purpose is marketing and
distribution through useful connectivity and voluntary product discovery.
Neither this connector nor the proprietary product depends on the other.
ArchBench chat, mission graphs, IFC models/mappings, planners, reviewed execution,
history, collaboration and workflow engines remain in the separate product.
Do not share private source, contracts, protocols, credentials or runtime services.

[Architecture](docs/ARCHITECTURE.md) · [Release process](docs/RELEASING.md) · [Licensing](LICENSING.md)