
Mowgli
from ranvirw18
Intelligent product canvas with context and taste โ connect your coding agent to iterate on your product's design, from sweeping new flows down to surgical tweaks, and sync it back to your code.
AutoCAD MCP Server
A production-grade Model Context Protocol (MCP) server for AutoCAD on Windows, enabling AI assistants (Claude Desktop, ChatGPT, Cursor, etc.) to control AutoCAD through natural language.
Features
- 10 Comprehensive MCP Tools for CAD operations
- AutoCAD COM API Integration for native Windows automation
- Natural Language Control - "Draw a 100x50 rectangle" โ creates geometry
- Automatic Connection Management with reconnection logic
- Full Type Hints & Pydantic Validation for safety
- Production Logging for debugging and monitoring
- Unit Tests covering all tools and edge cases
- Fast & Lightweight using FastMCP framework
Tech Stack
- Python 3.11+
- FastMCP - MCP framework
- pyautocad - AutoCAD COM wrapper
- pywin32 - Windows COM support
- Pydantic - Data validation
- uv - Fast Python package manager
Available Tools
Drawing Tools
-
create_line - Draw a line between two points
- Parameters:
x1,y1,x2,y2 - Returns: Object ID of created line
- Parameters:
-
create_circle - Draw a circle
- Parameters:
center_x,center_y,radius - Returns: Object ID of created circle
- Parameters:
-
create_rectangle - Draw a rectangle
- Parameters:
x,y,width,height - Returns: List of object IDs (polyline + entities)
- Parameters:
-
create_text - Add text annotation
- Parameters:
text,x,y,height - Returns: Object ID of created text
- Parameters:
Layer Management
-
create_layer - Create a new layer
- Parameters:
layer_name - Returns: Layer name (or error if exists)
- Parameters:
-
list_layers - List all layers in document
- No parameters
- Returns: List of layer names
Analysis & Measurement
- calculate_area - Calculate area of closed shape
- Parameters:
object_id - Returns: Calculated area value
- Parameters:
Document Operations
-
save_drawing - Save active drawing
- Parameters:
file_path(optional, defaults to current) - Returns: Success message with file path
- Parameters:
-
export_pdf - Export drawing to PDF
- Parameters:
output_path - Returns: Success message with PDF path
- Parameters:
-
get_active_document - Get active document info
- No parameters
- Returns: Document name and full path
Example Prompts
Once connected, use natural language to control AutoCAD:
Basic Drawing
-
"Draw a line from (0, 0) to (100, 50)" โ Calls
create_linewith coordinates -
"Create a circle at center (50, 50) with radius 25" โ Calls
create_circle -
"Draw a 100x50 rectangle at origin" โ Calls
create_rectangle
Text & Annotation
- "Add text 'WALL-A' at coordinates (10, 20) with height 5"
โ Calls
create_text
Layer Management
-
"Create a new layer called 'Fixtures'" โ Calls
create_layer -
"Show me all layers in the drawing" โ Calls
list_layers
Analysis
- "Calculate the area of object with ID 'ABC123'"
โ Calls
calculate_area
Document Management
-
"Save the drawing" โ Calls
save_drawing -
"Export the drawing to PDF at C:\output\plan.pdf" โ Calls
export_pdf -
"What's the active document name?" โ Calls
get_active_document
Testing
Run the unit test suite:
# Run all tests
pytest
# Run with coverage
pytest --cov=src
# Run specific test file
pytest tests/test_models.py
# Run with verbose output
pytest -vTest coverage includes:
- โ Pydantic model validation
- โ Tool parameter validation
- โ AutoCAD connection logic
- โ API endpoint functionality
- โ Error handling and edge cases
Project Structure
autocad-mcp-server/
โโโ src/
โ โโโ __init__.py
โ โโโ server.py # MCP server entrypoint
โ โโโ autocad_client.py # AutoCAD COM wrapper
โ โโโ models.py # Pydantic validation models
โ โโโ tools/
โ โโโ __init__.py # Tool registry
โ โโโ drawing.py # Line, circle, rectangle, text
โ โโโ layers.py # Layer management
โ โโโ dimensions.py # Area calculation
โ โโโ export.py # Save and PDF export
โโโ tests/
โ โโโ test_models.py # Model validation tests
โ โโโ test_server.py # API endpoint tests
โ โโโ test_tools.py # Tool handler tests
โโโ pyproject.toml # uv/pip dependencies
โโโ .env.example # Environment template
โโโ README.md # This fileArchitecture
AutoCAD Connection
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude Desktop / ChatGPT / etc โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ (MCP Protocol)
โ
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Server (FastMCP) โ
โ โโ Tool Registry โ
โ โโ Request Dispatcher โ
โ โโ Pydantic Validators โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ (Python API)
โ
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโ
โ AutoCAD Client (pyautocad) โ
โ โโ Connection Manager โ
โ โโ Retry Logic โ
โ โโ Error Handler โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ (COM Automation)
โ
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโ
โ AutoCAD Application (COM) โ
โ โโ Drawing API โ
โ โโ Layer Management โ
โ โโ Document Operations โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโPerformance Notes
- Fast - Direct COM calls, no network overhead
- Lightweight - Minimal dependencies
- Reliable - Auto-reconnection on AutoCAD restart
- Safe - Full input validation with Pydantic
- Concurrent - Handles multiple AI assistant requests
Security Considerations
- โ Runs locally on Windows (no cloud exposure)
- โ Input validation on all tool parameters
- โ Type-safe with Pydantic models
- โ Error handling prevents information leakage
- โ ๏ธ AutoCAD file access - ensure proper file permissions
- โ ๏ธ When exposing via network, use authentication/TLS
Contributing
Pull requests welcome! Areas for enhancement:
- Additional drawing primitives (arc, polyline, spline)
- Block/component support
- Dimension annotations
- Hatch patterns
- Custom properties
- Multi-document support
- macOS/Linux via parallel AutoCAD alternatives
License
MIT - See LICENSE file
Support
- ๐ง Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ Docs: AutoCAD COM API Reference
- ๐ MCP Protocol: Model Context Protocol Spec
Changelog
v1.0.0 (2026-06-05)
- Initial release
- 10 core CAD tools
- Claude Desktop integration
- Full test coverage
- Production-ready code
Roadmap
- AutoCAD Web API support for cloud deployments
- Real-time drawing updates with WebSocket
- Advanced geometry operations (offset, trim, extend)
- Material/property management
- CAM integration
- Version control for drawing changes
Made with โค๏ธ for AI-powered CAD automation
Installation
Prerequisites
- Windows 10/11 (AutoCAD COM API is Windows-only)
- AutoCAD 2020+ installed and running
- Python 3.11+ with pip
- uv package manager (recommended)
Step 1: Clone Repository
git clone https://github.com/yourusername/autocad-mcp-server.git
cd autocad-mcp-serverStep 2: Install Dependencies
Using uv (fastest):
uv syncOr using pip:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtStep 3: Install pywin32 COM Support
After installing pywin32, register COM components:
python -m pip install --upgrade pywin32
python Scripts/pywin32_postinstall.py -installOr if using uv:
uv run python -m pip install --upgrade pywin32
uv run python Scripts/pywin32_postinstall.py -installStep 4: Verify Installation
# Test that AutoCAD COM is accessible
python -c "import win32com.client; acad = win32com.client.GetObject(class='AutoCAD.Application'); print(f'AutoCAD {acad.Version} detected')"AutoCAD Prerequisites
1. AutoCAD Must Be Running
The server connects to a running AutoCAD instance via COM:
# Start AutoCAD before running the MCP server
# AutoCAD will be running in the background2. Enable COM Automation (Usually Default)
AutoCAD COM is enabled by default. To verify:
- Open AutoCAD
- Go to Tools โ Options โ System
- Ensure "OLE Support" is enabled
3. AutoCAD COM Version Support
| AutoCAD Version | COM Version | Python Support |
|---|---|---|
| 2024 | 24.x | โ Yes |
| 2023 | 23.x | โ Yes |
| 2022 | 22.x | โ Yes |
| 2021 | 21.x | โ Yes |
| 2020 | 20.x | โ Yes |
Configuration
Environment Variables
Create a .env file (copy from .env.example):
# AutoCAD connection timeout in seconds
AUTOCAD_TIMEOUT=10
# Connection retry attempts
RETRY_ATTEMPTS=3
# Logging level: DEBUG, INFO, WARNING, ERROR
LOG_LEVEL=INFO
# Server host and port
MCP_HOST=127.0.0.1
MCP_PORT=8000Usage
Option 1: Run as Standalone MCP Server
# Terminal 1: Start AutoCAD (if not already running)
# Open AutoCAD manually
# Terminal 2: Start MCP server
python -m src.serverThe server will:
- Detect running AutoCAD instance
- Register all tools with MCP
- Listen for tool calls
- Reconnect if AutoCAD restarts
Option 2: Claude Desktop Integration
Step 1: Get Server URL
When running locally, the server is available at:
stdio://python -m src.serverStep 2: Configure Claude Desktop
Edit ~/.config/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"autocad": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "d:/autocad-mcp-server"
}
}
}On Windows, the config is at:
C:\Users\[YourUsername]\AppData\Roaming\Claude\claude_desktop_config.jsonStep 3: Restart Claude Desktop
Close and reopen Claude Desktop. The AutoCAD tools will appear in the Tools section.
Option 3: ChatGPT Custom Actions
Create a custom action in ChatGPT with this schema pointing to your running MCP server.
Option 4: Cursor IDE Integration
In Cursor settings, configure the MCP server endpoint:
{
"mcpServers": {
"autocad": {
"command": "python",
"args": ["-m", "src.server"]
}
}
}Troubleshooting
Issue: "AutoCAD not found" or Connection Refused
Solution:
- Open AutoCAD manually before starting the MCP server
- Verify AutoCAD is running: Task Manager โ search for "acad"
- Check AutoCAD version supports COM (2020+)
# Debug: Test COM access
python -c "from src.autocad_client import AutoCADClient; c = AutoCADClient(); print(c.get_document_info())"Issue: "Module not found" errors
Solution:
# Reinstall dependencies
pip install -r requirements.txt
# Or with uv
uv sync --reinstallIssue: pywin32 COM not registered
Solution:
python -m pip install --upgrade pywin32
python Scripts/pywin32_postinstall.py -install
# On some systems, run as AdministratorIssue: "Permission denied" when saving files
Solution:
- Ensure the output directory exists and is writable
- Run AutoCAD as Administrator if needed
- Check file paths use forward slashes or double backslashes:
Copy & paste โ that's it
# Good "C:/output/drawing.pdf" "C:\\output\\drawing.pdf" # Bad "C:\output\drawing.pdf" # Single backslashes interpreted as escape codes
Issue: MCP Server won't start
Solution:
- Check Python version:
python --version(should be 3.11+) - Verify dependencies:
pip list | grep -E "fastmcp|pyautocad|pydantic" - Check logs:
Copy & paste โ that's it
# Run with DEBUG logging LOG_LEVEL=DEBUG python -m src.server
Issue: Tools not appearing in Claude Desktop
Solution:
- Verify config file exists:
C:\Users\[You]\AppData\Roaming\Claude\claude_desktop_config.json - Check JSON syntax is valid (use jsonlint.com)
- Restart Claude Desktop completely
- Check server logs for startup errors
Issue: AutoCAD crashes or becomes unresponsive
Solution:
- The server includes timeout and error handling
- If AutoCAD freezes, kill the process and restart
- Server will automatically reconnect when AutoCAD restarts
- Check for unsupported AutoCAD operations (e.g., complex geometry)