Skip to main content
Glama
joacos

archicad-tapir-mcp

by joacos

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ARCHICAD_HOSTNoHost of the Archicad instance.127.0.0.1
ARCHICAD_PORTNoFixed Archicad port to use if multiple Archicad instances are open. By default, the server auto-detects the port.
ARCHICAD_TIMEOUTNoTimeout in seconds to wait for each command.120
ARCHICAD_MCP_TOOLSNoControls which Tapir commands are exposed: 'curated' exposes a curated set, 'all' exposes ~250 commands as tools, 'none' leaves only generic tools.curated
ARCHICAD_MCP_JOURNALNoPath to the journal file used for undo history. Defaults to ~/.archicad-mcp/journal.json.~/.archicad-mcp/journal.json
ARCHICAD_MCP_MAX_CHARSNoMaximum length of each response; longer responses are truncated.100000
ARCHICAD_MCP_READ_ONLYNoWhen set to '1', rejects any command that could modify the model.0

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

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
archicad_statusA

Lists the running Archicad instances (port, version) and whether the Tapir add-on answers.

tapir_list_commandsA

Lists Tapir commands with a one-line description, optionally filtered by group name or text.

tapir_describe_commandA

Returns the input and output JSON schemas of a Tapir command. Read this before tapir_run_command.

tapir_run_commandA

Runs any Tapir command. The parameters are validated against the command's input schema (see tapir_describe_command). May modify or delete model data depending on the command.

archicad_run_api_commandC

Runs an official Archicad JSON API command, e.g. 'API.GetElementsByType' or 'API.GetBuiltInPropertyIds'. See Graphisoft's JSON API reference for parameters.

archicad_model_summaryA

One-call overview of the open project: project info, stories, element counts by type, story and layer, zone areas and the current selection. Start here to understand a model.

archicad_list_elementsA

Compact list of elements (guid, type, ID, story name, layer name). Much smaller than GetDetailsOfElements; use it to find elements before acting on them.

archicad_quantitiesA

Quantity take-off from Archicad's built-in properties: lengths (m), areas (m²), volumes (m³) and counts, totalled by element type and optionally by story or layer, as JSON or CSV.

archicad_check_modelB

Model quality checks: missing or duplicate IDs, unclassified elements, probable duplicate elements, elements on hidden or locked layers, zones without area, unnamed or empty stories.

archicad_element_imagesB

Returns images of elements so you can see them: a 3D, 2D or section preview of each element, and a floor plan clip of each zone. Defaults to the selection when no scope is given.

archicad_set_element_idsA

Changes element IDs: explicit values, unique suffixes for repeated IDs (fixDuplicates) or a prefix + number sequence (numbering). Revert with archicad_undo.

archicad_classification_itemsA

Lists the items of a classification system with their path, to use in archicad_classify_elements.

archicad_classify_elementsA

Classifies many elements at once with rules by element type and/or layer (e.g. every Slab on layer '02 PLAZA - Pasto' as 'Terrain'), by default only those still unclassified. Revert with archicad_undo.

archicad_create_roomA

Creates a room from an outline: walls along its edges, a floor slab and a zone, on one story. Revert with archicad_undo.

archicad_create_slabsA

Creates many homogeneous slabs at once (site blocks, platforms, masses) with an exact top level and thickness, optionally on a named layer. Revert with archicad_undo.

archicad_move_elementsA

Moves elements (explicit list, selection or a type) by a vector in meters. Revert with archicad_undo.

archicad_rotate_elementsA

Rotates elements in plan around a point by an angle in degrees. Revert with archicad_undo.

archicad_set_slab_levelsA

Changes the top level and/or thickness of slabs (e.g. the height of site masses), verifying the result in 3D. Revert with archicad_undo.

archicad_set_meshA

Changes a Mesh (terrain): its level, skirt depth and holes. Works on locked layers and checks the result in 3D. Revert with archicad_undo.

archicad_create_meshesA

Creates terrain Meshes with heights per point (surveyed ground, paths, curbs), as solid bodies, optionally on a named layer. Revert with archicad_undo.

archicad_create_surface_morphA

Creates a Morph surface from triangles (e.g. a path draped on terrain) with its own building material, so it reads differently from the mesh below. Revert with archicad_undo.

archicad_undoA

Reverts the last actions made with archicad_set_element_ids, archicad_classify_elements, archicad_create_slabs, archicad_create_meshes, archicad_move_elements, archicad_rotate_elements, archicad_set_slab_levels, archicad_set_mesh, archicad_create_surface_morph or archicad_create_room in the open project: deletes what they created and restores what they changed.

archicad_historyA

Lists the actions archicad_undo can revert in the open project, newest first.

GetProjectInfoB

Retrieves information about the currently loaded project. (Tapir, Project Commands)

GetStoriesB

Retrieves information about the story sructure of the currently loaded project. (Tapir, Project Commands)

GetSelectedElementsB

Gets the list of the currently selected elements. (Tapir, Element Commands)

GetElementsByTypeB

Returns the identifier of every element of the given type on the plan. It works for any type. Use the optional filter parameter for filtering. (Tapir, Element Commands)

GetAllElementsC

Returns the identifier of all elements on the plan. Use the optional filter parameter for filtering. (Tapir, Element Commands)

FilterElementsC

Tests an elements by the given criterias. (Tapir, Element Commands)

GetDetailsOfElementsA

Gets the details of the given elements (geometry parameters etc). Use the optional fields parameter to return only the fields you need and skip the computation of the others (for example floorPlanPolygons). (Tapir, Element Commands)

Get3DBoundingBoxesB

Get the 3D bounding box of elements. The bounding box is calculated from the global origin in the 3D view. The output is the array of the bounding boxes respective to the input array of elements. (Tapir, Element Commands)

HighlightElementsB

Highlights the elements given in the elements array. In case of empty elements array removes all previously set highlights. (Tapir, Element Commands)

ChangeSelectionOfElementsC

Adds/removes a number of elements to/from the current selection. (Tapir, Element Commands)

GetAllPropertiesB

Returns all user defined and built-in properties. (Tapir, Property Commands)

GetPropertyValuesOfElementsB

Returns the property values of the elements for the given property. It works for subelements of hierarchal elements also. (Tapir, Property Commands)

SetPropertyValuesOfElementsC

Sets the property values of elements. It works for subelements of hierarchal elements also. (Tapir, Property Commands)

GetClassificationsOfElementsC

Returns the classification of the given elements in the given classification systems. It works for subelements of hierarchal elements also. (Tapir, Classification Commands)

SetClassificationsOfElementsB

Sets the classifications of elements. In order to set the classification of an element to unclassified, omit the classificationItemId field. It works for subelements of hierarchal elements also. (Tapir, Classification Commands)

GetGDLParametersOfElementsB

Gets all the GDL parameters (name, type, value) of the given elements. (Tapir, Element Commands)

SetGDLParametersOfElementsC

Sets the given GDL parameters of the given elements. (Tapir, Element Commands)

GetLayersC

Returns the details of the given Layer attributes. (Tapir, Attribute Commands)

GetAttributesByTypeC

Returns the details of every attribute of the given type. (Tapir, Attribute Commands)

GetZoneBoundariesA

Gets the boundaries of the given Zones (connected elements, neighbour zones, etc.). Accepts either a single zoneElementId or a list of zones. Prefer the list: the expensive boundary recalculation runs once per call, so querying many Zones in one call is much faster than calling the command once per Zone. (Tapir, Element Commands)

CreateWallsC

Creates Wall elements based on the given parameters. (Tapir, Element Commands)

CreateSlabsC

Creates Slab elements based on the given parameters. (Tapir, Element Commands)

CreateColumnsC

Creates Column elements based on the given parameters. (Tapir, Element Commands)

CreateZonesC

Creates Zone elements based on the given parameters. (Tapir, Element Commands)

CreateObjectsC

Creates Object elements based on the given parameters. (Tapir, Element Commands)

MoveElementsC

Moves elements with a given vector. (Tapir, Element Commands)

DeleteElementsB

Deletes elements. Returns an execution result for each input element: an element that could not be deleted (for example because its layer is locked) gets a failed execution result instead of being skipped silently. (Tapir, Element Commands)

GetNavigatorItemTreeB

Returns the full navigator item tree for the specified map. (Tapir, Navigator Commands)

GetIssuesB

Retrieves information about existing issues. (Tapir, Issue Management Commands)

CreateIssueC

Creates a new issue. (Tapir, Issue Management Commands)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.8/5.0

Scored across 53 tools

Disambiguation3/5

Several tools overlap in purpose (e.g., archicad_list_elements vs GetElementsByType/GetAllElements, archicad_create_slabs vs CreateSlabs, archicad_move_elements vs MoveElements, archicad_classify_elements vs SetClassificationsOfElements). Descriptions distinguish high-level safe/undoable helpers from raw Tapir commands, but with 53 tools an agent can still easily misselect.

Naming Consistency2/5

Mixed naming conventions: PascalCase Tapir wrappers (GetSelectedElements, CreateWalls) alongside snake_case archicad_* and tapir_* tools. The split signals different layers but is inconsistent from a naming standpoint.

Tool Count1/5

53 tools far exceeds the typical 3-15 range and includes both high-level and low-level duplicates for the same operations. Even for a complex BIM API, this volume is excessive for an MCP server and burdens tool selection.

Completeness4/5

Core operations for querying, creating, modifying, and deleting Archicad elements are covered, with generic tapir_run_command and archicad_run_api_command providing an escape hatch for missing commands. Dedicated tools for many element types (roofs, windows, beams) are absent, but the generic commands mitigate that gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues