SketchupMCP

# SketchupMCP - Sketchup Model Context Protocol Integration SketchupMCP connects Sketchup to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Sketchup. This integration enables prompt-assisted 3D modeling, scene creation, and manipulation in Sketchup. Big Shoutout to [Blender MCP](https://github.com/ahujasid/blender-mcp) for the inspiration and structure. ## Features * **Two-way communication**: Connect Claude AI to Sketchup through a TCP socket connection * **Component manipulation**: Create, modify, delete, and transform components in Sketchup * **Material control**: Apply and modify materials and colors * **Scene inspection**: Get detailed information about the current Sketchup scene * **Selection handling**: Get and manipulate selected components * **Ruby code evaluation**: Execute arbitrary Ruby code directly in SketchUp for advanced operations ## Components The system consists of two main components: 1. **Sketchup Extension**: A Sketchup extension that creates a TCP server within Sketchup to receive and execute commands 2. **MCP Server (`sketchup_mcp/server.py`)**: A Python server that implements the Model Context Protocol and connects to the Sketchup extension ## Installation ### Python Packaging We're using uv so you'll need to ```brew install uv``` ### Sketchup Extension 1. Download or build the latest `.rbz` file 2. In Sketchup, go to Window > Extension Manager 3. Click "Install Extension" and select the downloaded `.rbz` file 4. Restart Sketchup ## Usage ### Starting the Connection 1. In Sketchup, go to Extensions > SketchupMCP > Start Server 2. The server will start on the default port (9876) 3. Make sure the MCP server is running in your terminal ### Using with Claude Configure Claude to use the MCP server by adding the following to your Claude configuration: ```json "mcpServers": { "sketchup": { "command": "uvx", "args": [ "sketchup-mcp" ] } } ``` This will pull the [latest from PyPI](https://pypi.org/project/sketchup-mcp/) Once connected, Claude can interact with Sketchup using the following capabilities: #### Tools * `get_scene_info` - Gets information about the current Sketchup scene * `get_selected_components` - Gets information about currently selected components * `create_component` - Create a new component with specified parameters * `delete_component` - Remove a component from the scene * `transform_component` - Move, rotate, or scale a component * `set_material` - Apply materials to components * `export_scene` - Export the current scene to various formats * `eval_ruby` - Execute arbitrary Ruby code in SketchUp for advanced operations ### Example Commands Here are some examples of what you can ask Claude to do: * "Create a simple house model with a roof and windows" * "Select all components and get their information" * "Make the selected component red" * "Move the selected component 10 units up" * "Export the current scene as a 3D model" * "Create a complex arts and crafts cabinet using Ruby code" ## Troubleshooting * **Connection issues**: Make sure both the Sketchup extension server and the MCP server are running * **Command failures**: Check the Ruby Console in Sketchup for error messages * **Timeout errors**: Try simplifying your requests or breaking them into smaller steps ## Technical Details ### Communication Protocol The system uses a simple JSON-based protocol over TCP sockets: * **Commands** are sent as JSON objects with a `type` and optional `params` * **Responses** are JSON objects with a `status` and `result` or `message` ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## License MIT