Skip to main content
Glama
kazaplan-mcp

kazaplan-mcp

by padupuy

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KZ_TOKENNoYour Leroy Merlin / Kazaplan session token (Authorization Bearer value). Required to read or save plans online; without it the server can only work on local .kzp files. Valid for about 7 days.
KZ_API_URLNoKazaplan API base URL. Default: https://api.kazaplan.com
KZ_DATA_DIRNoData directory for the catalog, backups and SVG plans. Default: ~/.cache/kazaplan-mcp (Windows: %LOCALAPPDATA%\kazaplan-mcp); /data in Docker.
KZ_BACKUP_DIRNoDirectory for .kzp backups. Default: the backups/ subdirectory of the data directory.
KZ_ALLOWED_PLANSNoComma-separated whitelist of plan IDs that the server is allowed to modify and save online (e.g. "22222222"). Without it, plans can be read but not saved online.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Pilote un plan 3D Kazaplan (planner Leroy Merlin). Workflow : kz_open -> kz_summary -> kz_room_geometry -> kz_search_catalog -> kz_place / kz_set_material -> kz_save. Toutes les cotes sont en cm. Rien n'est envoyé au serveur avant kz_save.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
kz_openA

Ouvre un plan : depuis l'API Kazaplan (plan_id, nécessite KZ_TOKEN) ou un fichier .kzp local (path). Pour un fichier local, plan_id (cible d'un futur kz_save) vaut par défaut le début du nom de fichier (« 12345678-20261014-212320-orig.kzp » -> « 12345678 »). Une copie de sauvegarde du .kzp d'origine est écrite dans backups/.

kz_saveA

Enregistre le plan (titre par défaut : celui du plan côté serveur). Avec out_path : écrit seulement un .kzp local (aucun envoi). Sinon : POST sur l'API (plan_id doit figurer dans KZ_ALLOWED_PLANS). Le fichier envoyé est aussi archivé dans backups/.

kz_copy_planA

Duplique un plan : copie le .kzp de source_plan_id dans target_plan_id, puis l'ouvre. L'API ne permet pas (encore) de créer un plan : créer d'abord un plan vide sur leroymerlin.fr (Mon projet 3D), noter son id et l'ajouter à KZ_ALLOWED_PLANS. Le contenu de la cible est remplacé ; il est archivé dans backups/ avant l'envoi. Usage type : faire une copie de travail du plan réel avant de le modifier.

kz_summaryB

Résumé du plan : pièces (surface, sol), murs, ouvertures, objets posés (cotes, pièce), piscines.

kz_room_geometryA

Géométrie d'une pièce (nom, type ou id) : arêtes du contour intérieur avec longueur, normale vers l'intérieur, mur porteur, ouvertures (abscisses from/to depuis le début de l'arête) et segments libres free (portes + 5 cm de marge et fenêtres exclues), zones de débattement des portes, surface totale et utile (hors objets posés au sol).

kz_check_roomB

Contrôle la circulation d'une pièce. issues : meubles dont le dégagement est sous la cote (derrière une chaise 75, devant un canapé 60 jusqu'à la table basse, autour d'une table à manger 110 sans compter les chaises (90 pour un îlot ou une table haute), devant une armoire 75, un buffet 60, un meuble de cuisine 90, de chaque côté d'un lit double 60). paths : depuis la porte de la pièce, chaque autre porte, porte-fenêtre ou passage ouvert est-il atteignable par un chemin de 60 cm (width60) et de 90 cm (width90) ?

kz_sketchB

Plan SVG vu de dessus d'une pièce (ou du bâtiment principal si room est absent), comme le plan 2D du planner : murs, portes, fenêtres, tapis, meubles (une lettre par modèle, cf. legend), luminaires. decor_path (DECOR.md) : trace en liseré la peinture de chaque mur aux couleurs de la palette. Écrit le fichier dans le dossier de données (sketches/<pièce>.svg) et renvoie son chemin ; wall / on_top / ceiling listent les objets muraux, posés sur un meuble, au plafond ; schedule = nomenclature (code, libellé, dimensions, emplacement), un élément par objet.

kz_boardA

Livrable de la maison pour le plan ouvert : écrit à côté du DECOR.md un PLANCHES.md (vue d'ensemble, nuancier, tableau des pièces, puis par pièce du DECOR.md : plan coté, deux coupes, revêtements, nomenclature) et ses dossiers plans/ et swatches/. À relancer après chaque kz_save.

kz_search_catalogB

Recherche dans le catalogue Leroy Merlin local (plein texte FR, sans accents requis). kind : "model" (meubles/objets) ou "material" (revêtements). category : libellé ou code de menu (ex. "Baignoires", "SDB_BAIGNOIRES", "Canapés"). usage (matériaux) : "floor" ou "wall". style : Design, Essential, Natural, Industrial, Boheme, Neoclassic, Country. w = largeur (face avant), d = profondeur, h = hauteur, en cm ; price en € TTC.

kz_catalog_itemC

Fiche d'un article du catalogue (model-… ou material-…).

kz_placeA

Pose un modèle du catalogue dans une pièce, avec contrôle de collision (murs, objets, débattement des portes, fenêtres masquées).

  • Par défaut : dos contre le plus long mur libre qui convient.

  • against_wall : index d'arête (cf. kz_room_geometry) ; offset : distance en cm entre le début de l'arête et le bord de l'objet (sinon centré dans le plus grand segment libre).

  • center=True : au centre de la pièce. x, y : centre imposé (coordonnées plan).

  • under_opening : id d'une fenêtre ; centre l'objet sous elle, dos au mur (radiateurs).

  • room absent : pose en extérieur, au niveau du terrain ; x, y obligatoires, contrôle des murs traversés.

  • width / depth / height : redimensionne le modèle (cm), ex. pergola sur mesure.

  • gap : distance dos du modèle / mur (cm, défaut 1) ; ex. 59 pour poser des portes de dressing devant des caissons de 58 cm. Les modèles NO_COLLISION (portes de dressing…) peuvent chevaucher.

  • rotation : rotation supplémentaire en degrés (sens trigonométrique) ; avec x, y : angle absolu (la face avant regarde vers rotation + 90°).

  • force=True : pose même en cas de collision (renvoyée dans warnings).

  • elevation : hauteur du bas de l'objet au-dessus du sol (cm), au lieu de celle du catalogue (miroir à 120, applique à 170, étagère murale…).

  • on_top_of : id d'un objet posé ; pose dessus (lampe sur un buffet, vase sur une table), centré sur lui sauf x, y fournis ; avec elevation, pose à cette hauteur (lit : le dessus du matelas, pas la tête de lit).

kz_add_wallsA

Ajoute une chaîne de murs reliés passant par points ([[x, y], …], cm). Épaisseurs usuelles : 30 extérieur, 7 cloison. Une extrémité libre posée sur un mur existant (axe ou face, à ½ épaisseur + 4 cm près) s'y raccorde : en T sur le flanc, en coin sur une extrémité libre. Les faces (wall.pane) des nouveaux murs sont créées par le planner à l'ouverture. Aucune pièce n'est créée : le planner la détecte à la prochaine ouverture + enregistrement, ensuite seulement la nommer avec kz_set_room.

kz_add_openingB

Ajoute une ouverture sur un mur. kind : "door" (90×215 par défaut) ou "casement-window" (100×135, allège 95). offset : distance en cm entre le début du mur et le bord de l'ouverture (sinon centrée).

kz_set_roomA

Renomme et/ou change le type d'une pièce existante (nom, type ou id). Ne crée jamais de pièce : après kz_add_walls, ouvrir le plan dans le planner et l'enregistrer pour qu'il détecte la pièce (type « room », sans nom), puis kz_open et kz_set_room. Types : bedroom, livingdiningRoom, kitchen, bathRoom, wc, livingRoom, diningRoom, entrance, cupboard, dressing, laundry, storage, bearing, corridor, office, showerRoom, playRoom, otherHabitable, balcony, terraceannex, garage, basement, cellar, attic, loggia, veranda, technicalArea, otherAnnex, garden, terraceext, driveway, carport, parking.

kz_set_materialA

Applique un revêtement (material-…). target :

  • "floor:<pièce>" : sol de la pièce (carrelage, parquet…) ;

  • "ceiling:<pièce>" : plafond de la pièce (peinture), visible seulement en vue 3D ;

  • "wall:<pièce>" : toutes les faces de mur tournées vers la pièce (peinture, papier peint, faïence) ;

  • "wall:<pièce>:<arête>" : un seul mur, index d'arête de kz_room_geometry (mur d'accent) ;

  • "ground" : terrain autour de la maison (gazon).

kz_add_poolC

Ajoute une piscine enterrée de contour points ([[x, y], …], cm).

kz_moveA

Décale un objet posé de dx, dy cm (coordonnées du plan), avec les objets posés dessus. Refusé en cas de collision, de débattement de porte ou de fenêtre masquée, sauf force=True (tapis, retouches).

kz_removeB

Supprime un objet (modèle, ouverture, mur avec ses ouvertures, pièce, piscine…).

kz_getC

JSON brut d'un objet du plan (débogage).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools target clearly distinct actions/resources: geometry vs. circulation check vs. SVG sketch, place vs. move, add_walls vs. add_opening. Slight overlap remains between kz_get (raw debugging JSON) and kz_summary, and between kz_board and kz_sketch as visual deliverables, but descriptions largely disambiguate them.

Naming Consistency4/5

All names use a consistent kz_ prefix and mostly follow verb_noun patterns (kz_add_walls, kz_set_room, kz_search_catalog) or clear noun labels (kz_summary, kz_sketch). A few bare nouns/verbs (kz_get, kz_board, kz_catalog_item) break the pattern slightly but remain readable.

Tool Count4/5

19 tools is above the typical 3-15 range, but the domain is complex (walls, openings, rooms, materials, catalog, placement, export). Each tool appears to cover a distinct operation with little obvious redundancy.

Completeness4/5

Covers open/save/copy, editing (walls, openings, pool, objects), room/material management, analysis/export, and catalog lookup. Notable gaps include no direct plan creation (documented API limitation) and limited post-hoc editing of existing openings/walls, but workarounds are provided.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues