← Retour au cours
Archicad et MCP Tapir Archicad
Voici une présentation complète de MCP Tapir Archicad — un serveur MCP qui expose les commandes de l'add-on Tapir (ENZYME-APD) ainsi que l'
Etape 0 : Architecture MCP Server
Architecture générale
Le MCP Tapir Archicad agit comme une couche de traduction intelligente entre un agent IA et une instance Archicad en cours d'exécution. La chaîne complète est :
Agent IA (Claude ou Cursor) → MCP Client → MCP Server (Python) → Tapir Add-On (C++) → Archicad
Il existe deux implémentations principales :
SzamosiMate/tapir-archicad-MCP: expose 80+ outils générés automatiquement depuis le schéma Tapirtapir-archicad-mcp(PyPI v0.3.1) : version plus avancée avec 137 commandes combinant l'API Tapir communautaire ET l'API JSON officielle Graphisoft, avec recherche sémantique locale (sentence-transformers+faiss-cpu)
Workflow IA : Discover / Call
La version PyPI adopte un workflow en deux étapes pour ne pas saturer le contexte de l'IA :
archicad_discover_tools— recherche sémantique parmi les 137 outils depuis une requête en langage naturel (ex:"get all wall elements"→ renvoieelements_get_elements_by_type)archicad_call_tool— exécute l'outil découvert avec les paramètres construits (port + params)
Outil de découverte d'instances
| Commande | Description |
|---|---|
discovery_list_active_archicads | Liste toutes les instances Archicad actives, leur port TCP et le projet ouvert |
C'est le point d'entrée obligatoire — le port retourné est utilisé comme cible pour toutes les commandes suivantes.github+1
Catégories d'endpoints disponibles
🏗️ Éléments BIM (Elements)
GetAllElements/elements_get_elements_by_type— récupère tous les éléments ou par type (Wall, Slab, Column, Object…)github+1GetDetailsOfElements/SetDetailsOfElements— lit et modifie les détails géométriques (coordonnées, hauteur, arcs de polygone) pour Murs, Dalles, Colonnes, Polylignes, Feuilles de détail, objets libpart[github]GetConnectedElements— retourne les éléments connectés à un élément donné[github]MoveElements— déplace des éléments avec un vecteur de déplacement (x, y, z)[github]ReserveElements/ReleaseElements— réserve/libère des éléments en mode Teamwork[github]CreateColumns/CreateSlabs/CreateObjects/CreateZones— crée des éléments BIM programmatiquementgithub+1
📋 Propriétés & Classifications
GetAllProperties— récupère la liste de toutes les propriétés définies dans le projet[github]GetPropertyValuesOfElements/SetPropertyValuesOfElements— lit et écrit les valeurs de propriétés sur des éléments[github]GetPropertyValuesOfAttributes/SetPropertyValuesOfAttributes— idem pour les attributs[github]GetGDLParametersOfElements/ChangeGDLParametersOfElements— lit et modifie les paramètres GDL d'objets (ex: changer la couleur de crayongs_cont_pen)[github]- Classifications :
GetAllClassifications,ClassificationById,SetClassifications— gestion du système de classification BIM (IFC, etc.)[github]
🗂️ Attributs & Calques
GetAttributesByType/AttributesByType— liste les attributs par type (matériaux, surfaces, stylos…)[github]CreateLayers— crée de nouveaux calques dans le projet[github]
📐 Navigation & Vues
GetViewSettings/SetViewSettings— lit et modifie les paramètres de vue active[github]GetModelViewOptions— récupère les options d'affichage du modèle 3D[github]NavigatorTree/FindNavigatorItem— explore et recherche dans l'arborescence du navigateur de projet[github]GetDatabaseIdFromNavigatorItemId— convertit un ID de navigateur en ID de base de données[github]UpdateDrawings— met à jour les dessins (layouts/vues)[github]
🏢 Zones & Espaces
GetZoneDetails/ZoneDetails/CreateZones— lit les informations des zones (surfaces, volumes, noms) et en crée de nouvelles[github]
🔗 Hotlinks & Structure
GetHotlinks— récupère les modules hotlink du projet[github]
⚙️ Gestion du projet & système
| Commande | Action |
|---|---|
GetProjectInfo | Nom, chemin, version du projet |
GetAddOnVersion | Version du Tapir Add-On installé |
GetArchicadLocation | Chemin d'installation d'Archicad |
Publish | Publie le projet (équivalent de la commande Publier) |
TeamworkReceive | Déclenche un "Receive" Teamwork |
ReloadLibraries | Recharge les bibliothèques GDL |
Quit | Ferme Archicad |