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

Connect an MCP-compatible assistant to Rhino 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: **Rhino 8 with Python 3**. 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/rhino-mcp.git
cd rhino-mcp
npm ci --ignore-scripts
```

The [alpha release](https://github.com/3d-mcp/rhino-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

Extract `dist/rhino-mcp.zip` into one folder. Open `start_mcp.py` in Rhino ScriptEditor, select Python 3, and run it. Choose read-only or native scripting when prompted. The bridge is bound to the document where you start it. Run the script again to stop it; restart after closing that document.

## Connect your assistant

Configure the assistant to launch:

```sh
node /absolute/path/to/rhino-mcp/bin/rhino-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 Rhino connection, then describe the current selection.”

This calls `rhino_get_status` and `rhino_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 `rhino_execute_code` with `code` and `confirm: true`.

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

```python
result = {"name": doc.Name, "units": str(doc.ModelUnitSystem)}
```

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=rhino-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 Rhino vendor project.

## Development and ownership

Run `npm run check` from this repository. It needs no sibling checkout or parent
workspace package. Python 3 is 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)