An MCP server
The AI tool calls Tapir's commands itself, while you chat. Works with tools that support the Model Context Protocol (MCP), such as Claude Desktop.
Tapir MCP serversBoth talk to the same Tapir commands on port 19723, on your own computer.
The AI tool calls Tapir's commands itself, while you chat. Works with tools that support the Model Context Protocol (MCP), such as Claude Desktop.
Tapir MCP serversAny AI tool can write a short Python script that sends Tapir commands. You read it, then run it from the Tapir palette or a terminal.
How it worksThese are community projects, not part of Tapir. Each has its own install steps in its README. Which one Tapir recommends is still being decided in issue #2070, so they are listed here without a recommendation.
The MCP server for Tapir that the others started from. It is also published on PyPI as the tapir-archicad-mcp package.
Versions of it that others changed and published. Check when each was last updated.
See the forksCareful An MCP server can change your model. Try it on a copy of your project first, and read what the AI is about to do before you allow it.
Open a project in Archicad, with the Tapir Add-On loaded, and give your AI tool this prompt. It only reads, so it is safe to try on any project.
When the answer looks right, ask for a change in the same plain words, and say exactly which elements it may change: "Set the property X to Y on the selected walls only."
Use Tapir to look at the Archicad project I have open.
Do not change anything; only read.
1. List the stories with their names and levels.
2. Count the walls, slabs, columns, doors and windows on each story.
3. Show the result as one table, one row per story.
Tell me which Tapir commands you used.
Without an MCP server, describe the task, give the AI the command list, and run the script it writes.
Write a Python script that uses only the standard
library and sends Tapir commands to Archicad on
http://127.0.0.1:19723, like the example I attach.
Use the Tapir command reference I attach.
Extract all composite exterior walls on level 2
and calculate their net volume.
Only read the model; change nothing.
import json
import urllib.request
def run_tapir_command(name, parameters=None, port=19723):
request = {
"command": "API.ExecuteAddOnCommand",
"parameters": {
"addOnCommandId": {"commandNamespace": "TapirCommand", "commandName": name},
"addOnCommandParameters": parameters or {},
},
}
with urllib.request.urlopen(f"http://127.0.0.1:{port}", json.dumps(request).encode("utf-8")) as response:
answer = json.loads(response.read())
if not answer.get("succeeded"):
raise RuntimeError(answer.get("error"))
return answer["result"]["addOnCommandResponse"]
print(run_tapir_command("GetAddOnVersion"))