Rhino について
RhinoMCP は、Rhino 3D と Grasshopper を AI アシスタントに接続し、チャットでジオメトリのモデリング、ドキュメントの読み取り、Grasshopper 定義の構築を行えるようにします。対象は Windows と macOS 上の Rhino 8 です。
主な機能
- 01自然言語によるジオメトリの作成とモデリング
- 02ドキュメントの読み取りとビューポートのキャプチャ
- 03Grasshopper コンポーネントの検索・接続・ソルブ
- 04ネイティブコマンドとスクリプトの実行
- 05名前・色・カテゴリによるオブジェクトの選択
活用シーン
- 01チャットによるRhinoジオメトリの一括作成や変更
- 02ビューポートのスクリーンショットによるビジュアルフィードバックの取得
- 03自然言語からのパラメトリックな Grasshopper 定義の構築
MCP 対応
本プロジェクトは MCP サーバーであり、Python サーバーを通じて Rhino と Grasshopper のツールを MCP クライアントに公開し、TCP 経由で Rhino プラグインへ処理を転送します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
70掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| curve_ids | array | はい | |
| name | any | いいえ | |
| closed | boolean | いいえ | |
| loft_type | integer | いいえ |
詳細
RhinoMCP
自然な言葉で、AI を使って Rhino 3D と Grasshopper を操作できます。
RhinoMCP は、Model Context Protocol を介して Rhino と AI エージェントを接続します。 これにより、Claude や Cursor などのアシスタントは、会話するだけでジオメトリをモデリングしたり、ドキュメントを読み取ったり、 Grasshopper の定義を作成したりできます。
クイックスタート · できること · 使い方 · 例 · ツールリファレンス
English · 简体中文
特長
自律的な改善実験を開発する場合は、まず 継続ガイドをご覧ください。
- 作りたいものを説明すると、アシスタントが Rhino で作成します。
- ドキュメントを読み取り、ビューポートをキャプチャできるため、実際に画面に表示されている内容をもとに作業します。
- Grasshopper のスクリプトを作成します。コンポーネントの検索、接続、スライダーの設定、ソルブまで行います。
- 1 つのプラグインと 1 つの設定項目で、Rhino と Grasshopper の両方に対応します。
- さらに細かく制御したい場合は、ネイティブの Rhino コマンド、RhinoScript-Python、または RhinoCommon C# を実行できます。
メモ
RhinoMCP は、Windows および macOS 上の Rhino 8 を対象としています。
デモ
|
双方向インタラクション: AI がジオメトリの作成と読み取りの両方を行います。 |
カスタムスクリプト: AI が Rhino 内でスクリプトを作成して実行します。 |
手順を追った説明をご希望ですか?Nate が、紹介動画とインストール方法を解説するYouTube のチュートリアルを公開しています。
できること
Rhino
| 領域 | AI でできること |
|---|---|
| ジオメトリの作成 | 点、線、ポリライン、円、円弧、楕円、曲線、ボックス、球、円錐、円柱、サーフェスを、1 つずつ、または一括で作成します |
| 変換と編集 | オブジェクトの移動、回転、スケーリング、色の変更、名前の変更、削除を行います |
| 高度なモデリング | ロフト、押し出し、スイープ、オフセット、パイプ、ブール演算による和・差・積を行います |
| 曲線操作 | 曲線の投影、交差、分割を行います |
| レイヤーと属性 | レイヤーの作成、削除、切り替え、オブジェクト属性の読み取りと書き込みを行います |
| 確認と選択 | ドキュメントの概要、オブジェクト情報、条件による絞り込み選択(名前、色、カテゴリによる指定、AND / OR ロジックに対応) |
| モデルの表示 | ビューポートをキャプチャして、AI に視覚的なフィードバックを提供します |
| 分析 | 長さ、面積、体積、バウンディングボックスなどを計測します |
| さらに詳しく | 任意の Rhino コマンドの実行、RhinoScript-Python の実行、RhinoCommon C# の実行ができます。RhinoScript のドキュメント検索機能も組み込まれています |
Grasshopper
| 領域 | AI でできること |
|---|---|
| コンポーネントを検索 | インストール済みのコンポーネントライブラリを検索し、配置する前にコンポーネントの入力と出力を確認します |
| キャンバスを構築 | コンポーネントの追加、配置、レイアウト、更新、削除を行います |
| 配線する | コンポーネント間のパラメーターを接続、切断します |
| 値の設定と読み取り | スライダー、トグル、パネル、値リストを操作し、出力から構造化データを読み取ります |
| ソルブ | ソリューションを実行し、実行時の警告とエラーを表示します |
| 一度に構築 | グラフ全体の構築と配線、または既存のグラフの変更を、1 回の一括操作で行います |
クイックスタート
3 つの手順で完了します。Rhino プラグインをインストールし、AI クライアントを接続してから、Rhino でブリッジを起動します。
1. Rhino プラグインをインストールする
Rhino で Tools → Package Manager を開き、rhinomcp を検索して Install をクリックします。Rhino を再起動します。
2. AI クライアントを接続する
オプション A:AI アシスタントにインストールを依頼する(推奨)
エージェント型アシスタント(Codex、Claude Code、Cursor、Cline など)を使用している場合は、このプロンプトを貼り付けます。
Please install https://github.com/jingcheng-chen/rhinomcp as a local MCP server named `rhino`.
オプション B:MCP サーバーをインストールするか、設定を手動で編集する
Codex:次の 1 つのコマンドで設定します。
codex mcp add rhino --env RHINO_MCP_HOST=127.0.0.1 -- uvx rhinomcp@latest
Claude Code:次の 1 つのコマンドで設定します。
claude mcp add rhino -- uvx rhinomcp@latest
ChatGPT: 上記のローカルセットアップには Codex を使用してください。ChatGPT アプリ/MCP コネクターは現在、リモート MCP サーバーに接続します。uvx rhinomcp のようなローカルの stdio コマンドには接続しません。RhinoMCP を使った ChatGPT アプリを構築する場合は、リモートまたはトンネル経由の MCP エンドポイントを使用して、ChatGPT の開発者モードを利用してください。
設定を手動で編集することもできます。
{
"mcpServers": {
"rhino": {
"command": "uvx",
"args": ["rhinomcp@latest"],
"env": {
"RHINO_MCP_HOST": "127.0.0.1"
}
}
}
}
重要
起動ツールの
uvxは uv に含まれています。まだインストールしていない場合: macOSbrew install uv· Windowspowershell -c "irm https://astral.sh/uv/install.ps1 | iex"一度に起動する RhinoMCP サーバーは 1 つだけにしてください(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 セッションごとに 1 回実行してください。
最新の状態を維持する
RhinoMCP は、それぞれ個別に更新される 3 つの部分で構成されています。
- Python サーバー。
uvx rhinomcp@latestは、クライアントがサーバーを起動するたびに PyPI から最新リリースを取得します。通常のuvx rhinomcpは、最初にダウンロードしたバージョンを使い続けます。オフラインで作業する場合は、uv tool install rhinomcpで一度インストールし、都合のよいときにuv tool upgrade rhinomcpを実行してください。 - Rhino プラグイン。 パッケージマネージャーからインストールすると、「Rhino の起動時にパッケージを自動更新する」が有効な場合、Rhino は起動時に更新を確認してインストールします。新しいバージョンは次回の再起動時に読み込まれます。
.rhpを Rhino にドラッグしてインストールしたプラグインは更新されません。 - AI クライアント。 サーバーの起動時にツール一覧を読み込むため、更新後はクライアントを再起動するか、サーバーに再接続してください。
サーバーは接続時にプラグインのバージョンを読み取り、2 つのバージョンが異なる場合はログで警告します。新しいプラグインが必要なツールは、何もせず別の動作をするのではなく、更新を促すメッセージを表示して失敗します。また、describe_capabilities は両方のバージョンを報告します。
使用方法
ブリッジを起動し、クライアントを接続すると、RhinoMCP のツールが表示されます。あとはチャットで、何かをモデリングするよう依頼したり、シーンを確認したり、Grasshopper グラフを作成したりできます。

Grasshopper を使う場合は、Rhino を起動して mcpstart を実行するだけです。アシスタントが Grasshopper ドキュメントを開いたり作成したりしてから、定義を構築できます。たとえば、「高さの異なる円柱で、ポイントアトラクターのパターンを作成して」 と依頼できます。
プロンプトの例
原点から 10 単位間隔のグリッド上に 6×6×6 個のボックスを作成し、サイズを 1 から 5 まで段階的に変えてください。サイズに基づいて青から赤へのグラデーションで色を付けてください。RhinoScript Python を使用してください。
立方体ブロックを使って、漫画風の色をしたサイを作成してください。次に、頭を赤に変更し、選択したオブジェクトを Z 軸の周りに 90° 回転してください。
Grasshopper でポイントアトラクターのパターンを作成してください。アトラクターポイントからの距離に応じて高さが変わる円柱のグリッドを作り、ポイントを移動するスライダーも付けてください。
ツールリファレンス
Rhino ツール
| ツール | 目的 | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | `create_object` / `create_objects` | オブジェクトを1つまたは複数作成します | | `modify_object` / `modify_objects` | オブジェクトを1つまたは複数変換または編集します | | `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` | 1 回のバッチ呼び出しでグラフ全体を構築または変更 | | `gh_get_graph` / `gh_clear_graph` | グラフ ID でオブジェクトを確認またはクリア |仕組み
AI client ──MCP (stdio)──► rhinomcp (Python) ──TCP 127.0.0.1:1999──► Rhino plugin ──► Rhino + Grasshopper
server/:各ツールを公開し、Rhino に転送する Python 製の MCP サーバー(公式 Python SDK 2.x)です。plugin/:Rhino 内で TCP リスナーを実行し、メインスレッド上でコマンドを実行する RhinoCommon C# プラグインです。Rhino コマンドmcpstart/mcpstopで起動・停止します。contracts/:2 つの階層間でワイヤープロトコルの同期を保つ JSON Schema 定義です。
コードの詳細については、IMPLEMENTATION.md をご覧ください。
セキュリティ
Python サーバーと Rhino プラグインは、認証されていない TCP ループバックリンク
(127.0.0.1:1999)を介して通信します。run_command、execute_rhinoscript_python_code、
execute_rhinocommon_csharp_code などのツールを使うと、Rhino 内でモデルが自由にコードを実行できます。これはローカルでエージェントを使用する場合には問題ありません。認証を追加せずに、ループバックインターフェースの外部に公開しないでください。
オペレーター設定(環境変数)
| 変数 | デフォルト | 効果 |
|---|---|---|
RHINO_MCP_HOST | 127.0.0.1 | 接続先。RHINO_MCP_ALLOW_REMOTE=1 を設定しない限り、ループバック以外のホストへの接続を拒否します。 |
RHINO_MCP_PORT | 1999 | TCP ポート。 |
RHINO_MCP_ENABLE_RUN_COMMAND | 1 | 0 に設定すると、run_command ツールを無効にします。 |
RHINO_MCP_ENABLE_RHINOSCRIPT | 1 | 0 に設定すると、RhinoScript-Python の実行を無効にします。 |
RHINO_MCP_ENABLE_CSHARP | 1 | 0 に設定すると、RhinoCommon C# の実行を無効にします。 |
RHINO_MCP_VALIDATE | warn | 実行前のスキーマ検証:off / warn / strict。 |
RHINO_MCP_TIMEOUT | 15.0 | ソケットのタイムアウト(秒)。 |
RHINO_MCP_DEBUG | 0 | 詳細なログ出力。 |
開発者向け
ビルド、テスト、公開
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 を実行します。
コントリビューション
コントリビューションを歓迎します。お気軽に Issue を作成するか、プルリクエストを送信してください。
免責事項
これはサードパーティ製の統合であり、McNeel によって開発されたものではありません。Jingcheng Chen が開発しました。
スター履歴
サーバーに同梱されているモデリングガイダンス
Python パッケージには、変換、平面領域、整理、検証、復旧に関する再利用可能なガイダンスが含まれています。get_modeling_guidance("overview")、asset_general_strategy MCP プロンプト、または rhinomcp://guidance/{topic} リソースを使用してください。ツールの基本的な動作は、ツールの説明に記載されています。ローカルの実験用フォルダーや、別途スキルを用意する必要はありません。利用可能なトピックとリリースの詳細については、同梱されているガイダンスをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

