1. Conduid
  2. AI
  3. Rhinomcp
MCP server · AI

Rhinomcp

RhinoMCP connects Rhino 3D to AI Agent through the Model Context Protocol (MCP)

Unclaimed MIT ai
74Good

Scored 7 days ago · breakdown

About Rhinomcp

Rhinomcp is an MCP server published by jingcheng-chen in the AI category: rhinoMCP connects Rhino 3D to AI Agent through the Model Context Protocol (MCP).

The repository has 1.2K stars and 105 forks, with the last commit yesterday. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/jingcheng-chen/rhinomcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (9)

analyze_objectsMeasure length, area, volume, bounding boxes, and more

Parameters not published.

capture_viewportScreenshot the viewport for visual feedback

Parameters not published.

delete_objectDelete an object

Parameters not published.

execute_rhinocommon_csharp_codeExecute RhinoCommon C#

Parameters not published.

execute_rhinoscript_python_codeExecute RhinoScript-Python

Parameters not published.

get_commandsList available commands

Parameters not published.

get_document_summaryOverview of the current document

Parameters not published.

run_commandRun any native Rhino command

Parameters not published.

select_objectsSelect by filters (name, color, category; AND / OR)

Parameters not published.

Ask AI

✦

Ask AI about Rhinomcp

Powered by Claude · Grounded in docs

I know everything about Rhinomcp. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 20 hours ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

releases/0.4.1.10.4.1.1 · 14 Sep 2026Fixed https://github.com/jingcheng-chen/rhinomcp/issues/57
releases/0.4.10.4.1 · 10 Sep 2026See CHANGELOG.md for details. What's Changed Fix attribute updates and user-text preservation in Rhino 8 by @jingcheng-chen in https://github.com/jingcheng-chen/rhinomcp/pull/53 Align object lookup guidance with id and name selectors by…
releases/0.4.00.4.0 · 9 Sep 20260.4.0 Server (`rhinomcp` on PyPI) MCP Python SDK 2.x. The tool catalog, prompts, resources and instructions are unchanged for clients; no client configuration changes are needed. Tool errors keep their text. SDK 2.x reports an unexpected…
releases/0.3.20.3.2 · 28 Jun 2026Version 0.3.2 Usability optimisation patch. What's Changed Fix capture_viewport moving the user's view (marked ReadOnly) by @blazingphoenix7 in https://github.com/jingcheng-chen/rhinomcp/pull/28 Replace the deprecated jsonschema…
releases/0.3.10.3.1 · 5 Jun 2026Version 0.3.1 Highlights Added `gh_capture_preview` to capture live Grasshopper preview in Rhino without baking geometry. Added `gh_batch_get_component_type_info` for batched Grasshopper component I/O inspection. Improved batched…

README

RhinoMCP

Control Rhino 3D and Grasshopper with AI, in plain language.

RhinoMCP connects Rhino to AI agents through the Model Context Protocol, so assistants like Claude and Cursor can model geometry, read your document, and build Grasshopper definitions for you, just by chatting.

PyPI Rhino 8 MCP

Quick start · What it can do · Usage · Examples · Tool reference

English · 简体中文


Highlights

For development of the autonomous improvement experiments, start with the continuation guide.

  • Describe what you want and the assistant builds it in Rhino.
  • It reads your document and can capture the viewport, so it works from what is actually on screen.
  • It scripts Grasshopper for you: finding components, wiring them, setting sliders, and solving.
  • A single plugin and a single config entry cover both Rhino and Grasshopper.
  • When you need more control, it can run native Rhino commands, RhinoScript-Python, or RhinoCommon C#.

[!NOTE] RhinoMCP targets Rhino 8 on Windows and macOS.

Demos

Two-way interaction demo

Two-way interaction: the AI both creates and reads geometry.

Custom script demo

Custom scripts: the AI writes and runs scripts inside Rhino.

Prefer a walkthrough? Nate made a showcase and install tutorial on YouTube.

What it can do

Rhino

Area What the AI can do
Create geometry Points, lines, polylines, circles, arcs, ellipses, curves, boxes, spheres, cones, cylinders, and surfaces, one at a time or in batches
Transform & edit Move, rotate, scale, recolor, rename, and delete objects
Advanced modeling Loft, extrude, sweep, offset, pipe; boolean union, difference, and intersection
Curve operations Project, intersect, and split curves
Layers & attributes Create, delete, and switch layers; read and write object attributes
Inspect & select Document summaries, object info, and filtered selection (by name, color, or category, with AND / OR logic)
See the model Capture the viewport so the AI gets visual feedback
Analyze Measure length, area, volume, bounding boxes, and more
Go deeper Run any Rhino command, execute RhinoScript-Python, or run RhinoCommon C#, with built-in RhinoScript docs lookup

Grasshopper

Area What the AI can do
Find components Search the installed component library and inspect a component's inputs and outputs before placing it
Build canvases Add, position, lay out, update, and delete components
Wire it up Connect and disconnect parameters between components
Set & read values Drive sliders, toggles, panels, and value lists; read structured data back out of outputs
Solve Run the solution and surface runtime warnings and errors
Build in one shot Construct and wire a whole graph, or mutate an existing one, in a single batched operation

Quick start

Three steps: install the Rhino plugin, connect your AI client, then start the bridge in Rhino.

1. Install the Rhino plugin

In Rhino, open Tools → Package Manager, search for rhinomcp, and click Install. Restart Rhino.

2. Connect your AI client

Option A: ask your AI assistant to install it (recommended)

If you use an agentic assistant (Codex, Claude Code, Cursor, Cline, and the like), paste this prompt:

Please install https://github.com/jingcheng-chen/rhinomcp as a local MCP server named `rhino`.

Option B: Install the mcp server or manually edit the config yourself

Codex, in one command:

codex mcp add rhino --env RHINO_MCP_HOST=127.0.0.1 -- uvx rhinomcp@latest

Claude Code, in one command:

claude mcp add rhino -- uvx rhinomcp@latest

ChatGPT: use Codex for the local setup above. ChatGPT apps/MCP connectors currently connect to remote MCP servers, not local stdio commands like uvx rhinomcp. If you want to build a ChatGPT app around RhinoMCP, use ChatGPT developer mode with a remote or tunneled MCP endpoint.

You can also manually edit the config yourself:

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

[!IMPORTANT] The launcher uvx comes from uv. If you don't have it yet: macOS brew install uv · Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Run only one RhinoMCP server at a time (Codex, Claude, Cursor, etc. — not several at once).

To clean up a stale rhinomcp process each time your client launches:

macOS / Linux

{
  "mcpServers": {
    "rhino": {
      "command": "sh",
      "args": ["-c", "killall rhinomcp 2>/dev/null; uvx rhinomcp@latest"]
    }
  }
}

Windows

{
  "mcpServers": {
    "rhino": {
      "command": "cmd",
      "args": ["/c", "taskkill /F /IM rhinomcp.exe 2>nul & uvx rhinomcp@latest"]
    }
  }
}

3. Start the Rhino bridge

With Rhino open, type mcpstart in the command line. This starts the TCP bridge the server connects to (mcpstop ends it). Run it once per Rhino session.

Staying up to date

RhinoMCP has three parts that update separately:

  • Python server. uvx rhinomcp@latest asks PyPI for the newest release every time your client starts the server; plain uvx rhinomcp keeps the first version it downloaded. If you work offline, install it once with uv tool install rhinomcp and run uv tool upgrade rhinomcp when convenient.
  • Rhino plugin. Installed through the Package Manager, Rhino checks for updates at startup and installs them when "Automatically update packages when Rhino starts" is enabled; the new version loads on the next restart. A plugin installed by dragging a .rhp into Rhino is not updated.
  • AI client. It reads the tool list when it launches the server, so restart the client (or reconnect the server) after an update.

The server reads the plugin's version when it connects and warns in its log when the two differ. A tool that needs a newer plugin fails with an update instruction instead of silently doing something else, and describe_capabilities reports both versions.

Usage

With the bridge running and your client connected, you'll see the RhinoMCP tools. From there, just chat: ask the assistant to model something, inspect your scene, or build a Grasshopper graph.

For Grasshopper, you only need Rhino open with mcpstart running. The assistant can open or create the Grasshopper document itself, then build the definition. For example: "create a point attractor pattern with cylinders that have different heights."

Example prompts

Create 6×6×6 boxes on a 10-unit grid from the origin, sizes ramping from 1 to 5, with a blue-to-red gradient color based on size. Use RhinoScript Python.

Make a Rhinoceros animal out of cubic blocks in cartoon colors. Then change its head to red, and rotate the selected object 90° around the Z axis.

Create a point attractor pattern in Grasshopper: a grid of cylinders whose heights change with their distance from an attractor point, with a slider to move the point.

Tool reference

Tool Purpose
create_object / create_objects Create one or many objects
modify_object / modify_objects Transform or edit one or many objects
delete_object Delete an object
boolean_union / boolean_difference / boolean_intersection Boolean operations
loft / extrude_curve / sweep1 / offset_curve / pipe Advanced surface and solid modeling
project_curve / intersect_curves / split_curve Curve operations
analyze_objects Measure length, area, volume, bounding boxes, and more
select_objects Select by filters (name, color, category; AND / OR)
get_objects / get_object_info / get_selected_objects_info Query objects
get_object_attributes / update_object_attributes Read and write object attributes
create_layer / delete_layer / get_or_set_current_layer Layer management
get_document_summary Overview of the current document
capture_viewport Screenshot the viewport for visual feedback
run_command Run any native Rhino command
execute_rhinoscript_python_code Execute RhinoScript-Python
execute_rhinocommon_csharp_code Execute RhinoCommon C#
search_rhinoscript_functions / get_rhinoscript_docs / list_rhinoscript_modules / get_module_functions RhinoScript API docs lookup
get_commands List available commands
undo / redo Undo and redo
Tool Purpose
gh_create_document / gh_get_document_info / gh_get_canvas_state Document and canvas inspection
gh_search_components / gh_batch_search_components Search the component library
gh_list_component_categories / gh_get_available_components Browse installed components
gh_get_component_type_info / gh_get_component_info Inspect a component type or instance
gh_list_components List components on the canvas
gh_add_component / gh_update_component / gh_delete_component Add, update, or delete components
gh_layout_components Auto-lay-out the canvas
gh_clear_canvas Clear the canvas
gh_connect_components / gh_disconnect_components Wire or unwire parameters
gh_set_parameter_value / gh_get_parameter_value Drive inputs, read outputs
gh_run_solution / gh_expire_solution Solve or expire the solution
gh_build_graph / gh_mutate_graph Build or mutate a whole graph in one batched call
gh_get_graph / gh_clear_graph Inspect or clear objects by graph id

How it works

AI client ──MCP (stdio)──► rhinomcp (Python) ──TCP 127.0.0.1:1999──► Rhino plugin ──► Rhino + Grasshopper
  1. server/: a Python MCP server (official Python SDK 2.x) that exposes each tool and forwards it to Rhino.
  2. plugin/: a RhinoCommon C# plugin that runs a TCP listener inside Rhino and executes commands on the main thread. Start and stop it with the mcpstart / mcpstop Rhino commands.
  3. contracts/: JSON Schema definitions that keep the wire protocol between the two tiers in sync.

IMPLEMENTATION.md has a deeper tour of the code.

Security

The Python server and the Rhino plugin talk over an unauthenticated TCP loopback link (127.0.0.1:1999). Tools such as run_command, execute_rhinoscript_python_code, and execute_rhinocommon_csharp_code give the model an open execution surface inside Rhino. This is fine for local agent use. Do not expose it beyond the loopback interface without adding authentication.

Variable Default Effect
RHINO_MCP_HOST 127.0.0.1 Connect target. Refuses non-loopback hosts unless RHINO_MCP_ALLOW_REMOTE=1.
RHINO_MCP_PORT 1999 TCP port.
RHINO_MCP_ENABLE_RUN_COMMAND 1 Set 0 to disable the run_command tool.
RHINO_MCP_ENABLE_RHINOSCRIPT 1 Set 0 to disable RhinoScript-Python execution.
RHINO_MCP_ENABLE_CSHARP 1 Set 0 to disable RhinoCommon C# execution.
RHINO_MCP_VALIDATE warn Pre-flight schema validation: off / warn / strict.
RHINO_MCP_TIMEOUT 15.0 Socket timeout in seconds.
RHINO_MCP_DEBUG 0 Verbose logging.

For developers

Python server (run from server/)

uv venv && uv pip install -e ".[dev]"   # set up
uv run pytest                            # run tests (no Rhino needed; uses a mock server)
uv run ruff check src/rhinomcp           # lint
uv run python ../contracts/test_schemas.py   # validate JSON schemas
uv build && uv publish                   # publish to PyPI

C# plugin

dotnet restore plugin/rhinomcp.sln
dotnet build plugin/rhinomcp.sln --configuration Release

To publish the plugin: build in Release, copy manifest.yml into bin/Release, then run yak build and yak push rhinomcp_xxxx.yak.

Contributing

Contributions are welcome. Feel free to open an issue or submit a pull request.

Disclaimer

This is a third-party integration and is not made by McNeel. Built by Jingcheng Chen.

Star history

Star History Chart

Modeling guidance distributed with the server

The Python package includes reusable guidance for transforms, planar regions, organization, verification and recovery. Use get_modeling_guidance("overview"), the asset_general_strategy MCP prompt, or the rhinomcp://guidance/{topic} resource. Essential tool semantics stay in tool descriptions. No local experiment folder or separate skill is needed. See packaged guidance for available topics and release details.

README fetched from the repository 20 hours ago. The original is authoritative.

Questions

About Rhinomcp

How do I install Rhinomcp?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Rhinomcp safe to use with an AI agent?

Its trust score is 74 out of 100 (good). It passes 4 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Rhinomcp still maintained?

Yes — the latest release is releases/0.4.1.1 (14 Sep 2026), and the last commit was yesterday. The repository has 1.2K stars and 8 open issues.