RhinoMCP

by reer-ide
MIT License

RhinoMCP — интеграция протокола контекста модели Rhino

Этот проект разработан REER, INC. и опубликован для использования и тестирования сообществом. Мы приветствуем участников, которые помогут улучшить и расширить функциональность RhinoMCP. RhinoMCP соединяет Rhino, Grasshopper и другие с Claude AI через Model Context Protocol (MCP), позволяя Claude напрямую взаимодействовать с Rhino и управлять им. Эта интеграция позволяет выполнять 3D-моделирование с подсказками, создавать сцены и манипулировать ими. (вдохновлено blender_mcp )

Проект предусматривает две реализации сервера:

  • Стандартный протокол Stdio MCP-сервер для интеграции Claude Desktop
  • Сервер протокола SSE (Server-Side Events) для интеграции пользовательского веб-клиента

Функции

Носорог
  • Двусторонняя связь : подключение Claude AI к Rhino через сервер на основе сокетов.
  • Манипулирование объектами и управление ими : создание и изменение 3D-объектов в Rhino, включая метаданные.
  • Управление слоями : просмотр и взаимодействие со слоями Rhino.
  • Осмотр сцены : получите подробную информацию о текущей сцене Rhino (включая снимок экрана)
  • Выполнение кода : запуск произвольного кода Python в Rhino от Клода
  • Выбор объекта : получение информации о выбранных в данный момент объектах в Rhino.
  • Документация RhinoScriptSyntax : поиск документации по RhinoScriptSyntax
Кузнечик (в разработке)

Важное примечание : Хотя инструменты интеграции Grasshopper могут появиться в Claude, они все еще находятся в стадии активной разработки и пока не полностью пригодны для использования. Мы работаем над реализацией полной функциональности Grasshopper в будущих выпусках.

Компоненты

Система состоит из двух основных компонентов:

  1. Скрипт на стороне Rhino ( rhino_script.py ) : скрипт Python, который запускается внутри Rhino для создания сокет-сервера, который получает и выполняет команды.
  2. Сервер MCP ( rhino_mcp/server.py ) : сервер Python, реализующий протокол контекста модели и подключающийся к скрипту Rhino.

Установка

Предпосылки

  • Rhino 7 или новее
  • Python 3.10 или новее
  • менеджер пакетов uv
  • Conda (для управления средой) или существующая установка Python

Варианты установки

Установить УФ

Если вы используете Mac, откройте терминал и выполните:

wget -qO- https://astral.sh/uv/install.sh | sh

В Windows откройте Powershell и запустите

irm https://astral.sh/uv/install.ps1 | iex

В противном случае инструкции по установке можно найти на их сайте: Установить УФ

⚠️ Не продолжайте работу до установки УФ-излучения.

Вариант 1: Быстрая установка с помощью uvx/pip (рекомендуется)

Для начала вам необходимо выполнить интеграцию с Claude Desktop:

  1. Перейдите в Claude Desktop > Настройки > Разработчик > Изменить конфигурацию.
  2. Откройте файл claude_desktop_config.json и добавьте следующую конфигурацию:
{ "mcpServers": { "rhino": { "command": "uvx", "args": ["reer-rhino-mcp"] } } }
  1. Сохраните файл

Или, если вы хотите использовать курсор: для пользователей Mac, перейдите в «Настройки» > MCP и вставьте следующее

  • Чтобы использовать его в качестве глобального сервера, нажмите кнопку «добавить новый глобальный сервер MCP» и вставьте
  • Чтобы использовать его в качестве сервера для конкретного проекта, создайте .cursor/mcp.json в корне проекта и вставьте
{ "mcpServers": { "rhino": { "command": "uvx", "args": [ "reer-rhino-mcp" ] } } }

Для пользователей Windows перейдите в Настройки > MCP > Добавить сервер и добавьте новый сервер со следующими настройками:

{ "mcpServers": { "rhino": { "command": "cmd", "args": [ "/c", "uvx", "reer-rhino-mcp" ] } } }

Затем установите скрипт Rhino:

  1. Загрузите файл rhino_script.py из репозитория
  2. Открытый носорог
  3. Для Рино 7:
    • Откройте редактор Python:
      • Нажмите на меню «Инструменты».
      • Выберите «Редактор Python» (или нажмите Ctrl+Alt+P / Cmd+Alt+P)
    • В редакторе Python:
      • Нажмите «Файл» > «Открыть».
      • Перейдите и выберите rhino_script.py
      • Нажмите «Выполнить» (или нажмите F5)
  4. Для Рино 8:
    • Нажмите на меню «Инструменты».
    • Выберите «RhinoScript» > «Выполнить».
    • Перейдите и выберите rhino_script.py
  5. Скрипт запустится автоматически, и вы должны увидеть следующие сообщения в редакторе Python:
    RhinoMCP script loaded. Server started automatically. To stop the server, run: stop_server()

Наконец, перезапустите Claude Desktop, он автоматически запустит сервер MCP и подключится к Rhino.

Этот метод рекомендуется большинству пользователей, которые хотят просто использовать RhinoMCP, не изменяя его исходный код.

Вы также можете посмотреть видеоурок по этому методу:

Вариант 2: Установка локальной разработки

Если вы хотите изменить исходный код или внести свой вклад в проект, вы можете установить его в режиме разработки:

Клонировать репозиторий

Использование Конда
  1. Создайте новую среду conda с помощью Python 3.10:
    conda create -n rhino_mcp python=3.10 conda activate rhino_mcp
  2. Установите менеджер пакетов uv :
    pip install uv
  3. Установите пакет в режиме разработки:
    uv pip install -e .
Использование существующей установки Python

Если у вас уже установлен Python, вы можете установить сервер MCP непосредственно в базовую среду:

  1. Установите пакет в режиме разработки:
    pip install -e .
  2. Обратите внимание, что для конфигурации Claude Desktop вам нужно будет найти правильный системный путь к вашей установке Python. Вы можете найти его, запустив:
    which python # On macOS/Linux where python # On Windows
Интеграция рабочего стола Клода

То же, что и вариант 1, но необходимо указать полный путь к интерпретатору Python в файле claude_desktop_config.json :

{ "mcpServers": { "rhino": { "command": "/your/python/path", "args": ["-m", "rhino_mcp.server"] } } }

Примеры путей Python:

  • Windows: C:\\Users\\username\\anaconda3\\envs\\rhino_mcp\\python.exe
  • macOS: /Users/username/anaconda3/envs/rhino_mcp/bin/python

Обязательно:

  • Замените путь Python на путь к Python в вашей среде conda или системном Python, если используете второй метод.
  • Сохраните файл и перезапустите Claude Desktop.

Важное примечание: если вы используете среду conda, необходимо указать полный путь к интерпретатору Python, как показано выше.

Протокол SSE (серверные события) Rhino MCP Server

Сервер SSE — это альтернативная реализация сервера Rhino MCP, которая использует Server-Side Events для связи в реальном времени. Этот сервер работает на 127.0.0.1:8080 и предназначен для работы с пользовательскими веб-клиентами. Он предоставляет ту же функциональность, что и стандартный сервер MCP, но использует другой транспортный протокол, который больше подходит для веб-приложений.

Чтобы использовать сервер SSE:

  1. Запустите сервер с помощью: python -m rhino_mcp.server_sse
  2. Подключите веб-клиента к ws://127.0.0.1:8080/sse
  3. Отправляйте сообщения на http://127.0.0.1:8080/messages/

Сервер SSE поддерживает все те же операции Rhino, что и стандартный сервер MCP, что делает его идеальным для создания пользовательских веб-интерфейсов для управления Rhino.

Использование

Использование с Клодом

После подключения Клод или другой магистр права может использовать следующие инструменты MCP:

  • get_rhino_scene_info() : получение упрощенной информации о сцене с упором на слои и примеры объектов
  • get_rhino_layers() : Получить информацию обо всех слоях в сцене Rhino
  • execute_code(code) : выполнение произвольного кода Python в Rhino
  • get_rhino_objects_with_metadata(filters, metadata_fields) : получение подробной информации об объектах на сцене с их метаданными, с дополнительной фильтрацией
  • capture_rhino_viewport(layer, show_annotations, max_size) : захват области просмотра с дополнительными аннотациями и фильтрацией слоев
  • get_rhino_selected_objects(include_lights, include_grips) : получение информации об объектах, выбранных в данный момент в области просмотра Rhino.
  • look_up_RhinoScriptSyntax(function_name) : поиск документации по функции RhinoScriptSyntax непосредственно на сайте разработчика Rhino3D

Примеры команд

Вот несколько примеров того, о чем вы можете попросить Клода:

  • «Получить информацию о текущей сцене Rhino»
  • «Создай куб в начале координат»
  • «Получить все слои в документе Rhino»
  • «Выполнить этот код Python в Rhino: ...»
  • «Можете ли вы назвать мне размеры стены, которую я выбрал в Rhino?»
  • «Помогите мне рассчитать площадь поверхности выбранного пола в Rhino»
  • «Покажите мне документацию по функции SelectedObjects»
  • «Как использовать функцию AddCylinder в Rhino Script?»
  • ...

Внося вклад

Мы приветствуем вклады в проект RhinoMCP! Если вы заинтересованы в помощи, вот несколько способов внести свой вклад:

  1. Отчеты об ошибках : Если вы обнаружили ошибку, пожалуйста, создайте сообщение об ошибке с подробным описанием проблемы и шагами по ее воспроизведению.
  2. Запросы функций : Есть идея для новой функции? Откройте тему, чтобы обсудить ее.
  3. Внесение изменений в код : Хотите добавить функцию или исправить ошибку?
    • Форк репозитория
    • Создайте новую ветку для ваших изменений
    • Отправьте запрос на извлечение с четким описанием ваших изменений.

Убедитесь, что ваш код соответствует существующему стилю и включает соответствующую документацию.

Отказ от ответственности

Данное программное обеспечение предоставляется «как есть», без каких-либо гарантий, явных или подразумеваемых. REER, INC. не дает никаких гарантий, заявлений или заверений в отношении программного обеспечения, включая, помимо прочего, качество, надежность, совместимость или пригодность для определенной цели.

Используя данное программное обеспечение, вы признаете и соглашаетесь с тем, что REER, INC. не несет ответственности за какие-либо прямые, косвенные, случайные, особые или косвенные убытки, возникшие в результате использования или невозможности использования данного программного обеспечения.

Этот проект находится в активной разработке и может содержать ошибки или неполные функции. Хотя мы стремимся к качеству и надежности, пожалуйста, будьте осторожны при внедрении в производственные среды.

Соответствующая документация и ресурсы

ID: d0aebegt2e