Vectorworks MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VWMCP_APP | No | The Vectorworks application name for the server to control, e.g. "Vectorworks 2025" when using a different Vectorworks version. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| vw_pingA | Check the Vectorworks bridge: returns Vectorworks version, active document and bridge version. Warns if the installed bridge doesn't match this server. |
| vw_exec_pythonA | Run arbitrary Python inside Vectorworks with Returns stdout, the value of the last expression (or of a variable named
|
| vw_vs_lookupA | Search the live vs.* API (names and built-in docs) of the running Vectorworks, e.g. "record field", "symbol insert", "LDevice". Returns function names with their signature/description. |
| vw_document_infoA | Active document: name, path, units, active layer/class, counts, selection size. |
| vw_list_layersB | All layers (design and sheet) with visibility and which one is active. |
| vw_list_classesB | All class names, optionally filtered by a case-insensitive substring. |
| vw_get_selectionB | Selected objects on the active layer: uuid, type, name, class, layer, bbox, attached records, and symbol / plug-in name where relevant. |
| vw_find_objectsB | Find objects by any combination of exact class, layer, type ("Symbol", "Rectangle", "Plug-in Object"...), plug-in name ("Lighting Device"), attached record (optionally with field == value) and object name. |
| vw_get_recordB | All field values of a record (or a plug-in object's parameters, using its plug-in name as the record) on the object with this UUID. |
| vw_set_recordA | Set record fields (or plug-in parameters) on one object; unknown field names are rejected before anything changes. One undo step. Returns the record afterwards. |
| vw_list_symbolsB | Symbol definitions in the document's resource list, with their folder path; filter by name and/or folder substring (e.g. fixture lookup). |
| vw_insert_symbolB | Place a symbol from the document's resources at x, y (document units), optionally at height z, on a layer and in a class. One undo step. |
| vw_revert_lastA | Undo exactly the last MCP write in the active document: restores the previous field values of vw_set_record / vw_set_lighting_device_fields, or deletes the symbol vw_insert_symbol placed. Call repeatedly to step further back. (Vectorworks' own Cmd-Z merges consecutive MCP edits.) Raw vw_exec_python edits can't be reverted this way. |
| vw_list_lighting_devicesA | All Spotlight Lighting Devices, sorted by position then unit number. Default fields: Unit Number, Channel, Dimmer, Universe, DMX Address,
UniverseAddress, Absolute Address, Num Channels, Purpose, Position,
Inst Type, Wattage, Color, Template (gobo), Template2, Focus, Circuit
Number/Name, Mark, Symbol Name, Fixture Mode, GDTF Fixture Name, Device
Type, User Field 1-6. Pass |
| vw_set_lighting_device_fieldsA | Bulk-edit Lighting Device fields in one undo step.
All selectors and field names are validated first; if any fail, nothing
changes. Revert exactly this call with vw_revert_last. Universe / DMX Address edits are applied via UniverseAddress
(Spotlight's source of truth). Returns before/after per device as re-read
from Vectorworks, with |
| vw_list_positionsA | Lighting positions (Light Position Obj, Lighting Pipe, Ladder, Truss, Hanging Position) with the devices whose Position field names them. Also reports how many devices have no position, and position names used by devices that have no matching position object. |
| vw_lighting_device_reportA | Paperwork export of Lighting Devices (channel hookup, instrument
schedule...). Default columns: Position, Unit Number, Inst Type, Wattage,
Purpose, Channel, UniverseAddress, Circuit Number, Color, Template, Focus.
Sorted naturally by |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools target clearly distinct resource/action pairs, but there is some overlap between vw_set_record (single object or plug-in parameters) and vw_set_lighting_device_fields (bulk lighting device edits), and between vw_list_lighting_devices and vw_lighting_device_report, which both surface device data. The detailed descriptions clarify when each should be used, so ambiguity is limited.
All tool names share a consistent vw_ prefix and snake_case formatting, with predictable patterns such as vw_list_*, vw_get_*, and vw_set_*. A few names are noun-based (vw_document_info, vw_lighting_device_report) rather than strict verb_noun, but the set remains readable and mostly consistent.
17 tools is slightly above the typical 3-15 range, but each covers a distinct capability in a complex CAD/lighting bridge: bridge check, Python execution, API lookup, document/layer/class inspection, records, symbols, undo, and lighting workflows. The set does not feel padded with redundant tools.
The surface covers introspection, generic execution, document/layer/class queries, object finding, record read/write, symbol insertion, undo, and lighting-specific workflows including reports. Dedicated create/delete/modify-object tools are absent, but vw_exec_python provides a workaround, leaving only minor gaps.