Skip to main content

Sand Martin

Sand Martin is an MCP (Model Context Protocol) server that enables real-time orchestration of the Grasshopper canvas within Rhino. It allows Large Language Models (like Claude) to create components, inject Python code, and wire nodes together directly in a live Grasshopper session.

Demo

1. Authenticate with the Agent

Sand Martin Auth

2. Update Slider Values

Update Slider

3. Inject and Run Code

Update Code

Architecture

Sand Martin uses a Client-Server model:

  1. SandMartin.Host (C#): A Grasshopper plugin (.gha) that runs an internal HTTP server inside the Rhino process. It has direct access to the Grasshopper.Kernel API.
  2. Sand Martin Bridge (Python): A lightweight MCP server that translates LLM requests into commands for the Host server.

Getting Started

1. Requirements

  • Rhino 8 (macOS/Windows)
  • .NET SDK 6.0+ (for building the Host)
  • Python 3.10+

2. Install the Python Bridge

You can install the Sand Martin bridge directly from PyPI:

pip install sand-martin

3. Install the Rhino/Grasshopper Plugin

  1. Download the latest release from Food4Rhino.
  2. In Grasshopper, go to File > Special Folders > Components Folder.
  3. Place the downloaded .gha file (and any accompanying .dll files) into that folder.
  4. Restart Rhino.

Option B: Build from Source

From the root directory, open sand-martin.sln in your IDE (Visual Studio or Rider) and build the SandMartin.Host project. Copy the resulting .gha file to your Grasshopper components folder.

Configuration for Claude Desktop

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "sand-martin": {
      "command": "python",
      "args": ["/PATH/TO/YOUR/sand-martin/src/sand_martin/server.py"]
    }
  }
}

Note: Replace /PATH/TO/YOUR/ with the actual absolute path to this repository.

Usage

  1. Start Rhino and open Grasshopper.
  2. Start the Server: Drag the "Sand Martin Server" component onto the canvas and set the Run toggle to True.
  3. Authenticate the Agent:
    • Auto-Discovery (Default): The Python bridge automatically reads the security token from your system's temporary directory. No manual setup is usually required!
    • Manual Fallback: If auto-discovery fails, a unique token is printed to the Rhino Command Line.
    • Agent Behavior: If the agent cannot find the token, it will explicitly ask you to copy it from the Rhino Command History (look for "SAND MARTIN SECURITY TOKEN"). You can then paste it directly into the chat.
  4. Orchestrate: You can now ask Claude to:
    • "Create a Python component that calculates a Fibonacci sequence."
    • "Connect a Slider to the input of my component."
    • "Show me the current state of my canvas."

Security

Sand Martin includes built-in security features to protect your environment:

  • Auth Token: A unique token is generated every time the server starts. You must set this in your environment as SAND_MARTIN_TOKEN.
  • Code Gating: You can disable code injection at any time by setting AllowCodeInjection to False on the Grasshopper component.
  • Localhost Only: The server only accepts connections from 127.0.0.1.

See SECURITY.md for more details.

⚠️ Warning: Always set the Run toggle to False on the Sand Martin component when not in use.

Project Structure

  • src/SandMartin.Host/: C# source for the Grasshopper plugin.
  • src/sand_martin/: Python source for the MCP server.
  • sand-martin.sln: Visual Studio Solution file.
  • pyproject.toml: Python project configuration.

License

This project is licensed under the Apache License 2.0.

Release files for sand-martin 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sand-martin 0.5.0
File Size Uploaded
sand_martin-0.5.0.tar.gz 2.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for sand-martin 0.5.0
File Interpreter ABI Platform
sand_martin-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.2 MB

Release files / sand_martin-0.5.0.tar.gz

Download URL sand_martin-0.5.0.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
1df2f80135bb4ade539b29e376a2b2ada0e83e36304afc7cc65fe9cf1a0bd0d2
BLAKE2b-256 checksum
How to use checksums
6953f3283457f5817f91659ceadd69f68b55e4870896f17fdaa88c6d49d2b818
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 26, 2026.

Transparency log

Release files / sand_martin-0.5.0-py3-none-any.whl

Download URL sand_martin-0.5.0-py3-none-any.whl
Size 14.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc500b9c4348e1db3e00244333afe31b1cf75e6588474fa45449aae994b6d80b
BLAKE2b-256 checksum
How to use checksums
5e8913eb86e27d927f058b74715953a24dd3b40df02a3c9b06f809a544c408c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.1

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page