1. Home
  2. Rhino MCP
  3. Setup

Rhino MCP setup: Package Manager, mcpstart and port 1999

Rhino has three routes to a working MCP connection — McNeel's official RhinoAI, the community rhinomcp package, and ZirenAI. The community route is the one people get stuck on, almost always at the same step: the bridge has to be started by hand with a Rhino command.

Updated 11 September 2026 · ZirenAI

What you are actually connecting

A plugin runs inside Rhino and listens on a local TCP port. A separate server process is what your AI client launches, and it forwards typed tool calls to that port. Three things can therefore be wrong: the plugin is not loaded, the listener was never started, or the client cannot launch the server.

Rhino differs from SketchUp in one useful way — the listener is not automatic. You start it explicitly, which means you can also check it explicitly.

Route 1: McNeel's official RhinoAI (open source)

McNeel publishes RhinoAI under an MIT licence at github.com/mcneel/rhinoai. The quickest path is to download their Rhino3D connector and let it install the plugin for you. It lists Claude Desktop, Claude Code, GitHub Copilot, OpenAI Codex, Gemini CLI and local models as compatible clients, and development currently targets a Rhino 9 branch.

If you already pay for one of those clients, start here. It is official, open source, and runs against the Rhino on your own machine — you supply the AI client. The comparison is on the main Rhino MCP page.

Route 2: the community rhinomcp package (open source)

Step 1 — install the plugin from Package Manager

In Rhino, go to Tools → Package Manager, search for rhinomcp, install it, and restart Rhino. The restart is not optional; the plugin will not register its commands until you do.

Step 2 — start the bridge

This is the step everyone misses. In Rhino's command line, type:

mcpstart

That starts the TCP listener on 127.0.0.1:1999. Until you run it, the plugin is installed and completely inert — no error, no warning, nothing. mcpstop shuts it down again.

If mcpstart is not recognised as a command, the plugin did not load. Check Tools → Options → Plug-ins before going further.

Step 3 — install uv

The server runs through uvx. Confirm it is on your PATH:

uvx --version

If that is not found, fix it now — it resurfaces later as a confusing client-side error. See spawn uvx ENOENT.

Step 4 — register the server with your AI client

{
  "mcpServers": {
    "rhino": {
      "command": "uvx",
      "args": ["rhinomcp@latest"],
      "env": {
        "RHINO_MCP_HOST": "127.0.0.1"
      }
    }
  }
}

The file must be valid JSON. Restart the client completely — most read the configuration only at startup.

Step 5 — check it before you trust it

Ask for something read-only first: "how many layers are in this document?" If that answers, the whole chain works. Only then try something that creates geometry.

Route 3: let the app set it up

ZirenAI does the whole of Route 2 for you, per application. It detects the modelling software you have and sets each one up on its own — plugin, runtime, and the bridge. No Package Manager, no mcpstart to remember, no JSON, no AI client to register.

  1. Install ZirenAI. It lists the modelling software it found on your machine.
  2. Click set up next to Rhino. Plugin and runtime are installed and the bridge is started for you — including after a restart, which is where the manual route catches people out.
  3. Describe a task. The connection is re-checked before every run, and the failing part is named when it breaks.

Download for Windows

What about Grasshopper?

The community rhinomcp package covers Grasshopper as well as Rhino — searching for components, building and wiring a canvas, setting parameters and solving. If authoring parametric definitions is what you want, that is the route to take.

ZirenAI deliberately does not touch Grasshopper definitions. It works on Rhino document geometry, layers and blocks and leaves your definitions alone.

Requirements

If it will not connect

Rhino's failures are more legible than SketchUp's because the listener is explicit — but there are still about eight ways it goes wrong, each with a recognisable symptom.

Troubleshooting →