犀牛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类型定义
运作原理
- 服务器初始化:服务器以名为“rhino-server”的MCP服务器启动,使用stdio传输进行通信。
- Rhino连接:当调用工具时,服务器会尝试通过COM连接到Rhino:
- 创建一个 Rhino.Application COM对象使用 winax - 将Rhino设置为可见模式 - 维护一个在请求之间重用的单例实例
- 脚本执行:
- 通过接收Python脚本内容 rhino_execute 工具 - 在中创建临时脚本文件 temp-scripts 目录 - 使用Rhino执行脚本 -_RunPythonScript 命令 - 执行后清理临时文件
- 工具注册:服务器注册了一个工具:
- rhino_execute:在Rhino中执行Python脚本并返回结果
先决条件
- Node.js:需要运行服务器(与ES2022模块兼容的版本)
- 犀牛3D:必须安装在Windows系统上
- Windows操作系统:需要COM对象支持(winax仅适用于Windows)
安装
- 安装依赖项:
npm install- 构建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编译为JavaScriptdist目录npm run build:watch:自动监视更改和重建npm run dev:使用tsx在开发模式下运行服务器npm start:从运行编译后的服务器dist/index.jsnpm test:占位符测试脚本(当前未实现)
备注
- 服务器需要安装Rhino并通过COM访问
- 脚本临时存储在
temp-scripts/执行后清理干净 - 服务器维护一个可重用的Rhino实例连接
- 如果Rhino连接丢失,服务器将在下次请求时尝试重新连接
- 由于COM对象要求,此服务器仅为Windows
