Rhino 3D Python脚本服务

一个通过MCP协议与Rhinoceros 3D软件交互的服务器,支持通过Python脚本自动化控制Rhino 3D操作。

  • by ronmacc
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ronmacc/mcp_claude_rhino

使用说明

犀牛mcp

一个模型上下文协议(MCP)服务器,可以通过Python脚本与Rhinoceros 3D软件进行交互。此服务器允许您通过MCP协议以编程方式执行RhinoPython脚本。

这个项目做什么

此MCP服务器在MCP兼容客户端(如AI助手)和Rhinoceros 3D之间提供了一座桥梁。它允许您:

  • 执行与Rhino 3D交互的Python脚本
  • 通过MCP协议自动化Rhino操作
  • 从外部应用程序以编程方式控制Rhino

服务器使用以下命令创建与Rhino的COM连接 winax 库,在Rhino的Python环境中执行Python脚本,并管理临时脚本文件。

依赖项

运行时依赖

  • @模型上下文协议/sdk (^1.13.2):用于构建MCP服务器的模型上下文协议SDK。提供服务器基础架构、工具注册和stdio传输。
  • winax (^3.6.2):一个用于创建Windows COM对象并与之交互的Node.js库。用于连接Rhino的COM接口。

发展依赖性

  • 打字稿 (^5.8.3):用于类型安全JavaScript开发的TypeScript编译器
  • @类型/节点 (^24.0.8):Node.js的TypeScript类型定义

运作原理

  1. 服务器初始化:服务器以名为“rhino-server”的MCP服务器启动,使用stdio传输进行通信。

  2. Rhino连接:当调用工具时,服务器会尝试通过COM连接到Rhino:

    • 创建一个 Rhino.Application COM对象使用 winax
    • 将Rhino设置为可见模式
    • 维护一个在请求之间重用的单例实例
  3. 脚本执行:

    • 通过接收Python脚本内容 rhino_execute 工具
    • 在中创建临时脚本文件 temp-scripts 目录
    • 使用Rhino执行脚本 -_RunPythonScript 命令
    • 执行后清理临时文件
  4. 工具注册:服务器注册了一个工具:

    • rhino_execute:在Rhino中执行Python脚本并返回结果

先决条件

  • Node.js:需要运行服务器(与ES2022模块兼容的版本)
  • 犀牛3D:必须安装在Windows系统上
  • Windows操作系统:需要COM对象支持(winax仅适用于Windows)

安装

  1. 安装依赖项:
npm install
  1. 构建TypeScript代码:
npm run build

运行服务器

发展模式

直接使用TypeScript运行服务器(需要 tsx):

npm run dev

生产模式

先构建,然后运行:

npm run build
npm start

作为二进制

构建后,服务器可以按以下方式运行:

node dist/index.js

与MCP客户端一起使用

要将此服务器与MCP客户端(如Claude Desktop或其他MCP兼容应用程序)一起使用,您需要将客户端配置为通过stdio连接到此服务器。

Claude Desktop的示例配置(claude_desktop_config.json):

{
  "mcpServers": {
    "rhino-mcp": {
      "command": "node",
      "args": ["path/to/rhino-mcp/dist/index.js"]
    }
  }
}

可用工具

犀牛

在Rhino 3D中执行Python脚本。

输入架构:

  • pythonScript (string):在Rhino中执行的Python脚本

示例用法:

import rhinoscriptsyntax as rs

# Create a point at origin
point = rs.AddPoint([0, 0, 0])
print(f"Created point: {point}")

项目结构

rhino-mcp/
├── src/
│   └── index.ts          # Main server implementation
├── dist/                  # Compiled JavaScript output
├── temp-scripts/          # Temporary Python script storage
├── package.json           # Project dependencies and scripts
├── tsconfig.json          # TypeScript configuration
└── README.md              # This file

脚本

  • npm run build:将TypeScript编译为JavaScript dist 目录
  • npm run build:watch:自动监视更改和重建
  • npm run dev:使用tsx在开发模式下运行服务器
  • npm start:从运行编译后的服务器 dist/index.js
  • npm test:占位符测试脚本(当前未实现)

备注

  • 服务器需要安装Rhino并通过COM访问
  • 脚本临时存储在 temp-scripts/ 执行后清理干净
  • 服务器维护一个可重用的Rhino实例连接
  • 如果Rhino连接丢失,服务器将在下次请求时尝试重新连接
  • 由于COM对象要求,此服务器仅为Windows