
AutoCAD MCP Server
β 1from ranvirw18
Production-grade MCP server that lets AI assistants control AutoCAD on Windows via natural language β draw lines, circles, rectangles, manage layers, calculate areas, and export PDFs through the AutoCAD COM API.
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
-
create_circle - Draw a circle
-
Parameters:
center_x,center_y,radius -
Returns: Object ID of created circle
-
create_rectangle - Draw a rectangle
-
Parameters:
x,y,width,height -
Returns: List of object IDs (polyline + entities)
-
create_text - Add text annotation
-
Parameters:
text,x,y,height -
Returns: Object ID of created text
Layer Management
-
create_layer - Create a new layer
-
Parameters:
layer_name -
Returns: Layer name (or error if exists)
-
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
Document Operations
-
save_drawing - Save active drawing
-
Parameters:
file_path(optional, defaults to current) -
Returns: Success message with file path
-
export_pdf - Export drawing to PDF
-
Parameters:
output_path -
Returns: Success message with PDF path
-
get_active_document - Get active document info
-
No parameters
-
Returns: Document name and full path
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 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=8000
Open AutoCAD manually
Terminal 2: Start MCP server
python -m src.server
The 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.server
Step 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.json
Step 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"] } } }
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
"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
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:
Or with uv
uv sync --reinstall
Issue: pywin32 COM not registered
Solution:
On some systems, run as Administrator
Issue: "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:
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:
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)
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 -v
Test 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 file
Architecture
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-server
Step 2: Install Dependencies
Using uv (fastest):
uv sync
Or using pip:
python -m venv venv venv\Scripts\activate pip install -r requirements.txt
Step 3: Install pywin32 COM Support
After installing pywin32, register COM components:
python -m pip install --upgrade pywin32 python Scripts/pywin32_postinstall.py -install
Or if using uv:
uv run python -m pip install --upgrade pywin32 uv run python Scripts/pywin32_postinstall.py -install
Step 4: Verify Installation
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 background
2. 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):
Usage
Option 1: Run as Standalone MCP Server
Terminal 1: Start AutoCAD (if not already running)
Reinstall dependencies
pip install -r requirements.txt
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+)