Skip to main content
Glama

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 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

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

The alpha release contains the native adapter archive and checksums. No npm registry release is included.

Related MCP server: Almond MCP

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:

node /absolute/path/to/rhino-mcp/bin/rhino-mcp.mjs

Codex, Claude Code and desktop JSON setup. 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:

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.

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. 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 · Release process · Licensing

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables interaction with Rhino 8 for architectural design, furniture placement, structural analysis, and publishing to Chestnut via MCP tools.
    33
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI clients such as Codex, Claude, and Cursor to control Rhino and Grasshopper through natural language, including creating and modifying geometry, managing layers, inspecting scenes, and running Grasshopper operations.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects MCP-compatible assistants to Blender to read scene and selection context, and optionally execute user-requested Python through Blender's native API when explicitly enabled.
    MIT