Skip to main content
Glama
Greenmint-labs

Greenloom CAD MCP Server

Official

Greenloom CAD MCP Server

MCP server for AutoCAD LT automation and headless DXF generation.

Two backends, one API:

Backend

Runtime

Requires AutoCAD?

Screenshot

File IPC

Windows Python

Yes — AutoCAD LT 2024+ (Windows)

Win32 PrintWindow

ezdxf

Any platform

No (headless)

matplotlib render

The server exposes 8 consolidated tools (drawing, entity, layer, block, annotation, pid, view, system) over the MCP stdio transport. An MCP client (Claude Desktop, Claude Code, etc.) connects and drives AutoCAD through natural-language requests.

Prerequisites (File IPC backend)

  • Windows 10/11 (the File IPC backend uses Win32 APIs for focus-free window messaging)

  • AutoCAD LT 2024 or newer — AutoLISP support was added in LT 2024 for Windows. AutoCAD LT for Mac exists but does not support AutoLISP.

  • Python 3.10+ (Windows native — not WSL Python)

  • uv package manager (install guide)

The ezdxf headless backend works on any platform (Linux, macOS, WSL) for offline DXF generation without AutoCAD installed.

Related MCP server: AutoCAD LT AutoLISP MCP Server

Quick Start

1. Clone and install

git clone https://github.com/Greenmint-labs/greenloom_CAD_MCP.git
cd greenloom_CAD_MCP
uv sync

2. Load the LISP dispatcher in AutoCAD LT

Open AutoCAD LT and load mcp_dispatch.lsp using APPLOAD:

  1. Type APPLOAD in the AutoCAD command line

  2. Browse to <repo>/lisp-code/mcp_dispatch.lsp

  3. Click Load

  4. You should see: === MCP Dispatch v3.1 loaded === and Ready for commands via (c:mcp-dispatch)

Tip: Add the file to your AutoCAD Startup Suite (in the APPLOAD dialog) so it loads automatically with every drawing.

3. Configure your MCP client

Add to your MCP client configuration (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "greenloom-cad-mcp": {
      "command": "C:\\path\\to\\greenloom-cad-mcp\\.venv\\Scripts\\python.exe",
      "args": ["-m", "greenloom_cad_mcp"],
      "env": { "GREENLOOM_CAD_BACKEND": "auto" }
    }
  }
}

Key points:

  • The command must point to the Windows Python inside the project venv (not WSL python).

  • GREENLOOM_CAD_BACKEND can be auto (default — tries File IPC, falls back to ezdxf), file_ipc (requires AutoCAD), or ezdxf (headless only).

Running from WSL

If your MCP client runs in WSL (e.g. Claude Code), launch the server through cmd.exe so it runs as a native Windows process:

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

4. Verify

From your MCP client, call:

system(operation="status")

You should see backend: "file_ipc" if AutoCAD is running, or backend: "ezdxf" for headless mode.

Tools

drawing — File/drawing management

Operation

Description

File IPC

ezdxf

create

Reset to clean drawing (erase all + purge)

Yes

Yes

open

Open an existing drawing

Yes

Yes (DXF)

info

Get entity count and layers

Yes

Yes

save

Save current drawing (to path if given)

Yes

Yes

save_as_dxf

Export as DXF

Yes

Yes

plot_pdf

Plot to PDF

Yes

No

purge

Purge unused objects

Yes

Yes

get_variables

Get system variables by name

Yes

Yes

undo

Undo last operation

Yes

No

redo

Redo last undone operation

Yes

No

entity — Entity CRUD + modification

Create: create_line, create_circle, create_polyline, create_rectangle, create_arc, create_ellipse, create_mtext, create_hatch

Read: list, count, get

Modify: copy, move, rotate, scale, mirror, offset*, array, fillet*, chamfer*, erase

* offset, fillet, chamfer are File IPC only (not supported in ezdxf headless backend).

layer — Layer management

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

block — Block operations

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 — Text, dimensions, leaders

create_text, create_dimension_linear, create_dimension_aligned, create_dimension_angular, create_dimension_radius, create_leader

pid — P&ID operations (CTO symbol library)

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

P&ID symbol insertion requires the CAD Tools Online (CTO) P&ID Symbol Library installed at C:\PIDv4-CTO\. The ezdxf backend has built-in CTO library support. For the File IPC backend, some P&ID operations require additional LISP helpers — see the P&ID section in the wiki for setup details.

view — Viewport and screenshot

Operation

Description

zoom_extents

Zoom to show all entities

zoom_window

Zoom to a specified window

get_screenshot

Capture current AutoCAD view as PNG

Screenshots use PrintWindow (Win32) for the File IPC backend — works even when AutoCAD is minimized or in the background. The ezdxf backend renders via matplotlib.

system — Server management

status, health, get_backend, runtime, init, execute_lisp

execute_lisp runs arbitrary AutoLISP code (File IPC only). Pass data: {code: "(+ 1 2)"}. This turns the server into an extensible automation platform — any valid AutoLISP expression can be executed.

Architecture

MCP Client (Claude)
    │  stdio (JSON-RPC)
    ▼
Python MCP Server (greenloom_cad_mcp)
    │
    ├── File IPC Backend ──► C:/temp/*.json ──► mcp_dispatch.lsp (AutoCAD LT)
    │   PostMessageW(WM_CHAR) to MDIClient — no focus steal
    │
    └── ezdxf Backend ──► in-memory DXF (headless, no AutoCAD needed)

The File IPC backend sends keystrokes to AutoCAD's MDIClient window via PostMessageW(WM_CHAR), triggering the (c:mcp-dispatch) AutoLISP command. This approach does not steal window focus — you can continue working in other applications while automation runs.

Environment Variables

Variable

Default

Description

GREENLOOM_CAD_BACKEND

auto

Backend selection: auto, file_ipc, ezdxf

GREENLOOM_CAD_IPC_DIR

C:/temp

Directory for IPC command/result JSON files (must match on both Python and LISP sides)

GREENLOOM_CAD_IPC_TIMEOUT

10.0

IPC command timeout in seconds (1-300)

GREENLOOM_CAD_ONLY_TEXT

false

Disable screenshot capture (text feedback only)

Note: If you change GREENLOOM_CAD_IPC_DIR, you must also update the *mcp-ipc-dir* variable in mcp_dispatch.lsp to match.

Development

uv sync
uv run pytest tests/ -v

AutoCAD LT AutoLISP Compatibility

AutoLISP was added to AutoCAD LT in the 2024 release (Windows only). AutoCAD LT for Mac does not support AutoLISP.

Supported (LT 2024+ Windows)

Not Supported

.lsp / .fas / .vlx / .dcl

VLIDE (Visual LISP IDE)

All vl-* utility functions

vlax-* (ActiveX/COM)

File I/O (open, read-line, etc.)

Express Tools

Entity access (entget, entmod, etc.)

3D operations

Selection sets

AutoLISP on Mac

The mcp_dispatch.lsp dispatcher is fully compatible with LT 2024+.

What's New in v3.1

  • execute_lisp — Run arbitrary AutoLISP code via temp file pattern. Turns the server from a fixed command set into an extensible automation platform.

  • Undo / Redo — Single-step undo and redo via drawing tool.

  • Drawing open — Open existing .dwg files programmatically (FILEDIA suppressed).

  • Drawing create — Now resets current drawing (erase all + purge) instead of _.NEW, preserving the LISP dispatcher namespace.

  • Drawing save with pathsave with a path parameter uses SAVEAS; without path uses QSAVE.

  • get_variables fix — Respects the names parameter; returns requested variables with proper type handling.

  • Polyline/leader fix — Point arrays properly encoded via semicolon-delimited format.

  • ESC prefix — Sends 2x ESC before each dispatch to cancel stale pending commands from prior timeouts.

  • UTF-8/cp1252 fallback — Handles non-ASCII characters in LISP result files (AutoCAD writes Windows-1252).

  • Configurable IPC timeoutGREENLOOM_CAD_IPC_TIMEOUT env var (1–300 seconds, default 10).

  • Thread-safe backend initasyncio.Lock prevents parallel initialization races.

License

MIT

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.3/5.0
Behavior3/5

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

Annotations include readOnlyHint=false, indicating a write operation. The description adds operation-specific data shapes but does not disclose side effects, requirements, or error conditions beyond what the annotations already convey, providing only modest additional 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 efficiently structured: a one-line summary followed by a concise bulleted list of operations and their data. Every line adds necessary information, and the format is scannable.

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?

Presence of an output schema covers return-value documentation. The description sufficiently defines all listed operations and their data inputs, though it doesn't address the optional include_screenshot parameter or confirm whether the operation list is exhaustive, leaving minor gaps.

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 treats 'data' as a generic object with additionalProperties, providing no structure. The description compensates by detailing the exact data fields for each operation (e.g., {x, y, text} for create_text), significantly enriching parameter understanding.

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 'Annotation: text, dimensions, and leaders' and enumerates specific operations (create_text, create_dimension_*, create_leader), making the tool's scope unambiguous and distinct from sibling tools like drawing or entity.

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 description provides clear context that this tool is for creating annotation objects, and the operation names define the exact use cases. However, it doesn't explicitly state when not to use the tool or compare it to alternatives like the entity tool, so it lacks explicit exclusions.

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

blockB

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

B3.4/5.0
Behavior3/5

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

Annotations already set readOnlyHint=false, aligning with the write operations listed. The description adds operation-specific data shapes but does not disclose side effects, error behavior, or whether operations affect the current drawing vs. a database. It is moderately transparent but lacks 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.

Conciseness4/5

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

The description is compact and well-structured, using a bullet list to separate operations. Each line is informative and directly relevant. Minor inefficiency: the initial sentence could be integrated with the list, but overall it is concise and scannable.

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?

The tool is complex with multiple operations and an output schema exists (not shown). The description covers operation-specific parameters but lacks information on return values, error handling, permissions, or examples. Given the complexity, the description is helpful but incomplete for fully autonomous invocation.

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?

The input schema has 0% coverage in its descriptions, but the tool description compensates by detailing the required data structure for each operation (e.g., {name, x, y, scale?, rotation?, ...}). However, it omits any explanation for 'include_screenshot' and does not fully document all possible data fields for 'define' (uses ellipsis). Thus, partial compensation.

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 description explicitly states the tool's scope: 'Block definition, insertion, and attribute management.' It lists specific operations with clear verbs (list, insert, get_attributes, update_attribute, define). This makes the purpose clear and differentiates it from generic tools, though it does not explicitly compare with siblings.

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 usage contexts (e.g., use insert to add a block, define to create a definition), but there is no explicit guidance on when to prefer this tool over sibling tools like 'entity' or 'drawing'. The context is implied by the block-specific operations, but exclusions are not stated.

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/5.0
Behavior3/5

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

The description discloses each operation's high-level behavior but lacks deeper context about side effects or safety. For example, 'purge' implies deletion but doesn't state it removes unused objects permanently. Annotations only provide readOnlyHint=false, so the description carries some burden but adds limited behavioral detail beyond the operation list.

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 well-structured, compact list. Each operation is summarized in a single line with no redundancy. The opening 'Drawing file management' provides immediate context, and the list format makes it easy to scan.

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?

The description covers all operations and their data inputs, which is comprehensive for a dispatcher tool. It omits include_screenshot and does not explain return values, but an output schema exists, so return behavior need not be described. Given the multi-operation complexity, this strikes a good balance.

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?

Schema description coverage is 0%, but the description compensates by specifying the data shape for each operation (e.g., data:{name?}, data:{path}). However, it does not describe the include_screenshot parameter, which remains undocumented. The operation field itself is unconstrained in the schema, so the description is essential and mostly fulfills that need.

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 enumerates ten distinct operations (create, open, info, save, save_as_dxf, plot_pdf, purge, get_variables, undo, redo). This clearly identifies the tool's purpose as a dispatcher for drawing file operations and distinguishes it from sibling tools like entity, layer, and block.

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 description implies when to use the tool through its operation list, and provides specific guidance for save ('saves to path if given, else QSAVE') and create ('new empty drawing'). It does not explicitly mention exclusions or alternatives, but the operation list serves as clear context for when this tool is appropriate.

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

A4.1/5.0
Behavior3/5

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

Annotations only indicate readOnlyHint: false, meaning the tool can mutate state. The description adds value by listing specific mutating operations (move, rotate, scale, erase) and read operations, which gives an overview of behavioral scope. However, it does not disclose side effects, permission requirements, or return value details beyond the operation names. It is adequate but not rich.

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 well-organized with clear headings for create, read, and modify operations. Each operation is presented as a compact, single-line signature. There is no filler or redundant prose, making it easy to scan and reference despite covering many operations.

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?

The description covers all major operations and their parameter schemas, which is sufficient for an agent to construct valid calls. An output schema exists, so return values are likely documented elsewhere. The description does not address error conditions or coordinate system specifics, but for a broad entity tool it is fairly complete.

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?

Schema description coverage is 0%, so the description is the only source of parameter meaning. It thoroughly explains how general parameters like data, x1, x2, points, and entity_id are used for each operation, including nested structures for operations like create_circle and data for create_hatch. This fully compensates for the schema's lack of explanatory text.

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 begins with a clear statement of purpose: 'Entity creation, querying, and modification.' It then enumerates specific operations (create_line, create_circle, list, get, move, erase, etc.) with distinct verbs and resources. This clearly differentiates the tool's scope from sibling tools like drawing, layer, or block by focusing on entity-level operations.

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 usage by listing operations and their parameters, but it does not explicitly state when to use this tool versus alternatives like block or annotation. There are no 'when not to use' or 'use X tool instead' statements. However, the grouping of operations gives a clear sense of the tool's domain, so it provides adequate context for an agent to decide when to invoke it.

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/5.0
Behavior3/5

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

Annotations only provide readOnlyHint:false, and the description adds the multi-operation structure and data shapes, signaling that most operations mutate layer state. However, it does not explain side effects of operations like set_current, freeze, or lock, nor does it mention persistence, permissions, or error behavior.

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, opening with a clear purpose and then presenting a scannable list of operations and their data payloads. Every line carries useful information with no unnecessary padding.

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 seven-operation multiplexed tool, the description covers all operations and their data shapes, and an output schema exists to handle return values. It is slightly incomplete because it omits include_screenshot and does not elaborate on the behavioral consequences of each operation, but overall it is robust.

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?

The input schema provides only bare parameter names without descriptions or enums, but the description compensates by listing valid operation values and the expected data fields for each operation. It does not mention include_screenshot, but the core parameter semantics are well documented.

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 'Layer creation and management' and then enumerates seven concrete operations (list, create, set_current, set_properties, freeze, thaw, lock, unlock), making the tool's resource and supported actions unmistakable. This operation list distinguishes it from sibling tools such as 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 operations list implies that this tool is for layer-related tasks, but there is no explicit statement about when to use this tool over sibling tools or when not to use it. No alternatives or exclusions 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.

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?}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
operationYes
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The annotations show readOnlyHint=false, so the agent knows operations mutate state. The description adds context by naming each operation and its data payload, implying effects like inserting a symbol or creating layers. However, it does not disclose prerequisites (e.g., whether setup_layers must be called first), potential overwrites, or error behavior.

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 terse, well-organized list. It front-loads the tool's purpose in the first sentence, then presents each operation on its own line with its data payload. There is no redundant text or 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?

Given the tool's complexity (a dispatcher with 12 operations), the description covers the operation catalog and their data formats well. However, it omits usage guidance, does not mention include_screenshot, and lacks information on operation prerequisites or sequencing. The presence of an output schema covers return values, but overall completeness remains moderate.

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 burden is on the description. It does give meaning to 'operation' by listing valid operation names and to 'data' by showing per-operation data structures, but it fails to explain the 'include_screenshot' parameter entirely and does not explicitly state that 'operation' must be one of the listed strings or that 'data' must conform to the selected operation's structure.

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 'P&ID drawing with CTO symbol library' and then enumerates a comprehensive list of specific operations (setup_layers, insert_symbol, draw_process_line, etc.), making the tool's purpose unmistakable. It clearly distinguishes itself from sibling tools by focusing on P&ID-specific symbols and process-line operations.

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

Usage Guidelines2/5

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

The description lists operations but provides no guidance on when to use this tool versus its siblings (e.g., 'drawing' or 'entity'). There is no explicit 'use this when...' or 'for generic drawings use drawing tool instead', leaving the agent to infer usage solely from operation names.

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

systemC
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

C2.7/5.0
Behavior1/5

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

The annotations declare readOnlyHint=true, but the description includes operations 'init' (re-initialize backend) and 'execute_lisp' (execute arbitrary AutoLISP code) which are clearly mutating or potentially destructive. This directly contradicts the read-only annotation. The description also fails to disclose side effects or safety implications of these operations.

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-structured with a clear summary and a bulleted list of operations, each with a brief explanation. It is concise without unnecessary verbosity, though the inclusion of potentially dangerous operations warrants more cautionary wording.

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 description lists operations but fails to explain return values, error handling, permissions, or the behavior of the 'include_screenshot' parameter. Given the tool's complexity and the presence of potentially destructive operations, the description is insufficient for an agent to use all features safely and correctly.

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?

The description adds meaning by listing valid values for the 'operation' parameter and specifying that 'execute_lisp' takes data with a 'code' field. However, it omits any discussion of the 'include_screenshot' parameter and does not clarify whether other operations use 'data', leaving gaps in parameter understanding.

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 description clearly identifies the tool as 'Server status and management' and enumerates specific operations (status, health, get_backend, runtime, init, execute_lisp), giving a clear idea of the resource and actions. It does not explicitly contrast with sibling tools, but the system focus is evident from the operation list.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like drawing, entity, or layer tools. There is no mention of prerequisites, exclusions, or typical use cases beyond listing operations, so agents must infer usage from operation names.

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

A4.3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, covering the safety profile. The description adds operational detail but does not disclose potential side effects like modifying the current view state or any screenshot output details. Since annotations lower the burden, a score of 3 is appropriate.

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 concise and well-structured, front-loaded with a summary sentence followed by a clean bullet-style list of operations. Every line earns its place with no redundancy or fluff.

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

Completeness5/5

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

For a simple view-control tool, the description covers all operations and parameter context, while annotations provide the read-only safety hint and an output schema exists. It is complete enough for an agent to select and invoke the tool correctly without further explanation.

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 coverage is 0%, but the description compensates by explaining x1, y1, x2, y2 in the zoom_window line and listing valid operations. This adds meaning beyond the bare schema types, clarifying when parameters apply, even though it stops short of detailing units or optional behavior.

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 'Viewport control and screenshot capture' and enumerates three concrete operations (zoom_extents, zoom_window, get_screenshot). This specific verb+resource phrasing distinguishes it well from sibling tools like drawing, entity, and layer.

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 operation list implies when to use the tool (zoom or screenshot), providing clear context. It does not explicitly name alternatives or exclusions, but the operations themselves are self-explanatory, making usage reasonably obvious.

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.

  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
Disambiguation4/5

The eight domain tools (drawing, entity, layer, block, annotation, pid, view, system) are clearly distinct in purpose, minimizing confusion. Minor overlap exists between entity's create_mtext and annotation's create_text for text creation, but descriptions and context generally disambiguate them.

Naming Consistency3/5

Tool names follow a consistent noun pattern, but operations within tools mix styles: single-word verbs (copy, list, open), snake_case (save_as_dxf, get_variables), and camelCase verb_noun (create_line, set_current). This mixed convention is readable but lacks uniformity across the set.

Tool Count5/5

Eight tools is well-scoped for a CAD server, covering distinct functional domains without redundancy. Each tool contains a comprehensive set of operations, and the count is within the ideal range for agent navigation.

Completeness5/5

The tool surface is remarkably complete for CAD workflows: drawing lifecycle, entity creation/modification/query, layer management, block definitions and attributes, annotations, P&ID symbols, viewport control, and system operations. No significant gaps are apparent for typical CAD tasks.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables controlling CAD software (AutoCAD, GstarCAD, ZWCAD) through natural language instructions, allowing users to create and modify drawings without manually operating the CAD interface.
    518
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    9
    MIT
  • 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

Latest Blog Posts

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/Greenmint-labs/greenloom_CAD_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server