
RhinoMCP: Control Rhino 3D and Grasshopper from Claude and Cursor
Lets Claude, Cursor and other assistants model in Rhino 3D and build Grasshopper definitions from plain-language requests.
RhinoMCP lets an assistant create and edit geometry in Rhino 8, read what is in your document, and build Grasshopper definitions. It is a community project by Jingcheng Chen. It runs on your computer: you add a plugin to Rhino, connect the server from your AI app, and type mcpstart in Rhino once per session. Know before you start that it can run Python, C# and Rhino commands in your open file, and it has no read-only mode.
Good for
- Architects and designers who want to describe a model in words and have Rhino build it
- Grasshopper users who want an assistant to find, place and wire components
- Rhino users who script with Python or C# and want help writing and running it
- Anyone on Rhino 8 for Windows or macOS who wants the assistant to see the viewport
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install RhinoMCP MCP
Claude Code
- 1
Copy this prompt.
Add the RhinoMCP MCP server to Claude Code. Run this command: claude mcp add rhinomcp -- uvx rhinomcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv (Python), Rhino 8 + rhinomcp plugin, mcpstart running in Rhino.
Read-only mode: No read-only mode. Set RHINO_MCP_ENABLE_RUN_COMMAND, RHINO_MCP_ENABLE_RHINOSCRIPT and RHINO_MCP_ENABLE_CSHARP to 0 in the config to turn off the code tools.
Install the plugin first: in Rhino 8 open Tools, then Package Manager, search for rhinomcp, install, and restart Rhino. After your AI app connects, type mcpstart in the Rhino command line (once per Rhino session). The README uses rhinomcp@latest so the server updates each time your app starts it. The generated command here uses plain rhinomcp, which keeps the first version it downloaded. Run only one RhinoMCP server at a time.
Built from the package data we hold. Not yet tested by us.
Tools
Gives a quick summary of the open Rhino document
Returns a light overview of the current file so the assistant knows what is in it before it changes anything.
Try: “What is in my Rhino file right now?”
Read ·
get_document_summaryLists objects in the document with filters and paging
Queries the objects in the open document, with filters and paging so large models do not flood the chat.
Try: “List all the curves on the Walls layer.”
Read ·
get_objectsShows details for one object
Returns an object's id, name, type, custom attributes and geometry details. You give it an id or a name.
Try: “Tell me everything about the object named "roof".”
Read ·
get_object_infoDescribes what you have selected in Rhino
Returns the same detail as the single-object lookup, but for whatever is selected right now.
Try: “Describe the objects I have selected.”
Read ·
get_selected_objects_infoSelects objects by name, color or category
Selects objects in the document using filters such as name, color or category, combined with AND or OR.
Try: “Select every red object on the Furniture layer.”
Write ·
select_objectsReads an object's name, layer and custom notes
Returns light metadata for an object plus its custom user strings.
Try: “What user strings are set on the selected object?”
Read ·
get_object_attributesEdits an object's name, layer and custom notes
Changes object metadata and custom user strings without touching its geometry.
Try: “Add a user string "material=oak" to the table.”
Write ·
update_object_attributesCreates one shape in Rhino
Creates a single object such as a point, line, box, sphere, cylinder or curve in the open document.
Try: “Draw a box 4 by 2 by 1 at the origin.”
Write ·
create_objectCreates many shapes in one go
Creates several objects in a single call, which is faster than adding them one at a time.
Try: “Create a 5 by 5 grid of spheres, 2 units apart.”
Write ·
create_objectsMoves, rotates, scales or recolors one object
Applies a transform, color or visibility change to an existing object chosen by id or name.
Try: “Rotate the selected box 90 degrees around the Z axis.”
Write ·
modify_objectEdits many objects at once
Applies color, move, rotate, scale or visibility changes to a list of objects, or to all objects at once. Its built-in help text is a copy of the create tool's.
Try: “Turn every sphere blue.”
Write ·
modify_objectsDeletes an object from the document
Removes an object from the Rhino document. It is marked destructive.
Try: “Delete the object named "temp_box".”
Delete ·
delete_objectAdds a layer
Creates a new layer in the document.
Try: “Create a layer called Glazing.”
Write ·
create_layerReads or changes the active layer
Returns the current layer, or makes another layer current when you give a name or id.
Try: “Switch to the Walls layer.”
Write ·
get_or_set_current_layerDeletes a layer
Deletes a layer by name or id. It is marked destructive.
Try: “Delete the layer called Old Drafts.”
Delete ·
delete_layerChecks objects are valid and measures them
Reports whether objects are valid and gives common measurements such as length, area, volume and bounding boxes.
Try: “Is the selected solid valid, and what is its volume?”
Read ·
analyze_objectsMeasures how two objects relate in space
Reports the spatial relationship between two objects, such as distance between them.
Try: “How far apart are the two columns?”
Read ·
measure_objectsCuts a section through objects and measures it
Cuts a plane through objects and measures each cross-section without creating anything in the document.
Try: “Cut a section at height 3 and tell me the area.”
Read ·
section_profileJoins solids into one
Combines several solid objects into a single solid.
Try: “Union the two boxes into one solid.”
Write ·
boolean_unionSubtracts solids from a base solid
Subtracts one or more objects from a base object.
Try: “Cut the cylinder out of the block.”
Write ·
boolean_differenceKeeps only the overlapping volume
Keeps just the volume where the given solids overlap.
Try: “Keep only the part where the sphere and box overlap.”
Write ·
boolean_intersectionBuilds a surface through several curves
Creates a loft surface that passes through multiple curves.
Try: “Loft a surface through these three circles.”
Write ·
loftPushes a curve into a surface or solid
Extrudes a curve along a direction vector to make a surface or a solid.
Try: “Extrude this rectangle 10 units up.”
Write ·
extrude_curveSweeps shapes along a rail curve
Sweeps one or more profile curves along a single rail curve.
Try: “Sweep this circle along the spiral curve.”
Write ·
sweep1Offsets a curve by a distance
Creates a copy of a curve offset by the distance you give.
Try: “Offset the outline 0.5 units inward.”
Write ·
offset_curveWraps a tube around a curve
Creates a pipe (tube) along a curve.
Try: “Make a pipe of radius 0.2 along this curve.”
Write ·
pipeMakes a flat face from closed boundary curves
Creates one planar face from closed curves that lie in the same plane.
Try: “Make a flat face from these closed outlines.”
Write ·
create_planar_regionProjects a curve onto surfaces or meshes
Projects a curve onto surfaces, polysurfaces or meshes.
Try: “Project this curve down onto the terrain.”
Write ·
project_curveFinds where two curves cross
Finds intersection points or overlap curves between two curves.
Try: “Where do these two curves intersect?”
Write ·
intersect_curvesCuts a curve at points or parameters
Splits a curve at parameters or points you specify.
Try: “Split this curve at its midpoint.”
Write ·
split_curveTakes a screenshot of a Rhino view
Captures a viewport as an image so the assistant can look at the model. You choose the view, size, grid and axes.
Try: “Show me the front view of the model.”
Read ·
capture_viewportRuns any Rhino command
Runs a Rhino command string and returns what the command window prints. On by default; RHINO_MCP_ENABLE_RUN_COMMAND=0 turns it off.
Try: “Run the Rhino command that joins all curves.”
Delete ·
run_commandRuns Python code inside Rhino
Runs RhinoScript Python code in the open Rhino session. On by default; RHINO_MCP_ENABLE_RHINOSCRIPT=0 turns it off.
Try: “Write a script that renames every layer in lowercase.”
Delete ·
execute_rhinoscript_python_codeRuns C# code inside Rhino
Runs RhinoCommon C# code in the open Rhino session. On by default; RHINO_MCP_ENABLE_CSHARP=0 turns it off.
Try: “Use C# to compute and print the centroid of the selected mesh.”
Delete ·
execute_rhinocommon_csharp_codeLists Rhino commands you can run
Lists the Rhino application commands available in the current session, for use with the run-command tool.
Try: “Which Rhino commands start with "Sweep"?”
Read ·
get_commandsSearches the RhinoScript function list
Searches RhinoScript functions by keyword or description.
Try: “Which RhinoScript functions work on meshes?”
Read ·
search_rhinoscript_functionsReads RhinoScript documentation
Returns RhinoScript documentation for a topic.
Try: “Show me the docs for working with layers in RhinoScript.”
Read ·
get_rhinoscript_docsLists RhinoScript modules
Lists the RhinoScript modules and how many functions each has.
Try: “What RhinoScript modules exist?”
Read ·
list_rhinoscript_modulesLists functions in one RhinoScript module
Returns every function in a RhinoScript module with its signature.
Try: “List the functions in the curve module.”
Read ·
get_module_functionsReads the bundled Rhino modeling guide
Reads a versioned Rhino modeling guide that ships with the server, by topic.
Try: “Read the modeling guidance before you start.”
Read ·
get_modeling_guidanceLists what this server can do
Lists the commands the server handles, which are read-only, and whether the plugin and server versions match.
Try: “What can this server do, and are the plugin and server versions in sync?”
Read ·
describe_capabilitiesUndoes recent Rhino steps
Undoes the last operation or several. The step count is a parameter.
Try: “Undo the last 2 operations.”
Write ·
undoRedoes undone Rhino steps
Redoes the last undone operation or several.
Try: “Redo the last step.”
Write ·
redoOpens a Grasshopper document
Creates or activates a Grasshopper document so later canvas commands have somewhere to work.
Try: “Open a new Grasshopper document.”
Write ·
gh_create_documentDescribes the active Grasshopper document
Returns information about the active Grasshopper document.
Try: “What Grasshopper file is open?”
Read ·
gh_get_document_infoSnapshots the Grasshopper canvas
Returns a structured snapshot of everything on the active canvas.
Try: “Show me what is on the canvas.”
Read ·
gh_get_canvas_stateLists parts on the canvas
Lists the components on the active Grasshopper canvas.
Try: “List every component on the canvas.”
Read ·
gh_list_componentsDetails one canvas component
Returns metadata for one object on the canvas.
Try: “Give me the inputs and outputs of the Move component I placed.”
Read ·
gh_get_component_infoFinds Grasshopper components by name
Searches the installed Grasshopper component library.
Try: “Find the component that makes a circle.”
Read ·
gh_search_componentsSearches several component names at once
Searches for several component names in one call and returns ranked matches.
Try: “Find components for Circle, Extrude and Move.”
Read ·
gh_batch_search_componentsLists component categories
Lists installed Grasshopper categories and subcategories.
Try: “What categories of components are installed?”
Read ·
gh_list_component_categoriesLists installed components
Returns the installed components, optionally filtered by category.
Try: “List the components in the Curve category.”
Read ·
gh_get_available_componentsInspects a component type before use
Returns the inputs and outputs of a component type before you place one.
Try: “What inputs does the Loft component take?”
Read ·
gh_get_component_type_infoInspects several component types
Returns the input and output maps for several component types in one call.
Try: “Show the inputs for Loft, Pipe and Extrude.”
Read ·
gh_batch_get_component_type_infoPlaces a component on the canvas
Adds a Grasshopper component to the active canvas.
Try: “Add a number slider to the canvas.”
Write ·
gh_add_componentChanges a component's name, position or state
Updates basic metadata, position, enabled state or preview state of a canvas object.
Try: “Hide the preview on the Move component.”
Write ·
gh_update_componentTidies the canvas layout
Lays out canvas objects as a left-to-right graph following the wires.
Try: “Clean up the layout of my definition.”
Write ·
gh_layout_componentsDeletes one canvas component
Deletes one Grasshopper canvas object. It is marked destructive.
Try: “Delete the unused panel.”
Delete ·
gh_delete_componentClears the Grasshopper canvas
Deletes objects from the active canvas, including groups unless you turn that off. It is marked destructive.
Try: “Clear the canvas.”
Delete ·
gh_clear_canvasWires an output to an input
Connects one output parameter to one input parameter.
Try: “Connect the slider to the radius input of the circle.”
Write ·
gh_connect_componentsRemoves a wire
Removes one wire, or all sources from a target input.
Try: “Disconnect the slider from the circle.”
Write ·
gh_disconnect_componentsSets a slider, toggle or panel value
Sets the value of a slider, toggle, panel, value list or regular input.
Try: “Set the radius slider to 5.”
Write ·
gh_set_parameter_valueReads a Grasshopper output
Reads structured data from an output parameter.
Try: “What does the Area output say?”
Read ·
gh_get_parameter_valueBuilds a whole definition in one call
Creates and wires a full graph in one batched canvas operation.
Try: “Build a point attractor pattern with cylinders.”
Write ·
gh_build_graphEdits and rewires a graph in one call
Batch edits, rewires and verifies an existing or new graph.
Try: “Change the grid to 8 by 8 and rewire the heights.”
Write ·
gh_mutate_graphInspects a graph by its id
Returns every Grasshopper object tagged with a graph id.
Try: “Show me graph "attractor-1".”
Read ·
gh_get_graphDeletes a graph by its id
Deletes all Grasshopper objects tagged with a graph id. It is marked destructive.
Try: “Remove graph "attractor-1".”
Delete ·
gh_clear_graphSolves the definition
Runs a Grasshopper solution and reports runtime warnings and errors.
Try: “Solve it and tell me about any errors.”
Write ·
gh_run_solutionForces a recompute
Expires the whole solution or selected components so they recompute.
Try: “Recompute the whole definition.”
Write ·
gh_expire_solutionScreenshots the Grasshopper preview
Captures the live Grasshopper preview in a Rhino viewport without baking it into the document.
Try: “Show me the current Grasshopper preview.”
Read ·
gh_capture_preview
Read from the source code
Permissions
high risk · 4 things to watch
High risk
The assistant can run scripts, C# code and commands inside your open Rhino session, and it can delete objects, layers and Grasshopper parts. Switch off the three code and command tools with the settings listed under the findings, and work on a copy of your file.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can run code and commands inside Rhino
Three tools run a Rhino command, RhinoScript Python or RhinoCommon C# in your open session, and all three are on by default. Set RHINO_MCP_ENABLE_RUN_COMMAND, RHINO_MCP_ENABLE_RHINOSCRIPT and RHINO_MCP_ENABLE_CSHARP to 0 in the config if you do not need them. github.com
It can delete objects, layers and canvas parts
Tools delete objects and layers, and clear Grasshopper components or whole graphs. Undo and redo tools exist, but save a copy of your file first. github.com
The link to Rhino has no password
The server and plugin talk over an unauthenticated TCP link on 127.0.0.1:1999. Keep it on the local machine, as the README says, and never expose that port. github.com
Only one server at a time
The README says to run one RhinoMCP server at a time, not one per AI app. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only switch. RHINO_MCP_ENABLE_RUN_COMMAND, RHINO_MCP_ENABLE_RHINOSCRIPT and RHINO_MCP_ENABLE_CSHARP set to 0 turn off the command, Python and C# tools, but modeling and delete tools stay. |
|---|---|
| Talks to | Local link from the server to the Rhino plugin on 127.0.0.1, port 1999 by default |
| Sign-in and keys | No account or API key. |
Questions
Is RhinoMCP official?
No. It is a community project by Jingcheng Chen, not made by McNeel, the maker of Rhino. It is MIT licensed.
Which version of Rhino does it need?
Rhino 8 on Windows or macOS. You also install the rhinomcp plugin through Rhino's Package Manager and type mcpstart in the command line once per session.
Does it need an API key or account?
No. The server talks to your local Rhino plugin and needs no sign-in.
Can it run read-only?
No. There is no read-only mode. You can turn off the command, Python and C# tools with three environment variables set to 0, but modeling and delete tools stay on.
Does it work with ChatGPT?
Not directly. ChatGPT apps connect to remote servers, not local commands like uvx rhinomcp, so the project points to Codex for local use.
Does it work with Grasshopper?
Yes. With Rhino open and mcpstart running, the assistant can open or create a Grasshopper document, place and wire components, set sliders and solve.
Can it undo what it did?
Mostly. There are undo and redo tools, but code or commands it runs can change things in ways undo may not cover, so save a copy first.
How do I add it to Claude or Cursor?
Use the install box above for your app, after installing the Rhino plugin. The server runs with uv, so install uv first.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
rhinomcp- Registry
- PyPI
- Transport
- stdio
- Auth
- None
- License
- MIT
- Last commit
- Oct 16, 2026
- Open issues
- 8
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- github.com · github.com
- github.com · github.com