Labsco
ranvirw18 logo

FontofWeb

from ranvirw18

Extract Design Inspiration from Existing Websites

πŸ”₯πŸ”₯FreeQuick 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

Available Tools

Drawing Tools

  1. create_line - Draw a line between two points

    • Parameters: x1, y1, x2, y2
    • Returns: Object ID of created line
  2. create_circle - Draw a circle

    • Parameters: center_x, center_y, radius
    • Returns: Object ID of created circle
  3. create_rectangle - Draw a rectangle

    • Parameters: x, y, width, height
    • Returns: List of object IDs (polyline + entities)
  4. create_text - Add text annotation

    • Parameters: text, x, y, height
    • Returns: Object ID of created text

Layer Management

  1. create_layer - Create a new layer

    • Parameters: layer_name
    • Returns: Layer name (or error if exists)
  2. list_layers - List all layers in document

    • No parameters
    • Returns: List of layer names

Analysis & Measurement

  1. calculate_area - Calculate area of closed shape
    • Parameters: object_id
    • Returns: Calculated area value

Document Operations

  1. save_drawing - Save active drawing

    • Parameters: file_path (optional, defaults to current)
    • Returns: Success message with file path
  2. export_pdf - Export drawing to PDF

    • Parameters: output_path
    • Returns: Success message with PDF path
  3. 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_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

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:

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

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