Skip to main content
Glama
MuriloM676

AutoCAD MCP Server

by MuriloM676

🏗️ AutoCAD MCP Server

Automatize o AutoCAD (ou gere DWG/DXF headless) por linguagem natural, através do Model Context Protocol. Uma API, dois backends: File IPC (AutoCAD real) e ezdxf (headless, sem AutoCAD).


✨ O que este projeto faz

  • 8 ferramentas consolidadas (drawing, entity, layer, block, annotation, pid, view, system) sobre uma Ăşnica API.

  • Backend File IPC: controla o AutoCAD LT 2024+ real via mcp_dispatch.lsp + JSON em diretĂłrio temporário — sem roubar o foco da janela (PostMessageW(WM_CHAR)).

  • Backend ezdxf: geração de DXF totalmente headless (Linux, macOS, WSL), com render por matplotlib.

  • system(operation="execute_lisp"): executa AutoLISP arbitrário — vira uma plataforma de automação extensĂ­vel (plugins, fiberQ, FTTH, P&ID...).

  • Screenshots do desenho (Win32 PrintWindow no AutoCAD; render no headless).


Related MCP server: multiCAD-mcp

🚀 Como funciona

MCP Client (Claude / opencode / Cursor)
     │
     │  stdio · JSON-RPC
     â–Ľ
Python MCP Server (autocad_mcp — 8 tools)
     │
     ├──► File IPC ──► C:/temp/*.json ──► mcp_dispatch.lsp (AutoCAD LT)
     │      PostMessageW(WM_CHAR) → sem roubo de foco
     │
     └──► ezdxf ──► documento DXF em memória (headless)
            render de screenshot via matplotlib

Backend

Runtime

Precisa de AutoCAD?

Screenshot

File IPC

Windows + Python

✅ Sim — AutoCAD LT 2024+

Win32 PrintWindow

ezdxf

Qualquer plataforma

❌ Não (headless)

matplotlib

AUTOCAD_MCP_BACKEND=auto (padrĂŁo) tenta o File IPC e cai para ezdxf se nĂŁo encontrar a janela do AutoCAD.


📦 Instalação

Pré-requisitos (backends File IPC)

  • Windows 10/11 (usa APIs Win32 para envio de mensagens sem foco)

  • AutoCAD LT 2024 ou mais novo — AutoLISP foi adicionado ao LT em 2024 (Windows). AutoCAD LT para Mac nĂŁo suporta AutoLISP.

  • Python 3.10+ nativo do Windows (nĂŁo Ă© o Python do WSL)

  • Gerenciador de pacotes uv (guia de instalação)

O backend headless ezdxf roda em qualquer plataforma (Linux, macOS, WSL) sem AutoCAD instalado, para geração offline de DXF.

1. Clone e instale

git clone https://github.com/puran-water/autocad-mcp.git
cd autocad-mcp
uv sync

2. Carregue o dispatcher LISP no AutoCAD LT

Abra o AutoCAD LT e carregue lisp-code/mcp_dispatch.lsp com APPLOAD:

  1. Digite APPLOAD na linha de comando do AutoCAD.

  2. Navegue até <repo>/lisp-code/mcp_dispatch.lsp.

  3. Clique em Load.

  4. VocĂŞ deve ver: === MCP Dispatch v3.1 loaded === e Ready for commands via (c:mcp-dispatch).

Dica: adicione o arquivo ao Startup Suite (na caixa APPLOAD) para carregar automaticamente em todo desenho.

3. Configure seu cliente MCP

Adicione à configuração do seu cliente MCP (ex.: Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "autocad-mcp": {
      "command": "C:\\path\\to\\autocad-mcp\\.venv\\Scripts\\python.exe",
      "args": ["-m", "autocad_mcp"],
      "env": { "AUTOCAD_MCP_BACKEND": "auto" }
    }
  }
}

Pontos-chave:

  • command deve apontar para o Python do Windows dentro do venv do projeto (nĂŁo o Python do WSL).

  • AUTOCAD_MCP_BACKEND pode ser auto (padrĂŁo — tenta File IPC, cai para ezdxf), file_ipc (exige AutoCAD) ou ezdxf (somente headless).

Rodando a partir do WSL

Se seu cliente MCP roda no WSL (ex.: Claude Code), lance o servidor via cmd.exe para que execute como processo nativo do Windows:

{
  "mcpServers": {
    "autocad-mcp": {
      "type": "stdio",
      "command": "cmd.exe",
      "args": ["/d", "/s", "/c", "cd /d C:\\path\\to\\autocad-mcp && .venv\\Scripts\\python.exe -m autocad_mcp"],
      "env": { "AUTOCAD_MCP_BACKEND": "auto" }
    }
  }
}

4. Verifique

Do seu cliente MCP, chame:

system(operation="status")

VocĂŞ deve ver backend: "file_ipc" se o AutoCAD estiver rodando, ou backend: "ezdxf" em modo headless.


đź§° Ferramentas

O servidor expõe 8 ferramentas sobre transporte stdio MCP:

drawing — Gestão de arquivos/desenhos

create, open, info, save, save_as_dxf, plot_pdf, purge, get_variables, undo, redo

Operação

Descrição

File IPC

ezdxf

create

Cria novo desenho vazio

âś…

âś…

open

Abre um .dwg existente (FILEDIA suprimido)

âś…

❌

info

Extents, contagem de ent., layers, blocks

âś…

âś…

save

Salva (QSAVE, ou path com SAVEAS)

âś…

âś…

save_as_dxf

Exporta como DXF

âś…

âś…

plot_pdf

Plota para PDF

âś…

❌

purge

Limpa objetos nĂŁo usados

âś…

❌

get_variables

Obtém variáveis de sistema

âś…

❌

undo / redo

Desfazer / refazer

âś…

❌

create agora zera e limpa o desenho atual (apaga tudo + purge) em vez de _.NEW, preservando o namespace do dispatcher LISP.

entity — CRUD + modificação

Criar: create_line, create_circle, create_polyline, create_rectangle, create_arc, create_ellipse, create_mtext, create_hatch Ler: list, count, get Modificar: copy, move, rotate, scale, mirror, offset, array, fillet, chamfer, erase

layer — Camadas

list, create, set_current, set_properties, freeze, thaw, lock, unlock

block — Blocos e atributos

list, insert, insert_with_attributes, get_attributes, update_attribute, define

annotation — Texto, cotas e líderes

create_text, create_dimension_linear, create_dimension_aligned, create_dimension_angular, create_dimension_radius, create_leader

pid — Diagrama P&ID (biblioteca CTO)

setup_layers, insert_symbol, list_symbols, draw_process_line, connect_equipment, add_flow_arrow, add_equipment_tag, add_line_number, insert_valve, insert_instrument, insert_pump, insert_tank

A biblioteca CTO (src/autocad_mcp/pid/cto_library.py) cataloga 600+ símbolos ISA 5.1-2009 em .dwg por categoria (válvulas, bombas, tanques, instrumentos, etc.). No backend headless os símbolos passam por conversão DWG→DXF via ezdxf.addons.odafc.

view — Viewport e screenshot

zoom_extents, zoom_window, get_screenshot

get_screenshot captura a view atual do AutoCAD como PNG via PrintWindow (Win32) — funciona mesmo com o AutoCAD minimizado. No backend ezdxf, o render é via matplotlib.

system — Gestão do servidor

status, health, get_backend, runtime, init, execute_lisp


🧪 execute_lisp — plataforma de automação ilimitada

Além das ferramentas prontas, o servidor pode rodar qualquer AutoLISP:

system(operation="execute_lisp", data={"code": "(+ 1 2)"})

Isso transforma o servidor de um conjunto fixo de comandos em uma plataforma extensível — por exemplo, para acessar plugins LISP de terceiros (fiberQ/FTTH/G-PON):

system(operation="execute_lisp", data={"code": "(c:FQ)"})
system(operation="execute_lisp", data={"code": "(command \"_FQKABL\")"})

execute_lisp funciona somente no backend File IPC.


⚙️ Variáveis de ambiente

Variável

PadrĂŁo

Descrição

AUTOCAD_MCP_BACKEND

auto

Seleção: auto, file_ipc, ezdxf

AUTOCAD_MCP_IPC_DIR

C:/temp

DiretĂłrio dos arquivos IPC (deve coincidir nos lados Python e LISP)

AUTOCAD_MCP_IPC_TIMEOUT

10.0

Timeout do IPC em segundos (1–300)

AUTOCAD_MCP_ONLY_TEXT

false

Desabilita screenshots (sĂł texto)

CTO_LIBRARY_PATH

C:/PIDv4-CTO

Raiz da biblioteca CTO de sĂ­mbolos P&ID

Importante: se você mudar AUTOCAD_MCP_IPC_DIR, precisa atualizar a variável *mcp-ipc-dir* no mcp_dispatch.lsp para corresponder.


đź’» Compatibilidade com AutoLISP no LT

AutoLISP foi adicionado ao AutoCAD LT no lançamento de 2024 (Windows). AutoCAD LT para Mac não suporta AutoLISP.

Suportado (LT 2024+ Windows)

NĂŁo suportado

.lsp / .fas / .vlx / .dcl

VLIDE (Visual LISP IDE)

Todas as funções vl-*

vlax-* (ActiveX/COM)

I/O de arquivo (open, read-line, ...)

Express Tools

Acesso a entidades (entget, entmod, ...)

Operações 3D

Selection sets

AutoLISP no Mac

O dispatcher mcp_dispatch.lsp Ă© totalmente compatĂ­vel com LT 2024+.


đź§Ş Desenvolvimento

uv sync
uv run pytest tests/ -v

🆕 O que há de novo (v3.1)

  • execute_lisp — executa AutoLISP arbitrário via arquivo temporário. Vira uma plataforma de automação extensĂ­vel.

  • Undo / Redo — passo Ăşnico via ferramenta drawing.

  • Abrir desenho — abre .dwg existentes programaticamente (FILEDIA suprimido).

  • Criar desenho — zera e limpa o desenho atual (apaga tudo + purge), preservando o namespace do dispatcher.

  • Salvar com caminho — save com path usa SAVEAS; sem path usa QSAVE.

  • Correção get_variables — respeita o parâmetro names.

  • Correção polyline/leader — arrays de pontos codificados em formato separado por ponto e vĂ­rgula.

  • Prefixo ESC — envia 2x ESC antes de cada dispatch para cancelar comandos pendentes de timeouts anteriores.

  • Fallback UTF-8/cp1252 — lida com caracteres nĂŁo-ASCII nos arquivos de resultado LISP (AutoCAD grava Windows-1252).

  • Timeout IPC configurável — AUTOCAD_MCP_IPC_TIMEOUT (1–300s, padrĂŁo 10).

  • Init thread-safe — asyncio.Lock evita corridas de inicialização paralela.


🙏 Agradecimentos

Este projeto é uma adaptação e expansão do servidor de código aberto puran-water/autocad-mcp (MIT). Agradecemos aos contribuidores originais por criar a base.

📄 Licença

Licenciado sob a MIT License. Veja o arquivo LICENSE.

Available Tools

8 tools
annotationA

Annotation: text, dimensions, and leaders.

Operations: create_text — data: {x, y, text, height?, rotation?, layer?} create_dimension_linear — data: {x1, y1, x2, y2, dim_x, dim_y} create_dimension_aligned — data: {x1, y1, x2, y2, offset} create_dimension_angular — data: {cx, cy, x1, y1, x2, y2} create_dimension_radius — data: {cx, cy, radius, angle} create_leader — data: {points: [[x,y],...], text}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark the tool as non-read-only, and the operation names imply creation, but the description adds no behavioral context beyond that. It does not mention side effects on the drawing, error behavior, coordinate-system assumptions, or what happens after a successful operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, well-structured as a scannable operation list, and every line adds useful information. There is no filler or redundant restating of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the generic schema, the description is nearly complete: it covers all operations and their payload shapes. Minor gaps include undocumented behavior of include_screenshot and lack of explicit units or coordinate context, but these do not prevent correct operation selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is generic and has 0% schema description coverage, so the description carries the full burden. It compensates thoroughly by defining the exact data object shape expected for every operation, including required fields and optional markers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('Annotation') and enumerates six specific creation operations (text, dimension variants, leader), so an agent knows exactly what the tool does. It is clearly distinguishable from sibling tools like drawing, entity, and layer by its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening line 'Annotation: text, dimensions, and leaders' plus the operation list gives a clear context for when to use this tool. It does not explicitly name alternatives or exclusions, but the intended usage is obvious enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

blockA

Block definition, insertion, and attribute management.

Operations: list — List all block definitions. insert — data: {name, x, y, scale?, rotation?, block_id?} insert_with_attributes — data: {name, x, y, scale?, rotation?, attributes: {tag: value}} get_attributes — data: {entity_id} update_attribute — data: {entity_id, tag, value} define — data: {name, entities: [{type, ...}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false, the description's listing of mutating operations (insert, update_attribute, define) is consistent with the annotation. It adds operation-level context but does not disclose side effects, coordinate assumptions, failure behavior, or what happens when metadata is updated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with a one-line summary followed by a structured operation list. Every operation gets a single line with its data payload, and there is no filler or redundant restating of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-operation dispatch tool with a generic data field and no enums, the description provides the necessary operation vocabulary and rough data contracts. However, requiredness of fields like x/y/name is not marked, and deeper semantics for define and attribute operations are left vague.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the parameter documentation burden, and it does so with per-operation data shapes including optional markers for scale, rotation, and block_id. It still leaves some fields under-specified, such as the entities array in define, attribute value types, and include_screenshot semantics, but the core data contracts are understandable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line scopes the tool to block definition, insertion, and attribute management, and the operation list enumerates distinct verbs such as list, insert, define, get_attributes, and update_attribute. This clearly identifies the resource and actions, distinguishing it from sibling drawing, entity, and layer tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies block-related usage through the operation list, but it does not explicitly state when to use this tool versus siblings like entity or layer. There is no exclusion guidance or comparison to alternatives, so an agent must infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drawingA

Drawing file management.

Operations: create — Create a new empty drawing. data: {name?} open — Open an existing drawing. data: {path} info — Get drawing extents, entity count, layers, blocks. save — Save current drawing. data: {path?} (saves to path if given, else QSAVE) save_as_dxf — Export as DXF. data: {path} plot_pdf — Plot to PDF. data: {path} purge — Purge unused objects. get_variables — Get system variables. data: {names: [...]} undo — Undo last operation. redo — Redo last undone operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false, the tool is already marked as potentially mutating, and the description adds meaningful behavioral details: save mentions QSAVE fallback, undo/redo state operations, and purge targets unused objects. It does not disclose destructive side effects (e.g., purge deleting data permanently), but the per-operation explanations go well beyond the bare annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a tightly formatted bullet list with no filler. Each line adds one distinct operation plus a brief explanation and data hint, and the overall purpose is front-loaded in the first line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a ten-operation dispatcher, the description covers each operation's function and relevant data requirements, and an output schema exists to cover return values. The main gap is the unexplained `include_screenshot` parameter, which prevents the description from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only documentation of valid `operation` values and `data` structures. It lists all operations and gives per-operation data hints such as `data: {path}` for open and `data: {names: [...]}` for get_variables. However, the `include_screenshot` parameter is never mentioned, leaving one parameter undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with "Drawing file management" and then enumerates ten distinct operations, each with a verb and a resource (e.g., "create — Create a new empty drawing," "plot_pdf — Plot to PDF"). This makes the dispatcher's purpose and each subcommand unambiguous. Although sibling tools are not referenced, the operations are clearly scoped to whole-drawing management, distinguishing it from entity/layer/block tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list implicitly tells an agent when to use this tool (e.g., when saving or opening a drawing), but there are no explicit when-not-to-use statements or pointers to siblings like entity, layer, or block. Usage context is conveyed indirectly through the operation names, not through explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

entityA

Entity creation, querying, and modification.

Create operations: create_line — x1, y1, x2, y2, layer? create_circle — data: {cx, cy, radius}, layer? create_polyline — points: [[x,y],...], data: {closed?}, layer? create_rectangle — x1, y1, x2, y2, layer? create_arc — data: {cx, cy, radius, start_angle, end_angle}, layer? create_ellipse — data: {cx, cy, major_x, major_y, ratio}, layer? create_mtext — data: {x, y, width, text, height?}, layer? create_hatch — entity_id, data: {pattern?}

Read operations: list — layer? → list entities count — layer? → count entities get — entity_id → entity details

Modify operations: copy — entity_id, data: {dx, dy} move — entity_id, data: {dx, dy} rotate — entity_id, data: {cx, cy, angle} scale — entity_id, data: {cx, cy, factor} mirror — entity_id, x1, y1, x2, y2 offset — entity_id, data: {distance} array — entity_id, data: {rows, cols, row_dist, col_dist} fillet — data: {id1, id2, radius} chamfer — data: {id1, id2, dist1, dist2} erase — entity_id

ParametersJSON Schema
NameRequiredDescriptionDefault
x1No
x2No
y1No
y2No
dataNo
layerNo
pointsNo
entity_idNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=false, so the description carries the burden. The operation list correctly reflects mutating and read-only behaviors, but does not mention side effects, prerequisites such as an open drawing, or the meaning of the include_screenshot flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is organized into Create/Read/Modify groups with one line per operation, and every line adds a signature or behavior. The summary sentence is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 19 operations and only 1 required schema parameter, the description covers most of what an agent needs to choose and call an operation. It would be more complete if it explicitly stated that operation must be set to one of the listed names and described include_screenshot.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema_description_coverage=0%, the operation-specific parameter shapes such as create_circle data: {cx, cy, radius} and offset data: {distance} provide crucial meaning absent from the schema. It still leaves some semantics implicit, such as angle/factor units and accepted operation strings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line 'Entity creation, querying, and modification' names the resource and the three verb families, and the operation list makes the scope concrete. It lacks explicit differentiation from siblings like drawing or block, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly signals this is the tool for entity-level operations such as create_line, list, move, and erase rather than drawing/session-level tasks. There is no explicit 'when-not-to-use' or direct pointer to a sibling, but the context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

layerA

Layer creation and management.

Operations: list — List all layers with properties. create — data: {name, color?, linetype?} set_current — data: {name} set_properties — data: {name, color?, linetype?, lineweight?} freeze — data: {name} thaw — data: {name} lock — data: {name} unlock — data: {name}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false, the annotations already signal mutation; the description goes further by itemizing mutating operations such as create, set_current, set_properties, freeze, thaw, lock, and unlock. It does not disclose side effects or reversibility, but the operation list provides meaningful behavioral detail beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact, front-loaded summary followed by a bulleted operation list with minimal syntax. Every line adds information, and it avoids redundancy with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-operation layer tool with a sparse schema, the description covers the core call shape well: operation names and per-operation data. The output schema presumably handles return-value documentation, so the main remaining gap is the unexplained include_screenshot parameter and lack of explicit required-field notes. Overall it is adequate for an agent to invoke most operations correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning; it does so by listing valid operation strings and showing the expected data object shape for each operation (e.g., create data: {name, color?, linetype?}). However, it leaves include_screenshot completely undocumented and does not explicitly mark which fields within data are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Layer creation and management' and then enumerates eight specific operations (list, create, set_current, set_properties, freeze, thaw, lock, unlock), making both the resource (layers) and the actions concrete. This clearly separates it from sibling tools like entity, block, or view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list implies the tool is for any layer-management task, but the description never explicitly states when to choose it over a sibling tool or when not to use it. No prerequisites, exclusions, or alternative tools are mentioned, so usage guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pidA

P&ID drawing with CTO symbol library.

Operations: setup_layers — Create standard P&ID layers. insert_symbol — data: {category, symbol, x, y, scale?, rotation?} list_symbols — data: {category} draw_process_line — data: {x1, y1, x2, y2} connect_equipment — data: {x1, y1, x2, y2} add_flow_arrow — data: {x, y, rotation?} add_equipment_tag — data: {x, y, tag, description?} add_line_number — data: {x, y, line_num, spec} insert_valve — data: {x, y, valve_type, rotation?, attributes?} insert_instrument — data: {x, y, instrument_type, rotation?, tag_id?, range_value?} insert_pump — data: {x, y, pump_type, rotation?, attributes?} insert_tank — data: {x, y, tank_type, scale?, attributes?}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals that operations mutate the drawing by creating layers, inserting symbols, and connecting equipment, which is consistent with the readOnlyHint=false annotation. It does not disclose prerequisites such as whether setup_layers must be called first, coordinate system expectations, or the effect of include_screenshot. It adds operation-level behavior but not deeper behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a tight, consistently formatted operation list with no filler. The domain statement is front-loaded, and every line adds a distinct operation or data shape. It is an excellent model of concise reference documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-operation dispatch tool, the description covers all operation names and their data payloads, and an output schema exists so return-value documentation is not essential. It is slightly incomplete around the include_screenshot parameter and setup ordering, but otherwise sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description lists the expected data keys for each operation, including optional fields marked with '?'. This substantially compensates for the generic schema. The only structured parameter not explained is include_screenshot, which prevents a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening phrase 'P&ID drawing with CTO symbol library' plus the enumerated operations (setup_layers, insert_symbol, draw_process_line, etc.) makes the tool's purpose concrete. It stops short of a clean single verb+resource statement and does not explicitly contrast with sibling drawing/layer tools, so it earns 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list implies when to use this tool, such as when inserting P&ID symbols or drawing process lines. However, it never explicitly states when to prefer this tool over sibling tools like drawing, layer, or block, and it gives no exclusions. Guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

systemB
Read-only

Server status and management.

Operations: status — Backend info, capabilities, health check. health — Quick health check (ping backend). get_backend — Return current backend name and capabilities. runtime — Return process/runtime details for spawn diagnostics. init — Re-initialize the backend. execute_lisp — Execute arbitrary AutoLISP code (File IPC only). data: {code}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, yet the description reveals operations like 'init — Re-initialize the backend' and 'execute_lisp — Execute arbitrary AutoLISP code', which are clearly mutating and potentially destructive. This directly contradicts the read-only annotation, making the description unreliable for safety expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with a clear front-loaded summary and a bulleted operation list. It avoids unnecessary prose, though the repeated use of 'Backend' in multiple operations slightly reduces tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values are covered, but the description lacks critical context for a multi-operation tool: no guidance on which operation to use in what situation, no explanation of the 'File IPC only' restriction beyond execute_lisp, and no mention of potential side effects for init. The annotation contradiction further undermines completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate, but it only partially does. It lists valid values for the operation parameter and shows that execute_lisp expects data: {code}, but other operations' data requirements and the include_screenshot parameter remain unexplained, leaving significant ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Server status and management' and enumerates six specific operations, making the tool's purpose explicit. It also distinguishes itself from sibling tools like layer, entity, and drawing by focusing on system-level operations rather than drawing content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list implies various use cases (health check, backend info, executing LISP), but there is no explicit guidance on when to choose this tool over alternatives or when to prefer one operation over another. The context is clear enough for basic decisions, but exclusions and alternatives are not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewA
Read-only

Viewport control and screenshot capture.

Operations: zoom_extents — Zoom to show all entities. zoom_window — Zoom to window: x1, y1, x2, y2 get_screenshot — Capture current view as PNG image.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1No
x2No
y1No
y2No
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, lowering the burden; the description adds operation semantics and notes that get_screenshot returns a PNG. However, it does not disclose the coordinate space for zoom_window (model/world vs screen), whether coordinates are effectively required despite schema null defaults, or what happens if coordinates are omitted or passed with other operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A one-line purpose statement followed by three bullet-style operation lines; every sentence earns its place. The purpose is front-loaded, and each operation is a single scannable line with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a dispatcher with an unconstrained operation parameter and no enums, the description supplies the critical operation vocabulary that the schema lacks, and the output schema presumably covers return values. However, it leaves notable gaps: coordinate semantics for zoom_window, whether coordinates are required for that operation, and whether the coordinate parameters should be null for the other two operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description partially compensates: 'zoom_window — Zoom to window: x1, y1, x2, y2' maps the four numeric parameters to the operation that consumes them, and the Operations list is the only source of valid values for the unconstrained operation string. But it leaves coordinate ordering, units, and coordinate system unspecified, and does not clarify that x1/y1/x2/y2 are effectively required for zoom_window even though the schema marks them optional with null defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose ('Viewport control and screenshot capture') and enumerates three distinct operations, each with a specific verb, resource, and effect (zoom_extents, zoom_window, get_screenshot). It is immediately distinguishable from sibling tools like drawing, entity, or layer, which cover different AutoCAD domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list gives implicit selection guidance — zoom_extents for showing everything, zoom_window for a specific region, get_screenshot for capturing PNG output. However, there is no explicit when-to-use wording, no exclusions, and no stated alternative among the sibling tools; the domain separation from drawing/entity/layer/block is only implied by names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv3.0.0
    • First observedannotation
    • First observedblock
    • First observeddrawing
    • First observedentity
    • First observedlayer
    • First observedpid
    • First observedsystem
    • First observedview

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Each top-level group targets a distinct domain (drawing, view, entity, layer, block, annotation, pid, system), so selection is mostly clear. Minor overlap exists where entity.create_mtext and annotation.create_text both create text, and pid's specialized insert_valve/instrument/pump/tank parallel generic entity creation, but descriptions keep the boundaries workable.

Naming Consistency4/5

Namespaces and operations use a consistent snake_case verb_noun pattern (create_line, set_current, insert_symbol, add_flow_arrow). A few bare verbs (list, count, get, copy, move, erase) deviate slightly but remain conventional and readable within their groups.

Tool Count4/5

Eight well-grouped top-level tools is a sensible scope for a large CAD domain, avoiding a flat blizzard of 60+ operations. The grouping is heavy (each group bundles many sub-operations), but that is a reasonable encapsulation rather than a mismatch.

Completeness5/5

The surface covers the full CAD lifecycle: file create/open/save/export/plot, entity CRUD with transforms and boolean-style ops, layer and block management with attributes, annotation, and a dedicated P&ID workflow. Undo/redo and system diagnostics round it out with no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to control CAD software like AutoCAD, GstarCAD, and ZWCAD through natural language instructions via the Model Context Protocol. It supports automated drawing of shapes, layer management, and saving designs to DWG files without manual interface interaction.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Controls CAD applications (AutoCAD, ZWCAD, etc.) via AI assistants through the Model Context Protocol, enabling drawing, layer management, and automation through natural language or direct tool calls.
    121
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language control of AutoCAD LT for automation and headless DXF generation, supporting drawing, entity, layer, block, annotation, P&ID, and system operations via an MCP interface.
    MIT