# CAD-Query MCP Server
A Model Context Protocol (MCP) server that provides CAD generation and verification tools for Claude Code. This server enables conversational 3D modeling by exposing CAD-Query functionality through MCP tools.
## Features
- **`verify_cad_query`** - Validates CAD-Query generated models against criteria
- **`generate_cad_query`** - _(Stub implementation)_ Generates CAD-Query Python scripts from descriptions
- **CAD-Query Integration** - Full CAD-Query support for parametric 3D modeling
- **STL/STEP Export** - Direct export to 3D printing and CAD formats
- **Visual Feedback** - SVG generation for model inspection
## Installation
```bash
# Install dependencies
uv sync
# For development with CAD verification capabilities
uv sync --extra cad
# Test the server
uv run python tests/test_server.py
# Run with MCP Inspector (interactive testing)
uv run mcp dev server.py
```
## Claude Desktop Configuration
Add this to your Claude Desktop configuration file:
### macOS
Location: `~/Library/Application Support/Claude/claude_desktop_config.json`
### Windows
Location: `%APPDATA%/Claude/claude_desktop_config.json`
### Configuration
```json
{
"mcpServers": {
"cadquery-server": {
"command": "python",
"args": ["/path/to/cadquery-mcp-server/server.py"],
"env": {}
}
}
}
```
## MCP Tools
### `verify_cad_query`
Validates a CAD-Query generated model against specified criteria.
**Parameters:**
- `file_path` (string): Path to the CAD-Query Python file
- `verification_criteria` (string): Description of what to verify
**Example:**
```json
{
"file_path": "models/coffee_mug.py",
"verification_criteria": "coffee mug with handle, 10cm height, 8cm diameter"
}
```
**Returns:**
```json
{
"status": "PASS" | "FAIL",
"message": "Description of result",
"file_path": "Path to verified file",
"criteria": "Verification criteria used",
"details": "Additional verification details"
}
```
### `generate_cad_query` _(Stub Implementation)_
Generates CAD-Query Python scripts from natural language descriptions.
**NOTE**: Currently returns a stub response indicating the feature is not yet implemented.
**Parameters:**
- `description` (string): Natural language description of the desired 3D model
- `parameters` (string, optional): Specific dimensions or constraints
**Example:**
```json
{
"description": "Create a coffee mug with a handle, 10cm tall and 8cm diameter",
"parameters": "height=100mm, diameter=80mm, handle_width=15mm"
}
```
**Returns:**
```json
{
"status": "NOT_IMPLEMENTED",
"message": "CAD code generation is not yet implemented",
"description": "Input description",
"parameters": "Input parameters",
"details": "Additional information"
}
```
## CAD-Query Script Requirements
All CAD-Query scripts must end with `show_object(result)`:
```python
import cadquery as cq
result = cq.Workplane("XY").box(10, 10, 10)
show_object(result) # Required for processing
```
## Development
### Testing
```bash
# Test server functionality
uv run python tests/test_server.py
# Interactive testing with MCP Inspector
uv run mcp dev server.py
# Run evaluations
uv run python evaluations/evaluate_verify.py
```
### Extending the Server
The current `verify_cad_query` implementation is a basic validator. You can enhance it to:
- Parse and validate CAD-Query syntax
- Execute model generation and catch errors
- Analyze resulting geometry dimensions
- Check for specific features and constraints
- Generate detailed validation reports
### Dev tools
```
# formatting
uvx rff format
```
```
# running the MCP server
npx @modelcontextprotocol/inspector \
uv \
--directory $(pwd) \
run \
server.py
```