Rhino MCP - RhinoAIBridge v4.8.0
The Rhino MCP server: full AI control of Rhino 8 / Rhinoceros 3D through the Model Context Protocol. Works with Claude Desktop, Claude Code, ChatGPT, Codex, Gemini and local Ollama models.
The most powerful Rhino MCP server. 117 tools (curated into lean/standard/full profiles via
RHINO_TOOLS) give Claude, ChatGPT, Codex, or Ollama full control of Rhino 8 - create geometry, manipulate layers, capture viewports, manage materials, generate architectural drawings, trace PDFs, and more. No .NET SDK required on the target machine.
Why this Rhino MCP?
There are several Rhino MCP servers; this one is built for serious, long modeling sessions:
| RhinoAIBridge | |
|---|---|
| Tools | 117 total, exposed via profiles: RHINO_TOOLS=lean (~21, for small/local models), standard (~65, default), full (everything). Pruned tools stay callable via batch. |
| Protocol | v5 multiplexed - reads, ping and cancel answer instantly while long scripts run |
| Reliability | Idempotent retries (no duplicate geometry on reconnect), atomic batches with rollback, write-ahead log crash recovery |
| Vision loop | Auto-thumbnails after every edit, multi-angle review sets, before/after pixel diffs |
| Install | Pre-built plugin - no .NET SDK needed, one-click INSTALL.bat |
If Rhino MCP saves you modeling time, please star the repo - stars are how other Rhino users find it.
For Architects - No Coding Needed
You do not need to be a programmer to use this. If you can describe a building, you can model it:
"Create a 4-storey office massing on a 30x18m footprint, taller ground floor, derive the floor slabs, add a core with two lifts and a stair, then put windows on the north facade every 3 metres."
Claude does the modeling in Rhino while you watch - and shows you what it built after every step. You can ask for:
- Massing studies - footprints, levels, setbacks, quick volume options side by side
- Floor plans and sections - cut, captured and restored without touching your viewport
- Area schedules - GFA/NFA by layer, level or name, ready to paste into a report
- Materials and views - "make the facade glass, the core concrete, show me a hero shot"
- Drawing imports - trace a PDF site plan or import a DWG and build on top of it
Setup is one double-click (INSTALL.bat) plus loading the plugin in Rhino - the Installation Guide walks through every step with no jargon. If you get stuck, ask Claude itself: "help me set up Rhino MCP".
What is this?
RhinoAIBridge is a Model Context Protocol (MCP) server that bridges any MCP-compatible AI - Claude Desktop, ChatGPT, Codex, or local Ollama models - directly into Rhino 3D (version 8). The AI can read your scene, create and modify geometry, manage layers, run scripts, capture viewport images, generate architectural drawings, manage materials, trace PDFs, and execute any Rhino command - all from a natural language conversation.
This is the fastest, most feature-complete Rhino AI integration available:
- Sub-millisecond ping with in-process scene cache (no full scene walks)
- Local authenticated TCP bridge - per-user token handshake on
127.0.0.1 - Auto-thumbnails - every mutation returns a viewport JPEG so the AI sees what it built
- Atomic batches - multi-step operations roll back as one unit on failure
- No .NET SDK required on target machines - plugin is pre-built
- 117 MCP tools across 12 categories, curated into context-friendly profiles (
RHINO_TOOLS=lean|standard|full; defaultstandard≈65 tools) - Protocol 5: multiplexed connection (reads & ping answer while long commands run), idempotent retries (no duplicate geometry on reconnect), cooperative cancellation, binary image frames, and a write-ahead log for crash recovery
Quick Install (2 minutes)
Requirements for release ZIP users: Rhino 8, Python managed by uv (auto-installed if missing), and Claude Desktop / Codex / Gemini Antigravity / another MCP client.
Build-from-source requirement: .NET 8 SDK. Release ZIP users do not need the .NET SDK.
Windows
- Download the latest release zip from Releases and unzip anywhere
- Close Rhino, then double-click
INSTALL.bat- copies the pre-built plugin, installs dependencies, and patches Claude Desktop, Codex, and Gemini Antigravity automatically - Open Rhino 8 -> type
PluginManager-> Install -> browse to:%APPDATA%\McNeel\Rhinoceros\8.0\Plug-ins\RhinoAIBridge\RhinoAIBridge.rhp(First time only - auto-loads on future starts) - In Rhino command line, type:
AIBridge, then choose Safe, Standard, or Developer mode - Restart Claude Desktop -> ask: "ping Rhino"
That is it. No Visual Studio. No .NET SDK. No manual config editing.
For a detailed walkthrough see INSTALL_GUIDE.txt.
117 MCP Tools (profiles: lean / standard / full)
Set RHINO_TOOLS=lean|standard|full in the MCP server env to control how many tools are advertised to the client (default standard, ≈65). Anything not exposed in the active profile remains callable as a batch sub-op, and the live command list is available from the rhino://capabilities resource.
Scene & Context
| Tool | What it does |
|---|---|
ping |
Liveness check - returns doc name, unit system, object count, protocol version |
query_scene |
Smart scene query: filter by type, layer, name, bbox, visibility |
get_rhino_commands |
Discover all available Rhino commands with substring filter |
get_state |
Read persistent key-value state |
set_state |
Write persistent key-value state |
clear_state |
Clear all persistent state |
Geometry Creation
| Tool | What it does |
|---|---|
create_object |
Universal create: Box, Cylinder, Sphere, Wall, Slab, Column, Roof, Curve, Point... |
derive_floors_from_mass |
Auto-generate floor slabs by intersecting a massing solid |
create_core |
Structural core punched through a massing solid |
place_openings_on_facade |
Parametric window/door placement on any brep face |
revolve_profile |
Create solids of revolution from profile curves |
get_cross_section |
Cut a section curve at any Z height |
Modify & Transform
| Tool | What it does |
|---|---|
modify_object |
Change name, layer, colour, visibility, material |
transform_objects |
Move, rotate, scale, mirror, array |
boolean_operation |
Union, difference, intersection |
delete_objects |
Delete by ID list |
align_to_grid |
Snap objects to a grid |
undo |
Undo last operation |
Layers & Organization
| Tool | What it does |
|---|---|
create_layer |
Create layer with colour |
create_layer_tree |
Create hierarchical layer structure |
setup_arch_layers |
One-call layer stack: Site, Structure, Facade, Slab, Core, Roof... |
batch_layer_visibility |
Show/hide multiple layers at once |
name_group |
Name a group of objects |
get_group |
Get group info |
get_all_groups |
List all groups |
Materials & Appearance
| Tool | What it does |
|---|---|
set_layer_material |
PBR material: color, roughness, metallic, opacity, emission |
set_pbr_material |
Full PBR material on individual objects |
search_materials |
Search AmbientCG material library |
download_material |
Download and apply materials from AmbientCG |
edit_material |
Edit existing material properties |
list_materials |
List all materials in the document |
get_material |
Get details of a specific material |
Viewport & Capture
| Tool | What it does |
|---|---|
capture_viewport |
JPEG/PNG viewport image with auto-downscale + state restore |
capture_review_set |
Hero, plan, elevation, and detail captures in one multi-image call |
compare_before_after |
Capture before, run a batch, capture after, and return visual diff metrics |
set_view |
Switch to Top/Front/Right/Perspective/named view |
set_display_mode |
Wireframe, Shaded, Rendered, Ghosted, Arctic... |
set_camera |
Position camera by location+target or zoom to bounding box |
select_objects |
Highlight objects in the Rhino viewport |
thumbnail |
Quick low-res viewport thumbnail |
Sections & Drawings
| Tool | What it does |
|---|---|
create_section |
Define a section plane |
create_elevation |
Create elevation view |
cut_section |
Generate section cut geometry |
align_view_to_section |
Orient viewport to match section |
create_plan |
Generate a plan view at a given level |
create_all_plans |
Auto-generate all floor plans |
list_sections |
List defined sections |
update_section |
Modify section parameters |
remove_section |
Delete a section |
Display Mode Engine
| Tool | What it does |
|---|---|
create_display_mode |
8 presets: diagram, technical, blueprint, sketch, axonometric, atmospheric, monochrome, cutaway |
apply_display_mode |
Apply a custom display mode |
list_display_modes |
List available display modes |
adjust_display_mode |
Fine-tune display mode parameters |
delete_display_mode |
Remove a custom display mode |
capture_illustration |
Capture viewport with illustration settings |
PDF & File Import
| Tool | What it does |
|---|---|
get_pdf_info |
PDF metadata and page count |
preview_pdf_page |
Preview a PDF page as image |
trace_pdf |
Trace PDF geometry into Rhino (vector + OCR pipeline) |
clear_trace_layers |
Remove traced PDF layers |
get_trace_layers |
List traced PDF layers |
import_dwg |
Import DWG/DXF files |
calibrate_scale |
Calibrate imported geometry scale |
export_objects |
Export objects to various formats |
Analysis & Measurement
| Tool | What it does |
|---|---|
measure_object |
Area, volume, bounding box, centroid |
measure_distance |
Distance between two points |
check_intersection |
Detect clashes between objects |
validate_objects |
Check for bad geometry / open edges |
report_areas |
Area schedule grouped by layer or type |
analyze_architecture |
Architectural analysis of the model |
get_building_systems |
Identify building systems |
get_level_summary |
Summary per floor level |
detect_design_patterns |
Detect repeated design patterns |
find_unassigned_geometry |
Find geometry not assigned to any layer category |
Design Memory & Provenance
| Tool | What it does |
|---|---|
set_design_brief |
Store design intent and constraints |
get_design_brief |
Retrieve current design brief |
tag_object |
Tag objects with metadata |
get_provenance |
Get object creation/modification history |
search_memory |
Search design memory by keyword |
get_related_objects |
Find objects related by design intent |
add_design_rule |
Add a design validation rule |
log_session |
Log a design session summary |
get_scene_diff |
Compare current scene to a previous state |
get_change_log |
Get change history |
get_tracker_version |
Get change tracker version |
Scripting & Workflow
| Tool | What it does |
|---|---|
run_command |
Execute any Rhino command string; returns new object IDs |
execute_script |
Run RhinoScript or Python code |
execute_python3 |
Run Rhino 8 CPython 3 via RhinoCode/rhinocode in Developer mode |
batch |
Send multiple operations as one atomic transaction |
batch_preview |
Preview batch operations without executing |
get_log |
Inspect bridge command log with timestamps and timing |
save_checkpoint |
Save scene checkpoint for rollback |
restore_checkpoint |
Restore scene to a saved checkpoint |
list_checkpoints |
List available checkpoints |
Connecting Different AI Providers
Claude Desktop (recommended)
The installer patches claude_desktop_config.json automatically. Just restart Claude Desktop after install.
Manual config - %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"rhino-architect": {
"command": "uv",
"args": ["--directory", "C:\\path\\to\\rhino-mcp\\server", "run", "--frozen", "rhino-architect"]
}
}
}
OpenAI Codex
INSTALL.bat option [4] writes %USERPROFILE%\.codex\config.toml automatically.
Manual config - ~/.codex/config.toml:
[mcp_servers.rhino_architect]
command = "uv"
args = ["--directory", "C:\\path\\to\\rhino-mcp\\server", "run", "--frozen", "rhino-architect"]
startup_timeout_sec = 20
tool_timeout_sec = 120
enabled = true
[mcp_servers.rhino_architect.env]
RHINO_HOST = "127.0.0.1"
RHINO_PORT = "9544"
RHINO_SAFE_MODE = "0"
Or via CLI:
codex mcp add rhino_architect --env RHINO_SAFE_MODE=0 -- uv --directory "C:\path\to\rhino-mcp\server" run --frozen rhino-architect
codex mcp list
Then in Rhino run AIBridge, and ask Codex: "ping Rhino"
Gemini Antigravity
INSTALL.bat configures %USERPROFILE%\.gemini\antigravity\mcp_config.json automatically when Antigravity is detected.
Restart Antigravity after installation, run AIBridge in Rhino, choose an access mode, and ask: "ping Rhino"
ChatGPT
chat.py is a legacy direct-TCP demo client. For the full MCP tool surface, use the MCP server with Claude, Codex, Gemini Antigravity, or another MCP-capable client.
cd server
set OPENAI_API_KEY=sk-...
uv run python chat.py --provider openai --model gpt-4o
Ollama (fully local, free)
chat.py is useful for quick local experiments, but it intentionally exposes a smaller legacy direct-TCP tool surface than the MCP server.
ollama pull qwen2.5-coder:7b
cd server
uv run python chat.py --provider ollama --model qwen2.5-coder:7b
Best local models: qwen2.5-coder:32b, deepseek-r1:32b, llama3.1:70b
Anthropic API directly
cd server
set ANTHROPIC_API_KEY=sk-ant-...
uv run python chat.py --provider anthropic --model claude-opus-4-6
Architecture
Claude Desktop / ChatGPT / Codex / Ollama
| MCP (stdio)
v
server/src/rhino_architect/server.py <- FastMCP Python server (117 tools, profile-gated)
| TCP 127.0.0.1:9544
| local auth token + [1-byte flag][4-byte len][JSON payload]
v
plugin/RhinoAIBridge.rhp <- C# Rhino 8 plugin (.NET 8)
| UI thread dispatch + deferred redraw
v
Rhino 8 Document
Wire protocol: The local bridge requires a per-user auth token before it accepts commands. Responses use raw JSON framing to avoid Rhino plugin-loader runtime dependency failures. The scene snapshot cache means repeated query_scene calls are O(1) regardless of object count.
Atomic batches: Send batch(commands=[...], atomic=true) and the entire sequence runs inside one Rhino undo record. Any failure triggers Doc.Undo() - the scene is left exactly as it was.
Auto-thumbnails: Every mutating tool captures a 240x180 JPEG after the viewport redraws and embeds it in the response. Claude sees the result immediately without a separate capture_viewport call.
Building from Source
Only needed if you want to modify the C# plugin. Target machines do NOT need the .NET SDK.
Requirements: .NET 8 SDK, Rhino 8 (for RhinoCommon)
cd plugin
dotnet build --configuration Release
Output: plugin/bin/Release/net8.0/. Copy .rhp, DLLs, JSON runtime files, and runtimes/ to the Rhino plugin folder.
Troubleshooting
"Cannot connect to Rhino" - Make sure Rhino is open and you have run the AIBridge command in Rhino's command line.
Plugin does not appear in Claude - Restart Claude Desktop after install. Check %APPDATA%\Claude\claude_desktop_config.json contains the rhino-architect server entry.
Protocol version mismatch - Run INSTALL.bat again to copy the latest plugin binary. The v4.7.6 plugin reports protocol 4.7.
uv not found - Open a new terminal after install (PATH change does not apply to the current session).
Ollama connection refused - Run ollama serve in a separate terminal before starting chat.py.
Large scenes slow - Use query_scene with filters rather than fetching everything at once. The cache handles 5000+ objects at interactive speed.
Run health check - cd server && uv run python ../scripts/doctor.py checks plugin, port, Claude Desktop, and Codex config in one pass.
Codex TOML parse error - Re-run INSTALL.bat. v4.7.6 uses inline array format that all TOML parsers accept.
Codex not seeing the server - Run codex mcp list and confirm rhino_architect is listed and enabled = true. Re-run INSTALL.bat option [4] if missing.
Changelog
v4.8.0 (current)
- Protocol 5: multiplexed connection, idempotent retries (no duplicate geometry on reconnect), cooperative cancellation, binary image frames
- 115 tools (new: cancel_operation, delete_checkpoint, get_recovery_log)
- Offscreen ViewCapture rendering, FileIO 3dm export, crash-safe checkpoint restore, write-ahead log crash recovery
- Oriented openings (diagonal walls), unit-aware defaults, whole-scene validation, columnar queries (40-60% fewer tokens)
v4.7.6
- Rhino 8 runtime compatibility - removes plugin-loader dependencies on
System.Threading.Channelsand response compression assemblies - Authenticated localhost bridge - per-user token handshake, client cap, idle timeout, and connection cleanup
- Startup access modes - run
AIBridgeand choose Safe, Standard, or Developer mode - 112 MCP tools - direct MCP images, review captures, before/after diffs, CPython 3 execution, McNeel-compatible aliases, surface primitives, SVG section/silhouette feedback, and JSON fallbacks
- Geometry correctness fixes - live transform GUIDs, planar offsets, vertical wall validation, layer full paths, and closed polyline reporting
- Clean SDK-free installer - deploys the complete pre-built .NET 8 payload and configures Claude Desktop, Codex, and Gemini Antigravity
v4.7.5
- 90 tools - up from 32 in v4.5
- 15 missing dispatch entries fixed -
set_design_brief,get_design_brief,tag_object,get_provenance,search_memory,get_related_objects,name_group,get_group,get_all_groups,add_design_rule,log_session,get_scene_diff,get_change_log,get_tracker_version, andget_design_rulesnow properly registered in the C# plugin - Double-serialization fix - 35+ tools were wrapping JSON in
json.dumps()causing clients to receive escaped strings. All tools now return native dicts - MCP tool annotations - every tool tagged with read-only, write, write-idempotent, or destructive hints for AI clients
- Codex TOML fix - inline args array format prevents parse errors on all platforms
- Protocol v4.7 baked into the pre-built plugin binary
v4.7.4
- Job system with background execution
- Force-refresh on scene queries
- 12 new architectural intelligence tools
- Installer improvements and healthcheck script
v4.7.0
- Sections & Plans:
create_section,create_elevation,cut_section,create_plan,create_all_plans - Illustration Engine:
create_display_modewith 8 presets;capture_illustration - Material Intelligence:
search_materials,download_materialwith unit-aware UV scaling - PDF Tracing:
trace_pdf(PyMuPDF pipeline, vector text at 1.0 confidence) - File Import:
import_dwg,calibrate_scale - Codex support:
scripts/patch_codex_config.py+ INSTALL.bat option [4] - Doctor script:
scripts/doctor.py- full health-check
v4.6
- Auth token + 3-tier trust modes
- Dry-run support on delete/boolean/batch
- Viewport metadata + scene query modes
- 45-test pytest suite
v4.5
- Pre-built plugin - no .NET SDK required on target machines
set_camera,get_rhino_commands,set_layer_material,run_command- Auto-thumbnails, gzip compression, atomic batch rollback
v4.0
- Scene snapshot cache - O(1) reads
- Deferred redraw and atomic batches
- Architect intelligence: massing, floors, core, facade, schedules
License
MIT - see LICENSE. Free for personal and commercial use.
Built by Tanishq Bhattad - https://github.com/tanishqbhattad
No comments yet
Be the first to share your take.