autocad-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@autocad-mcpdraw a line from 0,0 to 10,10"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AutoCAD MCP Server
Máy chủ MCP cho tự động hóa AutoCAD LT và tạo DXF headless.
Hai backend, một API:
Backend | Runtime | Cần AutoCAD? | Screenshot |
File IPC | Windows Python | Có — AutoCAD LT 2024+ (Windows) | Win32 PrintWindow |
ezdxf | Mọi nền tảng | Không (headless) | matplotlib render |
Server cung cấp 8 công cụ chính (drawing, entity, layer, block, annotation, pid, view, system) thông qua MCP stdio transport.
Một MCP client (Claude Desktop, Claude Code, v.v.) có thể kết nối và điều khiển AutoCAD bằng yêu cầu ngôn ngữ tự nhiên.
Prerequisites (Backend File IPC)
Yêu cầu:
Windows 10/11
(Backend File IPC dùng Win32 API để gửi message tới cửa sổ mà không cần focus)AutoCAD LT 2024 trở lên
AutoLISP được hỗ trợ từ LT 2024 trên Windows.⚠ AutoCAD LT cho Mac không hỗ trợ AutoLISP.
Python 3.10+
(Python chạy native trên Windows — không dùng WSL Python)uv package manager
Cài đặt:
https://docs.astral.sh/uv/getting-started/installation/
💡 Backend ezdxf headless chạy được trên:
Linux
macOS
WSL
và không cần AutoCAD, chỉ dùng để tạo file DXF offline.
Quick Start
1. Clone và cài đặt
git clone https://github.com/ks40-academy/autocad-mcp.git
cd autocad-mcp
uv sync2. Load LISP dispatcher trong AutoCAD LT
Mở AutoCAD LT và load file:
mcp_dispatch.lsp
bằng lệnh APPLOAD
Các bước:
Gõ
APPLOADtrong command lineChọn file
<repo>/lisp-code/mcp_dispatch.lspNhấn Load
Nếu thành công sẽ thấy:
=== MCP Dispatch v3.1 loaded ===
Ready for commands via (c:mcp-dispatch)💡 Mẹo
Thêm file này vào Startup Suite trong APPLOAD để AutoCAD tự load khi mở bản vẽ.
3. Cấu hình MCP client
Ví dụ cấu hình trong:
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" }
}
}
}Lưu ý quan trọng
commandphải trỏ tới Windows Python trong venvKhông dùng WSL Python
Chạy từ WSL
Nếu MCP client chạy trong WSL (ví dụ Claude Code):
khởi động server thông qua cmd.exe
{
"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. Kiểm tra hoạt động
Từ MCP client gọi:
system(operation="status")Kết quả:
backend: "file_ipc"nếu AutoCAD đang chạy
hoặc
backend: "ezdxf"nếu chạy chế độ headless.
Tools
Related MCP server: ai-cad
drawing — Quản lý file bản vẽ
Operation | Mô tả | File IPC | ezdxf |
create | Reset bản vẽ sạch | Yes | Yes |
open | Mở bản vẽ | Yes | Yes (DXF) |
info | Thông tin entity và layer | Yes | Yes |
save | Lưu bản vẽ | Yes | Yes |
save_as_dxf | Xuất DXF | Yes | Yes |
plot_pdf | Xuất PDF | Yes | No |
purge | Xóa đối tượng không dùng | Yes | Yes |
get_variables | Lấy biến hệ thống | Yes | Yes |
undo | Hoàn tác | Yes | No |
redo | Làm lại | Yes | No |
entity — Quản lý đối tượng
Tạo
create_line
create_circle
create_polyline
create_rectangle
create_arc
create_ellipse
create_mtext
create_hatch
Đọc
list
count
get
Chỉnh sửa
copy
move
rotate
scale
mirror
offset*
array
fillet*
chamfer*
erase
⚠ offset, fillet, chamfer chỉ dùng với File IPC.
layer — Quản lý layer
list
create
set_current
set_properties
freeze
thaw
lock
unlock
block — Thao tác block
Operation | File IPC | ezdxf |
list | Yes | Yes |
insert | Yes | Yes |
insert_with_attributes | Yes | Yes |
get_attributes | Yes | Yes |
update_attribute | Yes | Yes |
define | No | Yes |
annotation — Chú thích
create_text
create_dimension_linear
create_dimension_aligned
create_dimension_angular
create_dimension_radius
create_leader
pid — P&ID
Thư viện ký hiệu CTO.
Các lệnh:
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
⚠ Cần cài thư viện:
https://www.cadtoolsonline.com/
vào thư mục
C:\PIDv4-CTO\view — Viewport & Screenshot
Operation | Mô tả |
zoom_extents | Zoom toàn bộ |
zoom_window | Zoom theo cửa sổ |
get_screenshot | Chụp ảnh AutoCAD |
File IPC dùng:
PrintWindow (Win32)Có thể chụp ngay cả khi AutoCAD bị minimize.
ezdxf dùng:
matplotlib rendersystem — Quản lý server
status
health
get_backend
runtime
init
execute_lisp
execute_lisp
Chạy AutoLISP bất kỳ:
Ví dụ
(+ 1 2)Gửi:
data: {code: "(+ 1 2)"}Biến server thành nền tảng automation mở rộng.
Architecture
MCP Client (Claude)
│
│ stdio (JSON-RPC)
▼
Python MCP Server (autocad_mcp)
│
├── File IPC Backend
│ │
│ └── C:/temp/*.json
│ │
│ ▼
│ mcp_dispatch.lsp (AutoCAD)
│
└── ezdxf Backend
│
▼
in-memory DXFFile IPC gửi keystrokes tới AutoCAD bằng:
PostMessageW(WM_CHAR)Ưu điểm:
Không cướp focus cửa sổ
Có thể làm việc ứng dụng khác song song.
Environment Variables
Variable | Default | Mô tả |
AUTOCAD_MCP_BACKEND | auto | chọn backend |
AUTOCAD_MCP_IPC_DIR | C:/temp | thư mục IPC |
AUTOCAD_MCP_IPC_TIMEOUT | 10 | timeout |
AUTOCAD_MCP_ONLY_TEXT | false | tắt screenshot |
⚠ Nếu đổi:
AUTOCAD_MCP_IPC_DIRphải sửa luôn biến:
*mcp-ipc-dir*trong file
mcp_dispatch.lspDevelopment
uv sync
uv run pytest tests/ -vAutoCAD LT AutoLISP Compatibility
AutoLISP được thêm vào AutoCAD LT 2024 (Windows).
Hỗ trợ | Không hỗ trợ |
.lsp | VLIDE |
vl-* functions | vlax-* |
File I/O | Express Tools |
entget | 3D operations |
selection sets | AutoLISP trên Mac |
What's New v3.1
Các cập nhật chính:
execute_lisp
undo / redo
open drawing
create drawing reset
save path
get_variables fix
polyline fix
ESC prefix
UTF8 fallback
IPC timeout config
thread-safe init
License
MIT
Available Tools
8 toolsannotationA
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}
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| operation | Yes | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=false, indicating mutation. The description adds no further behavioral context, such as whether operations modify the current drawing, prerequisites for coordinates, or potential side effects. It is purely a list of operations with data fields, providing no disclosure beyond what the readOnlyHint already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact, well-organized list. It front-loads the purpose and then enumerates operations with their required data fields in a consistent, scannable format. Every line is informative and there is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (six distinct operations) and the sparse schema, the description covers the essential information needed to invoke each operation. An output schema exists, so return values need not be explained. However, it omits contextual details like coordinate system, units, or the effect of include_screenshot, leaving some ambiguity for an agent without prior AutoCAD knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is extremely generic (data is an untyped object), so the description is essential to know which fields each operation expects. It lists the data structure for every operation, enabling an agent to pass correct parameters. However, it does not explain the meaning of coordinate fields (e.g., x, y, dim_x) or units, which would add further semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's scope: 'Annotation: text, dimensions, and leaders.' It then lists specific creation operations (create_text, create_dimension_linear, etc.), making it obvious this tool creates annotation entities. This distinguishes it from siblings like 'layer' or 'entity' which handle different drawing aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The list of operations provides clear context that this tool is for creating annotations, and the separation from sibling tools (layer, drawing, etc.) makes the usage context obvious. However, it does not explicitly state when not to use this tool or name alternatives, so it lacks the explicit exclusion guidance that would earn a 5.
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, ...}]}
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| operation | Yes | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, offering little behavioral detail. The description compensates by listing mutating operations (insert, define, update_attribute) and specifying the data payload expected for each. It still omits side effects or permissions, but the operation-level detail goes well beyond the minimal annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and scannable, with a one-line summary followed by a bulleted list of operations. Every line adds necessary information, and there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-operation tool with a non-specific schema, this description provides a solid operation catalog and per-operation data contracts. It lacks detail on the 'include_screenshot' parameter and error/return behavior, but the presence of an output schema reduces the need to document returns. Overall, it is sufficient for an agent to select and invoke the correct operation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is highly generic: 'operation' is a bare string without an enum, and 'data' is a free-form object. The description compensates by enumerating valid operation values and giving explicit data shapes (name, x, y, scale?, rotation?, etc.). However, the 'include_screenshot' parameter is never explained, preventing full semantic coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Block definition, insertion, and attribute management,' which clearly identifies the resource (blocks) and the verbs (define, insert, manage attributes). It then enumerates six specific sub-operations, making the tool's scope unmistakable and distinct from sibling tools like layer, entity, or annotation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys a clear domain: everything here is block-related, so an agent can infer when to choose this tool. However, it does not explicitly state exclusions or alternatives (e.g., 'use entity for non-block operations'), leaving a minor gap in when-not-to-use guidance.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| operation | Yes | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations only include readOnlyHint=false, the description adds operation-specific behaviors such as save's fallback to QSAVE when no path is given and open requiring an existing drawing. It does not detail destructive side effects for purge or plot_pdf, but it provides more than the raw annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact bulleted list with one-line explanations for each operation, front-loaded with the tool's purpose. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with ten sub-operations, and the description covers each operation's purpose and data fields. However, it omits the include_screenshot parameter and does not explicitly guide usage relative to sibling tools, but the output schema likely covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by listing operation-specific data fields (e.g., data: {path} for open, data: {names: [...]} for get_variables). However, the include_screenshot parameter is not documented, leaving a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as 'Drawing file management' and enumerates ten specific operations (create, open, info, save, etc.) with brief explanations, distinguishing it from sibling tools like layer and entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'Drawing file management' and operation names, but does not explicitly state when to choose this tool over siblings like layer or entity. It provides context but no exclusions or direct comparisons.
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
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | No | ||
| x2 | No | ||
| y1 | No | ||
| y2 | No | ||
| data | No | ||
| layer | No | ||
| points | No | ||
| entity_id | No | ||
| operation | Yes | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists mutating operations (move, erase, copy) and details their parameters, which goes beyond the simple readOnlyHint=false annotation. However, it does not disclose side effects (e.g., erase is destructive), error conditions, or any required permissions, leaving behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear section headers and compact per-operation signatures. It is front-loaded with a summary line and avoids redundant prose. It is long, but each line is necessary to cover the many operations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all operation signatures, but for a tool with 10 parameters and many distinct operations, it lacks higher-level context such as prerequisite conditions (e.g., an open drawing), return value behavior, and any caveats about destructive operations. The presence of an output schema mitigates the return value gap, but other contextual details remain missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries the full burden of explaining parameters. It does this well by mapping each operation to its specific parameters, including nested data fields like fillet's {id1, id2, radius}. However, it omits the include_screenshot parameter and doesn't explain the meaning of '?' in the signatures.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function as 'Entity creation, querying, and modification' and lists all supported operations (create_line, list, move, erase, etc.), making its scope unambiguous and distinguishing it from sibling tools like layer, block, or drawing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description groups operations into Create, Read, and Modify, implying when each operation should be used. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusionary guidance or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layerB
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}
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| operation | Yes | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint: false). The description adds the operation list and data shapes but does not disclose behavioral consequences, such as how freezing or locking a layer affects the drawing, whether permissions are required, or any side effects. For a mutation tool with multiple state-changing operations, this lack of behavioral context is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise summary line followed by a bullet-style list of operations. Each operation line is short and useful, containing only the essential data shape. No filler or redundant information is present, making it efficient to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 operations) and the presence of an output schema (so return values need not be described), the description covers most operational inputs but misses the 'include_screenshot' parameter and does not elaborate on the effects of operations like freeze or set_current. It is adequate for basic invocation but not fully complete for nuanced decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It provides data structures for each operation (e.g., create: {name, color?, linetype?}, freeze: {name}), which adds significant meaning to the 'operation' and 'data' parameters. However, it does not explain the 'include_screenshot' parameter, and the data for 'list' is not specified, leaving some gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as for 'Layer creation and management' and lists eight specific operations (list, create, set_current, set_properties, freeze, thaw, lock, unlock). This is a specific verb+resource combination, and it distinguishes from sibling tools (drawing, entity, block, etc.) by focusing exclusively on layers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear list of operations with their required data, which implies when each operation is appropriate, but it does not explicitly state when to use this tool versus alternatives. There are no exclusions or mentions of sibling tools, so the agent must infer that layer management belongs here based on the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pidB
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?}
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| operation | Yes | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, which already signals mutation. The operation names (insert, draw, connect, add) are consistent with that. However, the description adds no behavioral context beyond the operation list—no prerequisites, side effects, state changes, or error behavior. For a tool with many mutating operations, this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact bulleted list, front-loaded with the tool's general purpose. Each line enumerates an operation and its data payload with no filler. It is concise and well-structured for quick reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With many operations and an output schema, the description provides a useful reference but lacks context about sequencing (e.g., 'setup_layers' may need to run first), return values, or whether a drawing must be open. The include_screenshot parameter is not explained either. It is adequate but not complete for an agent to fully plan multi-step workflows.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fills in the data shapes for each operation, e.g., 'insert_symbol — data: {category, symbol, x, y, scale?, rotation?}' and 'add_flow_arrow — data: {x, y, rotation?}'. This is essential for constructing valid data objects. Still, it doesn't enumerate allowed values for fields like category or valve_type, and coordinate units are not specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'P&ID drawing with CTO symbol library' and lists concrete operations (insert_symbol, draw_process_line, etc.). This clearly communicates the tool's scope. However, the top-level statement is a noun phrase rather than an explicit verb+resource, and it doesn't directly distinguish from sibling tools beyond listing specialized operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the list of operations: it's for P&ID drawing tasks like inserting symbols and drawing process lines. There is no explicit 'use this when...' or mention of alternatives, and no guidance on when not to use it. Sibling tools like layer, drawing, and entity suggest other areas, but the description doesn't clarify the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
systemCRead-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}
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| operation | Yes | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the readOnlyHint annotation. While the annotation claims read-only behavior, the description includes 'init' (re-initialize) and 'execute_lisp' (execute arbitrary code), which are mutating operations. This is a serious inconsistency that could mislead an agent into assuming safe read-only behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary and a bulleted list of operations. It is concise and front-loaded with the core purpose, though the list format could be more compact by grouping similar operations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists, the description omits critical behavioral context like which operations are mutating, parameter details for 'data' and 'include_screenshot', and clarifications around 'File IPC only'. The read-only contradiction and missing parameter semantics make it incomplete for a multi-operation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description is expected to compensate by explaining params. It implicitly describes the 'operation' parameter via the list of operations and explains 'data' for execute_lisp, but 'include_screenshot' is never described. The 'data' parameter is only contextualized for one operation, leaving ambiguity for others.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as server status and management, with a list of operations that specify exactly what it does. It distinguishes itself from sibling tools (layer, drawing, etc.) by focusing on backend operations, though the broad 'management' term could be more specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation list implies when to use the tool (e.g., for health checks, backend info), but there is no explicit guidance on when to prefer this tool over alternatives. It does not mention exclusions or alternatives, leaving usage intent somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
viewARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | No | ||
| x2 | No | ||
| y1 | No | ||
| y2 | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds the behavior of each operation (zoom, screenshot) but does not disclose potential side effects, coordinate system details, or error conditions. It adds some behavioral context beyond the annotation but not deeply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main purpose, and lists operations in a clear bullet-like format. Every sentence earns its place, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 operations, 5 params, output schema present), the description is mostly complete. It covers the operation types and their arguments, and the output schema likely explains return values. It lacks finer details like coordinate units or default behavior, but remains sufficient for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain the 'operation' parameter values and mentions that zoom_window uses x1, y1, x2, y2, but does not clarify their meaning beyond being coordinates, nor the role of null defaults for optional parameters. Partial compensation for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Viewport control and screenshot capture' with a specific verb and resource, and enumerates three distinct operations (zoom_extents, zoom_window, get_screenshot). It is easily distinguishable from sibling tools focused on layers, drawing entities, blocks, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via the operation list, but provides no explicit guidance on when to choose this tool over alternatives. It does not mention exclusions or context such as 'use this when you need to adjust the view or capture the screen' – the purpose is stated but not elaborated.
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. Dates show when Glama detected each change.
8 tool updates
v3.0.0- First observed
annotation - First observed
block - First observed
drawing - First observed
entity - First observed
layer - First observed
pid - First observed
system - First observed
view
TDQS
Each tool targets a distinct domain (layers, drawings, entities, blocks, annotations, P&ID symbols, views, system). The only minor overlap is between entity create_mtext and annotation create_text, but they are clearly differentiated as multi-line vs single-line text.
All tool names follow a consistent lowercase noun pattern, with operations nested as verbs underneath. No mixed conventions, camelCase, or unpredictable verbs; the naming is uniform and intuitive.
8 tools is well-scoped for an AutoCAD automation server, each covering a major functional area without unnecessary overlap. The count fits squarely in the ideal 3-15 range and avoids redundancy.
The tool set provides thorough coverage of drawing lifecycle (create, open, save, plot, purge), entity creation/editing, block management, layer management, annotation, and even specialized P&ID workflows. There are no obvious missing operations that would cause agent failures.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
Composable APIs for document extraction, image transformation, and document & sheet generation.
Draw buildings as DXF, IFC and 3D, plus exact French rent and charges calculations.
Unified AEC tools: ACC, Revit, Navisworks, Twinmotion, and APS from one endpoint.
Related MCP Servers
- AlicenseBqualityAmaintenanceProduction-grade AutoCAD automation server enabling real-time CAD control via COM and headless DXF operations through 87 tools, including drawing creation, entity modification, layer management, and batch processing, designed for AI agent integration via the Model Context Protocol.210065MIT
- AlicenseNot gradedqualityCmaintenanceProvides DXF parsing, entity extraction, geometry analysis, and optional AutoCAD COM automation for CAD tasks.1MIT
- AlicenseAqualityCmaintenanceEnables LLMs like Claude to create and edit AutoCAD drawings via natural language, supporting both headless DXF generation and live AutoCAD LT connection through file-based IPC.9MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ks40-academy/autocad-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server