Labsco
ranvirw18 logo

AutoCAD MCP Server

β˜… 1

from 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.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

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:

Copy & paste β€” that's it
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:

Copy & paste β€” that's it
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_line with 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

Copy & paste β€” that's it
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

Copy & paste β€” that's it
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 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