← 开源
jingcheng-chen

rhinomcp

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

AI EngineeringGive agent toolsMake agent see hear talkPython
在 GitHub 打开
增长势头
+224 小时新增 Star+0.2%
1.15k
Star
105
Fork
+11
本周
3
贡献者
创建于 2025-03-22 · 更新于 2026-10-16 · 今日第 3946 名
主要开发者
jingcheng-chenblazingphoenix7LeoYuanjieLi

jingcheng-chen/rhinomcp 排名第 3,946,有 1,154 个星标。

同类别比较

jingcheng-chen/rhinomcp 排名第 3,946,此处有 8 个同类条目;ysr666/dsh-vision-router 排名第 3,947。

同类别比较
名称排名指标
carnot-tech/jinba-consulting-pptx-skill3,936
语言:
HTML
星标数:
1,178
分叉数:
113
简介:
AIにまじなPPTXを作らせる Claude Code / Codex スキル
adithya-s-k/manim_skill3,937
语言:
Python
星标数:
1,175
分叉数:
96
简介:
Agent skills for Manim to create 3Blue1Brown style animations.
whyiyhw/chatgpt-wechat3,938
语言:
Go
星标数:
1,175
分叉数:
216
简介:
企业微信/微信 安全使用的 LLM 个人助手/客服, 也支持 dify 工作流
haowang02/codex-candy-eval3,941
语言:
Python
星标数:
1,168
分叉数:
74
简介:
Codex 降智测试
ysr666/dsh-vision-router3,947
语言:
JavaScript
星标数:
1,153
分叉数:
52
简介:
Eyes for text-only DeepSeek Harness agents: built-in free vision chain (no key) + pixel-level vision tools (Q&A, grounding, crop, pixel diff, colors, OCR, SVG trace, cutout, screenshots). One-command install, no Python, image turns work like ordinary tool-calling turns.
stackblitz/bolt-slides3,955
语言:
TypeScript
星标数:
1,124
分叉数:
136
简介:
Use any agent to create stunning, interactive presentations
EveryInc/proof-sdk3,956
语言:
TypeScript
星标数:
1,123
分叉数:
196
简介:
Proof SDK: open-source collaborative editor, provenance model, and agent HTTP bridge
Onelevenvy/flock3,957
语言:
Rust
星标数:
1,120
分叉数:
148
简介:
A desktop multi-agent harness built with Rust, Tauri, and React, powered by langgraph-rust.
关键参数与规格
关键参数与规格
参数值
语言Python
类别AI Engineering
子类别Give agent tools,Make agent see hear talk
关键词3D, Agent-ready APIs, MCP, Multimodal
星标数1,154
分叉数105
贡献者3
创建日期2025-03-22
更新日期2026-10-16
1 天星标数2
7 天星标数11
排名3,946
上次排名3,225
排名变化-721
7 天星标排名3,844
上次 7 天星标排名3,668
7 天星标排名变化-176
总星标排名10,002
上次总星标排名10,004
总星标排名变化2
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. 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:** the AI both creates and reads geometry. **Custom scripts:** the AI writes and runs scripts inside Rhino. Nate made a showcase and install tutorial on YouTube. Install the Rhino plugin In Rhino, open

**Tools → Package Manager**, search for ** **, and click **Install**. 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: Option B: Install the mcp server or manually edit the config yourself **Codex**, in one command: **Claude Code**, in one command: **ChatGPT:** use Codex for the local setup above. ChatGPT apps/MCP connectors currently connect to remote MCP servers, not local

stdio commands like . 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: [! IMPORTANT] The launcher comes from **uv**. If you don't have it yet: macOS · Windows Run **only one** RhinoMCP server at a time (Codex, Claude, Cursor, etc. Auto-restart the server with your AI client (optional) To clean up a stale process each time your client launches: **macOS / Linux

** **Windows** 3. Start the Rhino bridge With Rhino open, type ** ** in the command line. This starts the TCP bridge the server connects to ( ends it). Staying up to date RhinoMCP has three parts that update separately: **Python server. ** asks PyPI for the newest release every time your client starts the server; plain keeps the first version it downloaded. If you work offline, install it once with and run when convenient. ** 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 into Rhino is not updated. ** 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 reports both versions. Usage With the bridge running and your

常见问题

记录了多少星标和分叉?

jingcheng-chen/rhinomcp 有 1,154 个星标和 105 个分叉。

仓库排名是多少?

jingcheng-chen/rhinomcp 排名第 3,946。

记录的语言和类别是什么?

jingcheng-chen/rhinomcp 有 1,154 个星标,语言为 Python,类别为 AI Engineering。

哪个仓库排名最接近?

jingcheng-chen/rhinomcp 与 ysr666/dsh-vision-router 比较,后者排名第 3,947,有 1,153 个星标。

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.

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: the AI both creates and reads geometry.

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

Auto-restart the server with your AI client (optional)

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

Rhino tools

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

Grasshopper tools

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.

Operator switches (environment variables)

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

Build, test, and publish

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

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.

排名相邻
同类项目