mcpField
R
Rhino

Rhino

本地服务
github.com/jingcheng-chen媒体与设计1.2k2 周前更新

关于 Rhino

RhinoMCP 将 Rhino 3D 与 Grasshopper 连接到 AI 助手,使用户可以通过自然语言建模、读取文档并构建 Grasshopper 定义。目标平台为 Rhino 8 的 Windows 和 macOS。

主要功能

  1. 01自然语言建模与几何创建
  2. 02读取文档与视口截图
  3. 03编写与连接 Grasshopper 组件
  4. 04运行 Rhino 命令与脚本
  5. 05按名称、颜色或类别筛选对象

适用场景

  1. 01通过对话批量创建或修改 Rhino 几何体
  2. 02根据视口截图获取可视化反馈
  3. 03用自然语言搭建 Grasshopper 参数化定义

MCP 相关

该项目是一个 MCP 服务,通过 Python 服务端向 MCP 客户端暴露 Rhino 与 Grasshopper 的工具,并经 TCP 连接到 Rhino 插件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"rhinomcp": {
"command": "uvx",
"args": [
"rhinomcp"
]
}
}
}
启动命令uvx rhinomcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypirhinomcp

工具

70

收录的工具列表 · 更新于 2 周前

参数类型必填说明
curve_idsarray是
nameany否
closedboolean否
loft_typeinteger否

详细介绍

RhinoMCP 徽标

RhinoMCP

用自然语言通过 AI 控制 Rhino 3D 和 Grasshopper。

RhinoMCP 通过模型上下文协议将 Rhino 连接到 AI Agent, 让 Claude 和 Cursor 等助手只需通过聊天,就能为你创建几何体、读取文档并构建 Grasshopper 定义。

PyPI Rhino 8 Python 3.10+ MCP License: MIT

快速开始 · 功能介绍 · 使用方法 · 示例 · 工具参考

English · 简体中文


亮点

如需开展自主改进实验,请先阅读 后续指南。

  • 描述你的需求,助手就会在 Rhino 中为你创建。
  • 它会读取你的文档并截取视口,因此能根据屏幕上实际显示的内容进行操作。
  • 它会为你编写 Grasshopper 脚本:查找组件、连接组件、设置滑块并求解。
  • 一个插件和一条配置项即可同时支持 Rhino 和 Grasshopper。
  • 需要更多控制时,它可以运行原生 Rhino 命令、RhinoScript-Python 或 RhinoCommon C#。

说明

RhinoMCP 面向 Windows 和 macOS 上的 Rhino 8。

演示

双向交互演示

双向交互: AI 既能创建几何体,也能读取几何体。

自定义脚本演示

自定义脚本: AI 在 Rhino 中编写并运行脚本。

想看完整介绍?Nate 制作了演示视频和安装教程。

功能介绍

犀牛 Rhino
区域AI 可以做什么
创建几何体创建点、直线、折线、圆、圆弧、椭圆、曲线、长方体、球体、圆锥体、圆柱体和曲面,支持逐个创建或批量创建
变换和编辑移动、旋转、缩放、重新着色、重命名和删除对象
高级建模放样、拉伸、扫掠、偏移、管状化;布尔并集、差集和交集
曲线操作投影、求交和拆分曲线
图层和属性创建、删除和切换图层;读取和写入对象属性
检查和选择查看文档摘要和对象信息,并按名称、颜色或类别筛选对象(支持 AND / OR 逻辑)
查看模型捕获视口画面,让 AI 获得视觉反馈
分析测量长度、面积、体积、边界框等
深入探索运行任意 Rhino 命令、执行 RhinoScript-Python 或运行 RhinoCommon C#,并内置 RhinoScript 文档查询功能
蚱蜢 Grasshopper
区域AI 可以做什么
查找组件搜索已安装的组件库,并在放置组件前查看其输入和输出
构建画布添加、定位、排列、更新和删除组件
连接组件在组件之间连接和断开参数
设置和读取值控制滑块、开关、面板和值列表;读取输出中的结构化数据
求解运行求解并显示运行时警告和错误
一次构建完成通过单次批量操作构建并连接整个图,或修改现有图

快速开始

分为三个步骤:安装 Rhino 插件、连接 AI 客户端,然后在 Rhino 中启动桥接程序。

1. 安装 Rhino 插件

在 Rhino 中打开 工具 → 包管理器,搜索 rhinomcp,然后点击 安装。重启 Rhino。

2. 连接 AI 客户端
选项 A:让 AI 助手为你安装(推荐)

如果你使用 Agent 式助手(Codex、Claude Code、Cursor、Cline 等),请粘贴此提示词:

Please install https://github.com/jingcheng-chen/rhinomcp as a local MCP server named `rhino`.
选项 B:安装 MCP 服务或手动编辑配置

Codex,一条命令:

codex mcp add rhino --env RHINO_MCP_HOST=127.0.0.1 -- uvx rhinomcp@latest

Claude Code,一条命令:

claude mcp add rhino -- uvx rhinomcp@latest

**ChatGPT:**使用上面的 Codex 本地设置。ChatGPT 应用/MCP 连接器目前连接的是远程 MCP 服务,而非 uvx rhinomcp 这类本地 stdio 命令。如果想围绕 RhinoMCP 构建 ChatGPT 应用,请使用 ChatGPT 开发者模式,并配置远程或隧道 MCP 端点。

你也可以手动编辑配置:

{
  "mcpServers": {
    "rhino": {
      "command": "uvx",
      "args": ["rhinomcp@latest"],
      "env": {
        "RHINO_MCP_HOST": "127.0.0.1"
      }
    }
  }
}

重要

启动器 uvx 来自 uv。如果尚未安装: macOS brew install uv · Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

每次只运行一个 RhinoMCP 服务(Codex、Claude、Cursor 等,不能同时运行多个)。

让 AI 客户端自动重启服务(可选)

每次客户端启动时,清理残留的 rhinomcp 进程:

macOS / Linux

{
  "mcpServers": {
    "rhino": {
      "command": "sh",
      "args": ["-c", "killall rhinomcp 2>/dev/null; uvx rhinomcp@latest"]
    }
  }
}

Windows

{
  "mcpServers": {
    "rhino": {
      "command": "cmd",
      "args": ["/c", "taskkill /F /IM rhinomcp.exe 2>nul & uvx rhinomcp@latest"]
    }
  }
}
3. 启动 Rhino 桥接

打开 Rhino 后,在命令行中输入 mcpstart。这会启动服务连接所需的 TCP 桥接(运行 mcpstop 可停止)。每次 Rhino 会话运行一次即可。

保持最新

RhinoMCP 包含三个分别更新的部分:

  • Python 服务。 uvx rhinomcp@latest 会在客户端每次启动服务时向 PyPI 查询最新版本;普通的 uvx rhinomcp 则会保留首次下载的版本。如果你需要离线工作,可使用 uv tool install rhinomcp 安装一次,并在方便时运行 uv tool upgrade rhinomcp。
  • Rhino 插件。 通过 Package Manager 安装后,Rhino 会在启动时检查更新;启用“Automatically update packages when Rhino starts”后,Rhino 会安装更新,新版本将在下次重启时加载。通过将 .rhp 拖入 Rhino 安装的插件不会更新。
  • AI 客户端。 客户端会在启动服务时读取工具列表,因此更新后请重启客户端(或重新连接服务)。

服务连接时会读取插件版本;如果两者版本不同,会在日志中发出警告。需要较新插件的工具会提示更新,而不是悄悄执行其他操作;describe_capabilities 会报告这两个版本。

使用方法

桥接已运行且客户端已连接后,你会看到 RhinoMCP 工具。接下来只需聊天:让助手建模、检查场景,或构建 Grasshopper 图。

Rhino 命令行中的 mcpstart Claude 中的 RhinoMCP 工具

对于 Grasshopper,只需打开 Rhino 并运行 mcpstart。助手可以自行打开或创建 Grasshopper 文档,然后构建定义。例如:“创建一个点吸引子图案,使用高度各异的圆柱体。”

示例提示词

从原点开始,在间距为 10 个单位的网格上创建 6×6×6 个方块,尺寸从 1 递增到 5,并根据尺寸为方块着色,颜色从蓝色渐变到红色。使用 RhinoScript Python。

用立方体块拼出一只卡通风格、色彩鲜艳的犀牛。然后将它的头改成红色,并将选中的对象绕 Z 轴旋转 90°。

在 Grasshopper 中创建一个点吸引子图案:生成一个圆柱体网格,其高度随它们与吸引子点的距离变化,并添加一个用于移动该点的滑块。

工具参考

Rhino 工具 | 工具 | 用途 | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | `create_object` / `create_objects` | 创建一个或多个对象 | | `modify_object` / `modify_objects` | 转换或编辑一个或多个对象 | | `delete_object` | 删除对象 | | `boolean_union` / `boolean_difference` / `boolean_intersection` | 布尔运算 | | `loft` / `extrude_curve` / `sweep1` / `offset_curve` / `pipe` | 高级曲面和实体建模 | | `project_curve` / `intersect_curves` / `split_curve` | 曲线操作 | | `analyze_objects` | 测量长度、面积、体积、边界框等 | | `select_objects` | 按筛选条件选择(名称、颜色、类别;AND / OR) | | `get_objects` / `get_object_info` / `get_selected_objects_info` | 查询对象 | | `get_object_attributes` / `update_object_attributes` | 读取和写入对象属性 | | `create_layer` / `delete_layer` / `get_or_set_current_layer` | 图层管理 | | `get_document_summary` | 当前文档概览 | | `capture_viewport` | 截取视口屏幕截图以提供视觉反馈 | | `run_command` | 运行任意 Rhino 原生命令 | | `execute_rhinoscript_python_code` | 执行 RhinoScript-Python | | `execute_rhinocommon_csharp_code` | 执行 RhinoCommon C# | | `search_rhinoscript_functions` / `get_rhinoscript_docs` / `list_rhinoscript_modules` / `get_module_functions` | 查找 RhinoScript API 文档 | | `get_commands` | 列出可用命令 | | `undo` / `redo` | 撤销和重做 |
Grasshopper 工具 | 工具 | 用途 | | --------------------------------------------------------------------- | ------------------------------------------------- | | `gh_create_document` / `gh_get_document_info` / `gh_get_canvas_state` | 检查文档和画布 | | `gh_search_components` / `gh_batch_search_components` | 搜索组件库 | | `gh_list_component_categories` / `gh_get_available_components` | 浏览已安装的组件 | | `gh_get_component_type_info` / `gh_get_component_info` | 检查组件类型或实例 | | `gh_list_components` | 列出画布上的组件 | | `gh_add_component` / `gh_update_component` / `gh_delete_component` | 添加、更新或删除组件 | | `gh_layout_components` | 自动排列画布上的组件 | | `gh_clear_canvas` | 清空画布 | | `gh_connect_components` / `gh_disconnect_components` | 连接或断开参数 | | `gh_set_parameter_value` / `gh_get_parameter_value` | 设置输入、读取输出 | | `gh_run_solution` / `gh_expire_solution` | 求解或使解决方案过期 | | `gh_build_graph` / `gh_mutate_graph` | 通过一次批处理调用构建或修改整个图 | | `gh_get_graph` / `gh_clear_graph` | 按图 ID 检查或清除对象 |

工作原理

AI client ──MCP (stdio)──► rhinomcp (Python) ──TCP 127.0.0.1:1999──► Rhino plugin ──► Rhino + Grasshopper
  1. server/:一个 Python MCP 服务(官方 Python SDK 2.x),用于公开每个工具并将其转发到 Rhino。
  2. plugin/:一个 RhinoCommon C# 插件,在 Rhino 内运行 TCP 监听器,并在主线程上执行命令。使用 Rhino 命令 mcpstart / mcpstop 启动和停止它。
  3. contracts/:JSON Schema 定义,用于确保两层之间的线协议保持同步。

IMPLEMENTATION.md 对代码有更深入的介绍。

安全

Python 服务和 Rhino 插件通过未经身份验证的 TCP 回环链路 (127.0.0.1:1999)通信。run_command、execute_rhinoscript_python_code 和 execute_rhinocommon_csharp_code 等工具会向模型开放 Rhino 内部的执行接口。这适用于本地 Agent。未添加身份验证前,请勿将其暴露到回环接口之外。

运维开关(环境变量)
变量默认值作用
RHINO_MCP_HOST127.0.0.1连接目标。除非设置 RHINO_MCP_ALLOW_REMOTE=1,否则会拒绝非回环主机。
RHINO_MCP_PORT1999TCP 端口。
RHINO_MCP_ENABLE_RUN_COMMAND1设置为 0 可禁用 run_command 工具。
RHINO_MCP_ENABLE_RHINOSCRIPT1设置为 0 可禁用 RhinoScript-Python 执行。
RHINO_MCP_ENABLE_CSHARP1设置为 0 可禁用 RhinoCommon C# 执行。
RHINO_MCP_VALIDATEwarn预检模式验证:off / warn / strict。
RHINO_MCP_TIMEOUT15.0套接字超时时间,单位为秒。
RHINO_MCP_DEBUG0详细日志记录。

面向开发者

构建、测试和发布

Python 服务(在 server/ 中运行)

uv venv && uv pip install -e ".[dev]"   # set up
uv run pytest                            # run tests (no Rhino needed; uses a mock server)
uv run ruff check src/rhinomcp           # lint
uv run python ../contracts/test_schemas.py   # validate JSON schemas
uv build && uv publish                   # publish to PyPI

C# 插件

dotnet restore plugin/rhinomcp.sln
dotnet build plugin/rhinomcp.sln --configuration Release

要发布插件:以 Release 配置构建,将 manifest.yml 复制到 bin/Release,然后运行 yak build 和 yak push rhinomcp_xxxx.yak。

贡献

欢迎贡献。欢迎提交问题或拉取请求。

免责声明

这是第三方集成,并非由 McNeel 制作。由 Jingcheng Chen 构建。

Star 历史

Star 历史图表

随服务分发的建模指南

Python 包包含可重复使用的变换、平面区域、组织、验证和恢复指南。使用 get_modeling_guidance("overview")、 asset_general_strategy MCP 提示词,或 rhinomcp://guidance/{topic} 资源。 基本工具语义保留在工具描述中。无需本地实验文件夹或单独的技能。有关可用主题和发布详情,请参阅打包的指南。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。