Skip to main content
Glama

πŸš€ Grasshopper MCP - AI-Powered Computational Design Assistant

An MCP (Model Context Protocol) server that brings AI capabilities directly into Rhino/Grasshopper workflows, featuring ML-based automatic layout optimization - a capability not found in any other publicly available tool.

Version Status License: MIT Python 3.10+

🎯 What Makes This Different?

Unlike basic Grasshopper-to-LLM connectors that only generate code, this tool includes:

🧠 ML-Based Auto Layout (Industry First)

  • DBSCAN clustering for automatic component grouping

  • K-means clustering for fixed group counts

  • User pattern learning with persistent preferences

  • K-NN position prediction for optimal new component placement

  • Wire crossing minimization algorithm

πŸŽ“ AI Mentoring System

  • Performance prediction: Estimates optimization impact (e.g., "15-30% improvement expected")

  • Pattern detection: Identifies inefficient patterns and suggests better alternatives

  • Auto-grouping: Analyzes wire connectivity to suggest logical component groups

  • Layout anomaly detection: Finds isolated, overlapping, or misaligned components

πŸ”Œ Live Rhino Integration

  • Real-time connection to running Rhino/Grasshopper instances

  • Execute Python code remotely in Rhino

  • Get canvas state and trigger solves

  • No file-based workflow required

πŸ“‹ Features Overview

Category

Features

Rhino Bridge

Live connection, remote Python execution, canvas state

GH File Ops

Parse .gh/.ghx files, analyze structure, extract components

Component Library

Searchable database of 500+ GH components

Code Generation

GHPython and C# script templates

AI Mentoring

Performance prediction, alternatives, auto-grouping

ML Layout

Clustering, position prediction, crossing minimization

πŸ› οΈ Installation

git clone https://github.com/dongwoosuk/grasshopper-mcp.git cd grasshopper-mcp python -m venv .venv .venv\Scripts\activate # Windows pip install -e .

βš™οΈ Configuration

Add to your claude_desktop_config.json:

{ "mcpServers": { "grasshopper": { "command": "path/to/grasshopper_mcp/.venv/Scripts/python.exe", "args": ["-m", "grasshopper_mcp"], "cwd": "path/to/grasshopper_mcp" } } }

πŸ”Œ Live Rhino Connection (Optional)

To enable real-time Rhino/Grasshopper control:

  1. Open Rhino 7 or 8

  2. Run EditPythonScript command

  3. Open and run rhino_listener/rhino_bridge_listener.py

  4. You'll see: Rhino Bridge Listener started on localhost:8080

πŸ“š Available Tools

Rhino Bridge (requires listener)

Tool

Description

rhino_status

Check connection status

rhino_execute_python

Execute Python in Rhino

gh_canvas_state

Get current canvas state

gh_load_definition

Load a .gh file

gh_solve

Trigger recompute

AI Mentoring Tools

Tool

Description

predict_performance

Predict optimization impact

suggest_alternatives

Detect patterns, suggest better approaches

auto_group

Analyze connectivity, suggest groupings

ml_layout_analysis

ML clustering analysis

predict_component_position

K-NN based position prediction

Pattern Detection Examples

The suggest_alternatives tool detects these inefficient patterns:

Pattern

Better Alternative

Multiple Move components

Single Transform Matrix

Flatten + Graft sequence

Path Mapper

Python loops for geometry

Native GH components

Serial Boolean operations

Batch Boolean

Expression for simple math

Native Math components

πŸ—οΈ Architecture

grasshopper_mcp/ β”œβ”€β”€ grasshopper_mcp/ β”‚ β”œβ”€β”€ bridge.py # Main MCP server β”‚ β”œβ”€β”€ rhino_bridge.py # TCP client to Rhino β”‚ β”œβ”€β”€ gh_file_ops.py # .gh/.ghx parsing β”‚ β”œβ”€β”€ component_library.py # Component database β”‚ β”œβ”€β”€ code_generator.py # Code templates β”‚ └── mentoring/ β”‚ β”œβ”€β”€ ml_layout_learner.py # DBSCAN/K-means β”‚ β”œβ”€β”€ advanced_layout_learner.py # Advanced learning β”‚ β”œβ”€β”€ persistent_layout_learner.py # User patterns β”‚ β”œβ”€β”€ performance_predictor.py # Optimization prediction β”‚ β”œβ”€β”€ alternative_suggester.py # Pattern detection β”‚ β”œβ”€β”€ auto_grouper.py # Wire-based grouping β”‚ β”œβ”€β”€ wire_crossing_detector.py # Crossing detection β”‚ └── crossing_minimizer.py # Layout optimization β”œβ”€β”€ rhino_listener/ β”‚ └── rhino_bridge_listener.py # Run IN Rhino └── pyproject.toml

πŸ€– ML Layout System Details

How It Works

  1. Feature Extraction: Analyzes component positions, types, and connections

  2. Clustering: Groups components using DBSCAN or K-means

  3. Pattern Learning: Stores user preferences in layout_preferences.json

  4. Position Prediction: Uses K-NN to suggest optimal positions for new components

  5. Anomaly Detection: Identifies layout issues (isolated nodes, overlaps, wrong flow direction)

Supported Analyses

# Example: ML clustering analysis result = ml_layout_analysis(gh_file_path, method="dbscan") # Returns: clusters, anomalies, optimization suggestions # Example: Position prediction result = predict_component_position(gh_file_path, "Panel", near_component="Slider") # Returns: predicted X, Y coordinates based on learned patterns

🎯 Use Cases

  • Design Automation: Let AI handle repetitive Grasshopper tasks

  • Code Review: Get suggestions for optimizing definitions

  • Learning: AI mentoring for Grasshopper best practices

  • Layout Cleanup: Automatic organization of messy definitions

  • Team Standards: Consistent component arrangement across projects

πŸ“„ License

MIT License - see LICENSE file.

πŸ™ Acknowledgments

  • Built on the Model Context Protocol by Anthropic

  • Grasshopper by David Rutten / McNeel

  • scikit-learn for ML algorithms

πŸ“¬ Contact

Dongwoo Suk - Computational Design Specialist

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/dongwoosuk/grasshopper-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server