返回市场
犀牛Mcp服务器

犀牛Mcp服务器

作者:always-tinkering41 星标更新:2025-03-23

项目介绍

Rhino MCP Server

⚠️ 正在建设中 ⚠️
该项目正处于积极开发阶段,尚未完全运行。Rhino 插件在创建对象时遇到了问题。 我们正在积极寻求社区的支持来解决这些问题。 如果您有使用 Rhino API 开发、C# 插件或 MCP 集成的经验,请考虑贡献您的力量。 请通过在 GitHub 上打开一个 Issue 来联系我们。

这是一个针对 Rhino 3D 的 Model Context Protocol (MCP) 服务器实现,允许 Claude 创建和操作 3D 对象。

概述

本项目实现了用于 Rhino 3D 的 MCP 服务器,使像 Claude 这样的 AI 助手能够通过 Model Context Protocol 与 Rhino 进行交互。该服务器允许从 AI 接口直接创建和操作 3D 对象。

系统架构

系统由实现 MCP 服务器的 Python 组件和与 Rhino 集成的 C# 组件组成。以下是系统组件如何交互的概述:

graph TD
    %% 客户端应用
    client[客户端应用] --> socketProxy
    
    %% Socket 代理
    subgraph "Python Socket 代理"
        socketProxy[socket_proxy.py] --> daemonServer
    end
    
    %% 守护进程服务器
    subgraph "Python 守护进程服务器"
        daemonServer[daemon_mcp_server.py] --> combinedServer
    end
    
    %% 组合 MCP 服务器
    subgraph "Python 组合 MCP 服务器"
        combinedServer[combined_mcp_server.py]
        mcp[FastMCP] --> tools
        combinedServer --> mcp
        combinedServer --> rhinoConn
        subgraph "MCP 工具"
            tools[MCP 工具方法]
        end
        rhinoConn[RhinoConnection]
    end
    
    %% Rhino 插件组件
    subgraph "C# Rhino 插件"
        rhinoPlugin[RhinoMcpPlugin.cs]
        socketServer[RhinoSocketServer.cs]
        utilities[RhinoUtilities.cs]
        commands[RhinoMcpCommand.cs]
        
        rhinoPlugin --> socketServer
        rhinoPlugin --> commands
        socketServer --> utilities
    end
    
    %% 组件之间的连接
    rhinoConn <==> socketServer
    
    %% 日志组件
    subgraph "日志系统"
        logManager[log_manager.py]
        nlogConfig[NLog.config]
    end
    
    combinedServer --> logManager
    rhinoPlugin --> nlogConfig
    
    %% 连接到 Rhino
    rhino[Rhino 3D 软件]
    rhinoPlugin --> rhino
    
    classDef pythonClass fill:#3572A5,color:white;
    classDef csharpClass fill:#178600,color:white;
    classDef rhinoClass fill:#555555,color:white;
    
    class socketProxy,daemonServer,combinedServer,mcp,tools,rhinoConn,logManager pythonClass;
    class rhinoPlugin,socketServer,utilities,commands csharpClass;
    class rhino rhinoClass;

有关系统架构的更多详细信息,包括组件描述和数据流,请参阅 code_architecture.md

组件

有几个可用的实现:

  1. 组合 MCP 服务器(推荐):

    • combined_mcp_server.py - 直接实现,使用标准输入/输出进行通信
  2. 基于 Socket 的服务器:

    • daemon_mcp_server.py - 后台服务器,通过套接字连接接收命令
    • socket_proxy.py - 代理,将来自标准输入的命令转发到守护进程服务器并返回
  3. 独立服务器:

    • standalone-mcp-server.py - 原始独立实现

设置指南

1. 设置 Claude Desktop

  1. 如果尚未安装,请安装 Claude Desktop
  2. 在 Claude Desktop 设置中配置 MCP 服务器连接

2. 运行服务器

我们现在有一个统一的服务器启动器,可以运行任何服务器实现:

./server_launcher.sh [模式]

可用模式:

  • combined(默认) - 运行组合 MCP 服务器
  • standalone - 运行独立 MCP 服务器
  • daemon - 运行守护进程 MCP 服务器
  • socket-proxy - 运行套接字代理
  • direct - 运行守护进程和套接字代理
  • logs - 查看最近的日志
  • monitor - 实时监控日志
  • errors - 查看最近的错误
  • help - 显示帮助信息

示例:

# 运行组合服务器(推荐)
./server_launcher.sh combined

# 或者简单地
./server_launcher.sh

# 运行基于套接字的方法(守护进程 + 代理)
./server_launcher.sh direct

# 实时监控日志
./server_launcher.sh monitor

可用工具

服务器提供了几个用于 3D 建模的工具:

  1. geometry_tools.create_sphere - 使用指定中心和半径创建球体
  2. geometry_tools.create_box - 使用指定尺寸创建盒子
  3. geometry_tools.create_cylinder - 使用指定参数创建圆柱体
  4. scene_tools.get_scene_info - 获取当前场景的信息
  5. scene_tools.clear_scene - 清除场景中的对象
  6. scene_tools.create_layer - 在文档中创建新层

故障排除

如果您遇到连接问题:

  1. 确保没有旧服务器正在运行:

    ./server_launcher.sh help  # 这将清理现有进程
    
  2. 检查日志文件:

    ./server_launcher.sh logs   # 查看日志
    ./server_launcher.sh errors # 查看错误
    
  3. 完全重启 Claude Desktop

许可证

本项目发布在 MIT 许可证下。详情请参阅 LICENSE 文件。

改进的日志系统

系统具有一个统一的日志框架,集中了所有组件的日志:

  • 服务器日志
  • 插件日志
  • Claude AI 日志
  • 诊断日志

所有日志遵循一致的格式,并存储在 logs/ 目录中,每个组件都有单独的子目录。

日志管理

提供了一个日志管理工具,具有强大的查看、监控和分析日志的能力:

# 查看日志
./server_launcher.sh logs

# 实时监控日志
./server_launcher.sh monitor

# 查看带上下文的错误
./server_launcher.sh errors

# 生成错误报告(直接使用日志管理器)
./log_manager.py report

有关使用日志系统的详细信息,请参阅 LOGGING.md

开发

项目结构

  • combined_mcp_server.py:主要的 MCP 服务器实现
  • diagnose_rhino_connection.py:测试 Rhino 连接的诊断工具
  • log_manager.py:管理和分析日志的工具
  • server_launcher.sh:统一脚本以启动任何服务器实现
  • logs/:包含所有日志的目录

添加新功能

  1. 将新工具作为方法添加到 combined_mcp_server.py 文件中
  2. 使用现有的日志框架进行一致的错误处理
  3. 如需更新诊断工具