Skip to main content
Glama

archicad-mcp

CI PyPI

archicad-mcp is a local stdio MCP server for Archicad automation through Archicad's built-in JSON API, with optional Tapir commands. Its four tool categories cover instance discovery, searchable command documentation, property discovery, and multi-step Python workflows. Validated Archicad and Tapir command documentation is packaged with the server and is available without a running Archicad instance.

Quick start

Requirements

  • Python 3.11 or newer

  • uv

  • An MCP client that can launch a local stdio server

Add the server to the client's MCP configuration:

{
  "mcpServers": {
    "archicad": {
      "command": "uvx",
      "args": ["archicad-mcp"]
    }
  }
}

Save the configuration and restart or reload the client. Then call:

get_docs(command="API.GetAllElements")

A successful response has the ID native:API.GetAllElements and includes the command schema. This first success requires neither Archicad nor Tapir.

Related MCP server: RevitMCPBridge2026

Tools and workflow

Tool

Purpose

list_instances

Find running Archicad instances and their ports.

get_docs

Browse, search, or retrieve built-in and Tapir command schemas.

get_properties

Find element properties and property IDs.

execute_script

Run a multi-step Python workflow against an instance.

Use get_docs to move from discovery to exact schemas:

get_docs()
get_docs(search="create slab")
get_docs(command="API.GetAllElements")
get_docs(commands=["API.GetAllElements", "CreateSlabs"])

For live work, call list_instances, inspect the needed command schemas with get_docs and property IDs with get_properties, then pass the selected port to execute_script. Live tools require Archicad, and the server and Archicad must run on the same host. Tapir is needed only for Tapir calls and get_properties; built-in Archicad capabilities remain available without it.

Script execution

execute_script accepts the body of an async Python function. It injects archicad and port, permits top-level await, and returns the value assigned to result.

Scripts run as your operating-system user and are not sandboxed; review the code before executing it.

result = await archicad.command("GetProductInfo")

See Script execution for the complete authoring, result, cancellation, and safety contract.

Diagnostics and installation alternatives

Use the public console command for setup and diagnostics:

  • uvx archicad-mcp setup prints the client-neutral configuration without editing files.

  • uvx archicad-mcp doctor --json reports package, schema, and local Archicad diagnostics.

  • uvx archicad-mcp config --json prints the effective runtime configuration.

  • uvx archicad-mcp --version and uvx archicad-mcp --help report the installed version and available commands.

For a persistent installation, run:

uv tool install archicad-mcp

The installed archicad-mcp command then replaces uvx archicad-mcp in terminal commands and the MCP configuration. If live discovery fails, check that Archicad is listening on its local JSON API port in the range 19723-19743.

For migration from 0.1.x, use the public console command; live schema generation, repository submodules, and a preliminary manual schema refresh are no longer part of command discovery.

Schema updates

get_docs uses the packaged command documentation or a newer validated Tapir snapshot from the user cache. When automatic updates are enabled and the shared 24-hour interval permits, startup schedules at most one bounded, nonblocking check. Startup does not wait for it, and there is no recurring timer or daemon.

Variable

Behavior

ARCHICAD_MCP_AUTO_UPDATE=0

Disable automatic schema checks while retaining a valid cache.

ARCHICAD_MCP_OFFLINE=1

Disable schema-update network access while retaining a valid cache.

Offline schema mode does not stop uvx from acquiring the package. Use archicad-mcp schemas status, archicad-mcp schemas update, and archicad-mcp schemas reset to inspect, update, or reset the cache. An older installed Tapir add-on may not implement commands in a newer active schema; built-in Archicad documentation is unaffected.

See Schema snapshots and updates for the cache, validation, update, and maintainer contracts.

Contributing and releases

See CONTRIBUTING.md for development setup and checks, report bugs with the GitHub bug form, and find release notes and artifacts on GitHub Releases.

License

MIT

Available Tools

4 tools
execute_scriptA

Execute Python in a disposable same-account local_user worker against the selected Archicad port. This is reliability isolation only, not hostile-code isolation: scripts have ordinary local-user Python builtins and imports and can read or write files, start processes, or make destructive Archicad/Tapir changes with the user's authority. The default timeout is 300 seconds; any positive finite timeout is accepted and null disables it. Timeout or transport cancellation terminates the owned worker. Use get_docs to discover Archicad and Tapir commands.

Inputs: port (required), script (required), timeout_seconds. Returns: Result of same-account local-user script execution.

get_docsA

Get documentation for Archicad commands.

USAGE: get_docs() # Overview: categories with counts get_docs(category="Element Commands") # Browse: commands in a category get_docs(search="...") # Find commands by keyword get_docs(command="CommandName") # Full schema for one command get_docs(commands=["A", "B"]) # Full schemas for multiple

DISCOVERY WORKFLOW:

  1. get_docs() -> see categories

  2. get_docs(category="...") -> see command names

  3. get_docs(command="...") -> full schema

SEARCH FEATURES:

  • Searches across: names, descriptions, parameters, examples, notes

  • Element types: "wall" -> suggests GetElementsByType(elementType="Wall")

  • Partial match: "prop" finds property commands

  • Typo tolerant: "proprty" -> property commands

  • Multi-word: "create slab" finds CreateSlabs

Args: search: Search query (e.g., "wall", "create slab", "property") command: Exact command name for full schema commands: List of command names for full schemas category: Category name to list all commands in it

Examples: get_docs() # Overview get_docs(category="Element Commands") # Browse category get_docs(search="wall") # Commands for walls get_docs(search="create") # Creation commands get_docs(command="CreateSlabs") # Full schema for CreateSlabs

Inputs: search, command, category, commands. Returns: object

get_propertiesA

Search and discover Archicad element properties.

Properties are attributes like area, length, volume that you query on elements. Use this to find property GUIDs needed for GetPropertyValuesOfElements.

WHEN TO USE:

  • "Get wall areas" → get_properties(search="area", group="Wall")

  • "What properties can I query on zones?" → get_properties(group="Zone")

  • "Find custom/user-defined properties" → get_properties(property_type="Custom")

MODES: get_properties(port) # Overview of all groups get_properties(port, search="length") # Search by keyword get_properties(port, group="Wall") # All properties for element type get_properties(port, property="Length of Reference Line") # Exact lookup

Args: port: Archicad instance port (from list_instances) search: Search property names (e.g., "area", "length", "surface") group: Filter by group/element type (e.g., "Wall", "Zone", "Geometry") property_type: Filter by type: "StaticBuiltIn", "DynamicBuiltIn", "Custom" measure_type: Filter by unit: "Length", "Area", "Volume", "Angle" property: Exact property name lookup (returns single match with GUID) limit: Max results (default 50, max 200)

Returns: Properties with GUIDs ready for GetPropertyValuesOfElements.

NOTE: For command documentation (API schemas), use get_docs instead.

Inputs: port (required), group, limit, search, +3 more. Returns: object

list_instancesA

Find all running Archicad instances.

Scans ports 19723-19743 for Archicad's JSON API. Returns instance info including port, project name, version. Use the 'port' value in other tools to target a specific instance.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.6/5.0

    Scored across 4 tools

    Disambiguation4/5

    list_instances, get_docs, get_properties, and execute_script each target a distinct concern: instance discovery, command documentation, property metadata, and script execution. The only plausible confusion is between get_docs and get_properties since both are searchable catalogs, but their descriptions explicitly separate command schemas from element property GUIDs.

    Naming Consistency4/5

    Tool names generally follow a verb_noun snake_case pattern (get_docs, get_properties, execute_script), but list_instances uses a different retrieval verb ('list' instead of 'get') and 'docs' is an abbreviation. These are minor deviations rather than a broken naming convention.

    Tool Count5/5

    With four tools, the set is lean but not thin: each tool has a distinct role, and execute_script intentionally consolidates arbitrary Archicad command execution so dozens of per-command tools aren't needed. This is a well-scoped alternative to exposing every API function as a separate MCP tool.

    Completeness5/5

    The set covers the full workflow: discover an instance, learn available commands, look up property GUIDs, and execute arbitrary Python against the selected instance. Because execute_script can invoke any Archicad/Tapir command, there are no obvious CRUD/lifecycle dead ends within the domain.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      MCP server for Autodesk Revit (BIM) with 705+ API endpoints. Enables AI agents to create walls, place doors/windows, generate sheets, manage views, and produce construction documents via the Model Context Protocol. Uses named pipes for zero-crash Revit integration.
      22
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      An MCP server connecting Claude to a running Archicad 29 instance for delivery-readiness QA via YAML rules and full Archicad API access, including querying, editing, creating elements, and schedule scheme editing.
      56
      11
      MIT