RhinoMCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RhinoMCPCreate a loft surface through the selected curves."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RhinoMCP: an MCP Server for Rhino 3D
105 tools for AI-driven 3D modeling, analysis, diagnostics, and Grasshopper integration via the Model Context Protocol.
RhinoMCP connects Claude to Rhino 3D through a comprehensive set of tools covering everything from basic primitives to advanced surface modeling (loft, sweep, revolve), boolean operations, mesh diagnostics, block management, and parametric design with Grasshopper.
Architecture
┌────────────────┐ stdio ┌──────────────┐ TCP/JSON ┌──────────────┐
│ Claude Desktop │◄──────────►│ rhino_mcp │◄─────────────►│ Rhino 3D │
│ │ (MCP) │ (Python) │ localhost: │ listener.py │
│ │ │ server.py │ 9876 │ (inside │
└────────────────┘ └──────────────┘ │ Rhino) │
└──────────────┘MCP Server (rhino_mcp/). Python package using FastMCP. Communicates with Claude via stdio and with Rhino via TCP.
Rhino Listener (rhino/listener.py). Python script that runs inside Rhino. Opens a TCP server, receives JSON commands, executes them using RhinoCommon/rhinoscriptsyntax, and returns results.
Related MCP server: Grasshopper MCP
Capabilities
Geometry Creation (21 tools)
Tool | Description |
| Single or batch point creation |
| Lines and polylines |
| Interpolated NURBS curves |
| Circular geometry |
| Rectangular polylines |
| Solid primitives |
| Extrude and pipe along curves |
| NURBS surfaces and meshes |
| Text dots |
| Loft surfaces through cross-sections |
| Single and two-rail sweeps |
| Revolve profiles around an axis |
| Planar and patch surfaces |
Transforms (8 tools)
move, rotate, scale, scale_non_uniform, mirror, copy, array_linear, array_polar
Boolean Operations (3 tools)
boolean_union, boolean_difference, boolean_intersection
Modification (18 tools)
Tool | Description |
| Basic modifications |
| Grouping |
| Join and explode geometry |
| Trim and split curves |
| Offset geometry |
| Edge treatments |
| Cap open breps |
| Curve editing |
| Project curves onto surfaces |
| Extract edges/borders |
Blocks & Instances (4 tools)
create_block, insert_block, list_blocks, explode_block
User Data (2 tools)
set_user_text, get_user_text: store metadata, BIM data, costs, etc.
Layers (6 tools)
list_layers, create_layer, delete_layer, set_layer_color, set_layer_visibility, set_current_layer
Materials (3 tools)
list_materials, create_material, assign_material
Analysis (10 tools)
Tool | Description |
| Measurements |
| Spatial queries |
| Find intersections between objects |
| Curvature analysis |
| Point containment tests |
Diagnostics (4 tools)
Tool | Description |
| Check validity, find bad geometry |
| Find gaps in surfaces |
| Mesh quality analysis |
| Fix mesh issues automatically |
View (5 tools)
zoom_extents, set_view, capture_view (with base64 option), list_views, set_display_mode
Grasshopper (3 tools)
gh_run_script, gh_set_slider, gh_get_outputs
Code Execution (2 tools)
run_python, run_command: full access to rhinoscriptsyntax and RhinoCommon
Undo/Redo (2 tools)
undo, redo
Scene (4 tools)
scene_info, get_objects, get_object (detailed with edge info), select_objects
Import/Export (2 tools)
export (.3dm, .obj, .stl, .step, .iges, .fbx), import_file
Bold = new in v2.0
Prerequisites
Rhino 7 or 8 (Windows or Mac)
Python 3.10+
uv package manager (install)
Installation
1. Clone and install
git clone https://github.com/kbangaru-cyber/rhino-mcp.git
cd Rhino_MCP
uv sync2. Start the Rhino listener
In Rhino:
Go to Tools > PythonScript > Run
Select
rhino/listener.pyYou should see:
============================================================
RhinoMCP Listener v2.0.0
Listening on 127.0.0.1:9876
Registered handlers: 90
Ready for MCP connection (Claude)
============================================================3. Configure Claude Desktop
Claude Desktop
Edit claude_desktop_config.json:
{
"mcpServers": {
"rhino": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/Rhino_MCP", "run", "rhino-mcp"],
"env": {
"RHINO_MCP_HOST": "127.0.0.1",
"RHINO_MCP_PORT": "9876",
"RHINO_MCP_TIMEOUT": "30"
}
}
}
}Usage Examples
Create a simple building form
"Create a 10x8x4 meter box for the building volume, then add a cylinder of radius 2 and height 6 at the center for a tower. Union them together and fillet all edges with radius 0.3."
Diagnose model problems
"Check all objects in the scene for problems. Find any naked edges and tell me what needs fixing."
Parametric design
"Create a vase shape by making a profile curve and revolving it. Then create a polar array of decorative cylinders around it."
Built-in Prompts
RhinoMCP includes guided workflow prompts:
model-from-description: structured workflow for creating 3D models from text descriptionsdiagnose-model: systematic approach to finding and fixing model problemsparametric-design: guide for Grasshopper/parametric workflows
Resources
The server exposes live data as MCP resources:
URI | Description |
| Current scene overview |
| Layer tree |
| Material list |
| Block definitions |
Configuration
Environment Variable | Default | Description |
|
| Rhino listener host |
|
| Rhino listener port |
|
| Command timeout (seconds) |
Development
# Install dev dependencies
uv sync --extra dev
# Run tests (no Rhino needed)
uv run pytest -v
# Lint
uv run ruff check .
# Type check
uv run mypy rhino_mcpIntegration testing
With Rhino running and the listener active:
uv run pytest -v -m integrationProtocol
Commands are JSON objects sent over TCP (newline-delimited):
{"id": "abc123", "action": "create_sphere", "params": {"center": [0,0,0], "radius": 5}}Responses:
{"id": "abc123", "ok": true, "result": {"guid": "d3e4f5..."}}Thread Safety
The Rhino listener uses Rhino.RhinoApp.InvokeOnUiThread() on Rhino 8+ to ensure all geometry operations run on the UI thread. On Rhino 7, operations execute directly (which is safe for single-client connections).
License
MIT. See LICENSE.
Author
Karthick Raja B G, portfolio · GitHub
Related work: SPIDER, a Grasshopper plugin for computational geometry and spatial analysis.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects Rhino3D to Claude AI via the Model Context Protocol, enabling AI-assisted 3D modeling and design workflows through direct control of Rhino's functionality.12
- AlicenseNot gradedqualityCmaintenanceEnables AI-powered computational design in Rhino/Grasshopper with ML-based automatic layout optimization, component clustering, performance prediction, and real-time code execution in running Rhino instances.16MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Autodesk Revit to query project data, manage elements, and execute generated code via the Model Context Protocol. It provides full compatibility with GitHub Copilot and Claude to automate BIM modeling workflows.1391MIT
- AlicenseNot gradedqualityBmaintenanceGOLEM-3DMCP implements the Model Context Protocol to give AI agents direct, programmatic control of Rhino 8 — create geometry, run booleans, drive Grasshopper, capture viewports, and execute arbitrary Python scripts, all through natural language. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible host.12MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
Free OpenAI-compatible inference with signed provenance receipts and 3 focused MCP tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kbangaru-cyber/Rhino-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server