Rhino/Grasshopper LLM驱动设计工具

一个MCP服务器及Rhino/Grasshopper插件,允许LLM读取并驱动实时Rhino 8建模会话,适用于参数化设计、建筑研究和教学。

  • by GenEnv
  • HTML
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 xunliuDesign/rhino-gh-mcp

使用说明

犀牛gh-mcp

MCP服务器+Rhino/Grashopper插件,让LLM读取和驱动 实时Rhino 8建模会议——用于参数化设计、建筑 研究和教学。

📖 项目新手?从 示例工作流指南 — 从首次连接到外观研究的常见工作流程的演练。

状态:v0.2.6--犀牛8 gh_write_script 修复 (IScriptComponent.Text新 facade-design 技能(七种类型 参考食谱 .gh 文件)和 rhino-gh-bridge-basics 技能, 加上五个场景画布表面(检查/调整/指导/执行/ 作者)来自v0.2.x。通过单击安装 这个 .mcpb 桌面扩展 克劳德桌面和 牦牛包 Rhino软件包管理器。请参阅下面的快速入门。


它的作用

您安装了三件事——Python MCP服务器、Grasshopper插件和 Rhino插件——连接您最喜欢的MCP客户端(Claude Desktop,Claude 代码、游标等),然后您可以在 关于模型的自然语言: *“添加一个名为radius的滑块 范围0-50,然后用这个半径做一个圆,然后烤到 当前层”*LLM使用下面的工具来阅读你的画布,放置 以及连接Grasshopper组件,更改参数,捕获视口, 并运行Rhino命令。

v0.2通过单个控件控制AI可能接触到的内容 场景 下拉菜单 在画布组件上: 检查 (只读)→ 调谐 (参数 仅)→ 教练 (默认设置——精心策划的编辑,每个更改都突出显示)→ 执行 (仅限于主动技能声明的内容)→ 作者 (免费) 手)。这 示例工作流指南 每种模式有一章,有真实的转录提示和截图。 您可以在对话中翻转场景;它在3秒内传播。 (v0.1组件在带状结构中保持不变 rhino-gh-mcp Server (v1) 为保存 .gh 使用它的文件。)

看 docs/architecture.md 对于全貌, docs/v0.2-redesign.md 对于场景设计, 和 docs/handoff.md 对于当前的状态。


快速入门——包管理器+一次下载

面向设计师和建筑专业的学生。不 git clone,没有 uv, 不 dotnet。您需要: 犀牛8 安装, Claude 桌面版 已安装,以及 Python 3.11+ 在你的路上。大约5分钟。

步骤0--下载Claude Desktop扩展

去 GitHub最新版本 并下载:

文件 它是什么 它去了哪里
rhino-gh-mcp-X.Y.Z.mcpb 克劳德桌面扩展(捆绑Python MCP服务器) 克劳德桌面

两个Rhino插件(.yak 文件)安装 Rhino内部 通过 步骤1中的包管理器——您不需要下载它们。(他们是 如果你想离线/拖放,也可以在发布页面上 退路。)

步骤1--安装Rhino+Grasshopper插件

启动Rhino 8,运行 _PackageManager 在命令行中,搜索 犀牛gh-mcp.安装两个软件包:

  • rhinogh-mcp-grasshopper --蚱蜢帆布桥(.gha)
  • rhinogh-mcp-rhino --Rhino文档桥(.rhp)

重新启动Rhino。插件在 主控程序 中的功能区选项卡 蚱蜢。

离线/防火墙/老犀牛? 跳过包管理器:拖动每个 .yak 将最新GitHub版本的文件放到打开的Rhino 8上 窗口--相同的安装对话框,不需要网络。

步骤2——在Claude Desktop中安装Python MCP服务器

双击下载的 .mcpb.Claude Desktop打开 带有安装提示的扩展面板。确认。首次发射 pip安装了大约5个Python依赖项(大约30秒,一次性)。

扩展显示四个设置:控制级别预设 (parameter / curated / full)蚱蜢桥港口 (默认9999),Rhino网桥端口(默认9876),日志级别。

第三步——在Rhino内部架起两座桥

  1. 跑 _ToggleMcpService 在Rhino的命令行中。你应该看看 “rhino-gh-mcp:mcp服务在127.0.0.1:9876上运行”.
  2. 开放式蚱蜢(_Grasshopper).
  3. 找到 主控程序 功能区选项卡→ 服务器 群组→ 丢下 rhino-gh-mcp服务器(v2) 新画布上的组件。
  4. A. 布尔切换 (跑,跑)和a 值列表 (场景,选择Coach)显示为自动连接到左侧--翻转 切换到 真 和 Status 应该阅读 Server On 127.0.0.1:9999 | Scenario: Coach | Skill: (none).

步骤4--重新启动Claude Desktop并尝试提示

重新启动Claude Desktop,使其获取扩展名。在一次新的聊天中:

叫 gh_status 和 rhino_status 确认两座桥 活着,然后 gh_canvas_summary 和 rhino_get_scene_info 看 那里有什么。然后添加一个名为的滑块 radius 范围为0-50 默认值10,放置a Circle 从该滑块读取组件, 重新计算并捕获视口,以便我可以看到结果。

如果两个状态检查都成功并且画布上出现一个圆圈, 你完了。从这里开始 示例工作流指南 使用真实提示遍历所有五个场景——从以下内容开始 教练, 默认值。


替代快速启动——让AI从源代码安装

如果 .mcpb /上面的牦牛路径不适合你的设置——例如,你想要 破解桥接代码,或者你使用的Rhino版本没有 设置了包管理器——你仍然可以让人工智能助手来完成 完整源代码安装。你安装了一个助手应用程序,将仓库放在 磁盘,并要求AI完成其余的工作。

1.安装一个支持MCP的助手。 Claude 桌面版 (Mac或Windows)是最简单的。克劳德代码(VS代码内部)和 ChatGPT桌面应用程序的MCP支持也有效。

2.确保Rhino 8已经安装。 仅此项目 支持Rhino 8——Rhino 7无法运行。

3.将此仓库下载到稳定的位置 (例如。 Documents/rhino-gh-mcp). 没有Git的最简单方法:转到 GitHub页面 → green 代码 按钮→ 下载ZIP → 解压缩。

4.将助手指向解压缩的文件夹。

  • 克劳德桌面: 打开文件夹选择器/“添加项目”面板 选择解压缩的repo。然后,助手可以从中读取文件。
  • 克劳德代码: 在该文件夹中打开会话(claude 从一 终端在文件夹中,或用VS Code打开文件夹 克劳德扩展)。

5.粘贴下面的设置提示。 在指定位置填写您的操作系统。

请阅读 README.md 和 docs/handoff.md 在这个项目中,那么 在我的机器上安装rhinogh-mcp。我在 macOS (或:Windows). 在没有我参与的情况下尽你所能:安装Python 依赖关系 uv,建造蚱蜢 .gha 犀牛 .rhp 从源,复制 .gha 进入我的Grasshopper Libraries文件夹, 注册 .rhp 使用Rhino,并将此MCP服务器添加到我的Claude中 桌面配置,使其显示为工具源。当你完成时,告诉 我需要在Rhino中手动执行哪些步骤(例如启动 监听器,放下画布组件,重新启动助手)。

助理会跑 uv sync,使用构建这两个插件 dotnet build,将每个插件复制到其操作系统特定的安装路径,注册 通过Rhino的设置文件安装Rhino插件,并编辑您的MCP配置。然后 它会告诉你只有你能做的一小部分事情——和 两个步骤中的第3步和第4步单击上面的快速开始。

如果出现任何问题,请将助手的错误消息粘贴回去 并将其指向 故障排除 和 安装 下面的部分。


先决条件

  • 犀牛8 (Mac或Windows)。犀牛7 不 支持——我们依赖 犀牛8。NET 7运行时。
  • Python 3.11或3.12.
  • uv Python环境+运行。
    • 窗户: winget install --id=astral-sh.uv
    • 雨衣: brew install uv (或 curl -LsSf https://astral.sh/uv/install.sh | sh)
  • .NET 7+SDK (用于从源代码构建C#插件)。
    • 窗户: winget install Microsoft.DotNet.SDK.8
    • 雨衣: brew install --cask dotnet-sdk
  • Git 用于克隆。
  • MCP客户端。 克劳德桌面、克劳德代码或光标都可以工作。

安装——如果您具备先决条件,则需要5分钟

1.克隆

git clone https://github.com/GenEnv/rhino-gh-mcp.git
cd rhino-gh-mcp

2.设置Python服务器

cd server
uv sync           # creates .venv, installs deps + dev deps
uv run pytest -q  # 27 tests should pass — sanity check
cd ..

3.构建+安装Grasshopper插件

窗户:

cd plugins\grasshopper
.\reinstall.ps1

雨衣:

cd plugins/grasshopper
./reinstall.sh

两个脚本:如果运行,强制退出Rhino→ dotnet build -c Release → 复制结果 .gha 给你的蚱蜢 Libraries 文件夹。 首次使用PowerShell的用户可能需要运行 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 一次。

4.构建并安装Rhino插件

# Windows
cd plugins\rhino
.\reinstall.ps1
# Mac
cd plugins/rhino
./reinstall.sh

仅限第一次: Rhino之前需要明确注册 _ToggleMcpService 成为公认的命令。

  • 窗户: 拖动已建 .rhp (脚本打印绝对值 路径)进入Rhino的主窗口——Rhino将提示加载和信任 插件。首次注册后,后续重建 自动更新到位。
  • 雨衣: 拖动到窗口路径在Rhino 8 macOS上不可靠-- 放入视口中会将文件作为三维几何体打开 插件管理器对话框没有安装按钮。可靠的路径是 (a)把 .rhp 在 ~/Library/Application Support/McNeel/Rhinoceros/8.0/Plug-ins/RhinoGhMcpRhino (3f88bb55-3368-4204-9d0a-55911c9349ee)/RhinoGhMcpRhino.rhp 以及(b)在 <child key="PlugInRegistry"><child key="6"> 块 ~/Library/Application Support/McNeel/Rhinoceros/8.0/settings/settings-Scheme__Default.xml (与 LoadMode=1, IsDotNETPlugIn=True,以及 FileName 指着 上面的绝对路径)。Quick中描述的AI安装路径 上面的开始为你做了这两件事。

5.连接客户端

Claude 代码 --已得到项目范围的支持 .mcp.json 在repo根目录中。启动Claude Code会话 在repo目录中,批准信任提示。这 rhino-gh 服务器将在该会话中可用。

Claude 桌面版 --添加一个 mcpServers 阻止您的配置文件:

{
  "mcpServers": {
    "rhino-gh": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/rhino-gh-mcp/server",
        "run",
        "rhino-gh-mcp",
        "--policy",
        "curated"
      ]
    }
  }
}

在Mac上, uv 应该是绝对路径(/Users/<you>/.local/bin/uv 或类似)——GUI应用程序并不总是继承你的shell PATH.

配置文件的位置取决于您安装的Claude版本:

构建 Mac Windows
克劳德桌面(经典) ~/Library/Application Support/Claude/claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json
统一的Anthropic-Claude应用程序(与Cowork/Claude Code集成) ~/Library/Application Support/Claude-3p/claude_desktop_config.json %APPDATA%\Claude-3p\claude_desktop_config.json

如果两个目录都存在,请使用 Claude-3p 一个 plain中的首选项文件 Claude/ 由应用程序重写 将删除未知密钥。编辑后重新启动助手。

游标/其他客户端 --将它们指向与相同的命令和参数 上面的克劳德桌面块。

6.在Rhino中架起两座桥

  1. 启动Rhino 8。
  2. 在Rhino的命令行中,键入 _ToggleMcpService 然后按Enter键。 你应该看看 “rhino-gh-mcp:mcp服务在127.0.0.1:9876上运行”.
  3. 开放式蚱蜢(_Grasshopper).
  4. 在蚱蜢带中,找到 主控程序 tab → 服务器 群组→ 丢下 rhino-gh-mcp服务器(v1) 将组件放在新画布上。
  5. 在组件上单击鼠标右键 Run 输入→ 将持久数据设置为 True (或将布尔切换设置为True)。这 Status 输出应 说 Server On 127.0.0.1:9999.

7.从终端进行烟雾测试(可选但推荐)

cd server
uv run python ../examples/smoke_test_bridge.py       # GH bridge
uv run python ../examples/smoke_test_rhino.py        # Rhino bridge
uv run python ../examples/verify_capability_gate.py  # the canvas flags

如果这些通过,您的MCP客户端也应该能够与网桥通信。


使用它

在与MCP客户的新聊天中,对其进行一次设置:

You have access to a Rhino 8 + Grasshopper session through the rhino-gh
MCP server. Before doing anything, call gh_status and rhino_status to
verify both bridges are up, then gh_canvas_summary and
rhino_get_scene_info to see what's there. Work in small steps; recompute
and capture the viewport between meaningful changes.

然后用通俗易懂的语言描述你想要什么——LLM会选择 正确的工具。这 示例工作流指南 有八个工作会话(包括提示、截图和观察运行 时间)从婴儿床。

有关指导工作流程(技能),请参阅 技能/README.md. 第一方技能:

  • landform --通过捆绑的MCP景观实现参数化地形 用户对象。
  • ladybug-environmental --使用瓢虫进行环境分析 工具(太阳路径、日照时数、风向)。需要瓢虫 安装Grasshopper插件。
  • facade-design --食谱第一代立面:七种类型 食谱(百叶窗、斜板、折叠、动态、镶板、, 穿孔吸引子(voronoi) .gh 文件夹。
  • rhino-gh-bridge-basics --桥梁弯道接地 宿主几何体摄取图案。

存储库布局

rhino-gh-mcp/
├── server/                          # Python MCP server (uv project)
│   ├── src/rhino_gh_mcp/
│   │   ├── server.py                # FastMCP app + lifespan
│   │   ├── config.py                # CLI + policy presets
│   │   ├── capabilities.py          # Soft capability gate (v0.1.5+)
│   │   ├── bridges/                 # HTTP→GH, TCP→Rhino
│   │   ├── policies/                # Legacy shim (back-compat)
│   │   └── tools/                   # Tool implementations
│   ├── tests/                       # pytest (no Rhino required)
│   └── pyproject.toml
├── plugins/
│   ├── grasshopper/                 # .gha (C# / net7.0 + net7.0-windows)
│   └── rhino/                       # .rhp (C# / net7.0)
├── examples/                        # Bridge-level smoke + verify scripts
├── skills/                          # Anthropic Agent Skills bundles
│   ├── landform/
│   ├── ladybug-environmental/
│   ├── facade-design/
│   └── rhino-gh-bridge-basics/
├── mcpb/                            # .mcpb / .dxt Desktop Extension source
│   ├── manifest.json                # MCPB v0.3 manifest
│   ├── bootstrap.py                 # First-launch dep installer
│   └── requirements.txt             # Server runtime deps
├── scripts/
│   ├── build-mcpb.sh                # → dist/rhino-gh-mcp-<v>.mcpb
│   ├── build-yak.sh                 # → dist/rhinogh-mcp-*-<v>-*.yak
│   └── sync.{sh,ps1}                # One-shot dev sync after pulling
├── dist/                            # Built install packages (.mcpb + .yak)
├── docs/
│   ├── architecture.md
│   ├── handoff.md                   # Status + session log
│   ├── packaging-status.md          # .mcpb + Yak release status / next steps
│   ├── performance-notes.md
│   └── generalization.md
└── .mcp.json                        # Project-scoped Claude Code MCP config

故障排除

“蚱蜢桥无法到达http://127.0.0.1:9999" MCP服务器组件未在GH画布上运行(无画布 打开,或 Run 是假的)。在新画布上放置一个,并设置Run=True。

“127.0.0.1:9876时无法到达犀牛桥” 你还没跑 _ToggleMcpService 启动Rhino后,或者你跑了 它响了两次,把听众关掉了。

“canvas拒绝功能:设置 AllowScripting 输入。.." 按预期工作——LLM要求的是一种关闭的能力 你的画布。要么翻转组件上的开关,要么告诉LLM 使用特权较低的路径。

工具无返回/挂起 检查 gh_get_runtime_messages 在相关组件上。大多数失败 接线问题(输入名称错误)是否会表现为运行时错误,但 也不例外。

Windows上的PowerShell“无法加载脚本” 一次性修复: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned.

uv sync 不安装pytest 确保你在 uv ≥ 0.5 所以这 [dependency-groups] 桌子是 荣幸的。旧版本需要 uv sync --extra dev.


路线图

阶段 状态 范围
P0 ✅ 干净的骨架,FastMCP服务器,所有15个GH命令都已移植, .gha 构建Mac+Windows
第1页 ✅ 犀牛 .rhp 在Windows+Mac上通过干净的雕刻、视口捕获和烟雾测试
第2页 ✅ 软功能门,帆布侧控制,第一技能(landform)
第3页 ⏳ Rhino 8脚本组件注入(将Python 3+C#注入到现代脚本组件中)
第4页 🟡 表面扩展--完成:list_toggles/value_lists、canvas_summary、find_components、set_toggle、select_value_list、list_blocks、set_view。剩余:bake_to_rhino、group_components、measure_distance
第5页 🟡 技能库——已完成:地形、瓢虫环境(草图)、立面设计、犀牛桥基础知识。规划:体量、结构网格、采光
第6页 ⏳ 流式HTTP传输+精简的web前端
P7 ✅ .mcpb 桌面扩展+Yak包——请参阅 scripts/build-mcpb.sh, scripts/build-yak.sh, docs/packaging-status.md
第8页 ⏳ 面向学生的教学包

许可证

麻省理工学院——见 许可证.


贡献

欢迎拉取请求,特别是:

  • 架构工作流的新技能(请参见 技能/README.md 格式)。
  • 针对特定Rhino 8版本的Bug报告(粘贴 rhino_version 来自 rhino_status).
  • 您希望存在的命令形状的桥处理程序。