Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
AUTOCAD_MCP_DXFNoDXF file to open by the DXF engine
AUTOCAD_MCP_LOGNoLog level, output to stderr
AUTOCAD_MCP_UNITNoUnit for measurements: 'mm', 'cm', 'm', 'in', 'ft'
AUTOCAD_MCP_BACKENDNoBackend to use: 'autocad', 'ezdxf' or 'recording'

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
get_drawing_infoA

Décrit le document courant: moteur utilisé, unité de longueur, nombre d'entités, liste des calques avec leur couleur et leur état, limites du dessin, et valeurs par défaut converties dans l'unité du document.

À appeler EN PREMIER, avant tout tracé: l'unité conditionne toutes les longueurs que vous allez donner ensuite, et la liste des calques évite d'en inventer un nouveau alors qu'il existe. À rappeler après avoir ouvert un autre document.

query_entitiesA

Liste les entités du dessin qui satisfont un filtre, avec leur handle, leur type, leur calque, leur couleur et leur boîte englobante.

À utiliser pour retrouver ce qui existe déjà avant de modifier ou de supprimer: les handles renvoyés ici sont le préalable obligatoire à set_entity_color et à une suppression par handles.

La réponse est TOUJOURS bornée. Elle donne le compte total des entités correspondantes ET un échantillon limité, avec un drapeau indiquant si elle a été tronquée. Un dessin de cinquante mille entités ne sera jamais déversé: affinez le filtre plutôt que d'augmenter la limite.

Pour voir le dessin plutôt que de l'énumérer, utilisez render_view.

measureA

Mesure et résume le dessin sans l'énumérer. UN SEUL outil, dont le champ mode choisit la question:

  • summary: état des lieux complet — combien d'entités, sur quels calques, de quels types, entre quelles limites.

  • totals: longueur et surface cumulées.

  • by_layer / by_type: les mêmes quantités, réparties par calque ou par type.

  • quantities: la nomenclature, une ligne par couple calque/type.

  • nearest: les entités les plus proches d'un point, avec leur distance. Répond à « qu'y a-t-il ici ».

  • in_window: les entités d'une zone rectangulaire, au choix entièrement contenues ou simplement traversées.

À utiliser AVANT de modifier un dessin que vous n'avez pas produit, pour savoir ce qu'il contient sans rapatrier ses entités une à une, et APRÈS un lot pour vérifier des quantités. Pour voir le dessin plutôt que de le chiffrer, utilisez render_view; pour obtenir les handles d'entités précises, query_entities.

HONNÊTETÉ DES MESURES: longueurs et surfaces ne sont comptées que pour les entités dont le moteur les publie. Chaque mesure porte donc counted, missing et complete, et son total vaut null — et non zéro — quand aucune entité n'a répondu. Un total de zéro signifierait « rien ne mesure », ce qui est faux; null signifie « le moteur ne le dit pas ». Les comptes d'entités, eux, sont toujours exacts.

check_planA

Cherche les défauts qu'un dessin ne signale jamais de lui-même: contours qui ne se referment pas et refusent la hachure, murs qui se croisent en croix au lieu de se rejoindre, entités superposées en double, résidus de taille négligeable, extrémités qui se ratent d'un cheveu.

À appeler APRÈS un lot de construction et AVANT de livrer un plan: c'est ce qui vous permet de vous corriger seul. Chaque défaut est rendu avec sa gravité, sa localisation en coordonnées, les objets concernés et un remède en une phrase, directement exécutable.

CE QUI EST EXAMINÉ. Les entités du document, telles que le moteur les publie, donnent les doublons et les résidus. Les contours et les axes de murs, eux, doivent être FOURNIS dans contours et segments: le moteur ne publie que des boîtes englobantes, pas les sommets, et deviner une géométrie serait pire que l'avouer. Donnez-y les mêmes points que ceux passés à build_structure, c'est la vérification la plus utile.

Les seuils suivent l'unité du document: à l'échelle du mètre un écart d'un dixième de millimètre est une jonction, à l'échelle du millimètre c'est un trou. La réponse est bornée: le compte des défauts est exact, la liste est tronquée au-delà de 100 entrées.

render_viewA

Rend le dessin courant en image PNG et renvoie cette image dans la réponse, accompagnée du nombre d'entités et des limites du dessin.

À appeler APRÈS CHAQUE LOT D'ÉCRITURE. C'est le seul moyen de vérifier ce qui a réellement été tracé au lieu de faire confiance à un compte rendu: un mur peut être créé avec succès et se trouver au mauvais endroit, à la mauvaise échelle ou superposé à un autre. Sans regarder, vous dessinez à l'aveugle.

À appeler aussi avant de corriger un dessin existant, pour savoir ce qu'il contient.

Le cadrage est automatique et centré sur le contenu; un dessin vide rend une image vide, ce qui n'est pas une erreur. Exige un moteur capable de rendu: le backend DXF le fait, le backend AutoCAD non, puisque l'écran d'AutoCAD tient ce rôle.

drawA

Trace une LISTE de primitives géométriques en un seul lot: segments, polylignes, rectangles, cercles, arcs, textes, paragraphes et hachures.

À utiliser dès qu'il y a plus d'une entité à tracer, ce qui est le cas presque toujours. Le lot forme une transaction unique: une seule marque d'annulation, un seul rafraîchissement d'affichage. Enchaîner des appels unitaires est plus lent et rend l'annulation impraticable.

Pour des éléments de bâtiment (murs, portes, fenêtres, pièces), utilisez build_structure: il pose les calques normalisés et la géométrie attendue d'un plan.

Les angles sont en DEGRÉS. Les longueurs sont dans l'unité du document, que get_drawing_info donne.

La réponse porte les DEUX côtés: les handles réellement créés, et les échecs éventuels avec l'index de l'élément fautif dans la liste fournie. Un lot partiellement exécuté n'est jamais annoncé comme un succès. Vérifiez ensuite avec render_view.

build_structureA

Construit une LISTE d'éléments de bâtiment en un seul lot: réseaux de murs percés de leurs baies, murs isolés, portes, fenêtres, pièces et étiquettes.

À utiliser pour tout ce qui relève du plan d'architecture, de préférence à draw, qui ne connaît que la géométrie nue. Chaque élément est posé sur son calque normalisé, un mur épais est une polyligne fermée donc une entité unique et hachurable, et le battant d'une porte suit l'orientation de son mur porteur.

POUR LES MURS, UTILISEZ wall_network, et donnez-lui ses openings. C'est le seul élément qui raccorde les angles et qui perce réellement la maçonnerie; wall, wall_run, door_in_wall et window ne servent plus que pour un objet isolé ou un symbole posé sur un mur existant.

Toutes les longueurs omises prennent une valeur par défaut convertie dans l'unité du document: un mur de vingt centimètres reste un mur de vingt centimètres que le dessin soit en mètres ou en millimètres.

Les angles sont en DEGRÉS. La réponse porte les handles créés ET les échecs avec l'index de l'élément fautif. Vérifiez ensuite avec render_view.

place_blocksA

Insère une LISTE d'occurrences de symboles normalisés en un seul lot: porte, fenêtre, WC, lavabo, douche, évier, prise, interrupteur, point lumineux, lits, table, chaise.

À utiliser pour équiper et meubler un plan, une fois les murs posés par build_structure. Un seul appel place tous les objets d'un logement: n'enchaînez pas un appel par objet.

Ce que cet outil apporte sur un tracé équivalent fait avec draw: une occurrence de bloc reste liée à SA définition, donc corriger le symbole une fois corrige toutes ses occurrences; chaque occurrence porte un attribut de repère, donc les objets se comptent et se chiffrent; et chaque symbole va sur le calque de sa nature, un WC sur PLUMBING, une prise sur ELECTRICAL, une chaise sur FURNITURE.

LES DÉFINITIONS MANQUANTES SONT CRÉÉES AUTOMATIQUEMENT, il n'y a rien à préparer. Une définition déjà présente est conservée telle quelle: le même appel répété n'écrase jamais un symbole existant.

Chaque symbole a son repère local, décrit dans la description de sa clé. Ce qui se pose contre un mur — porte, fenêtre, WC, lavabo, prise — a le mur pour axe X et la pièce du côté des Y positifs: rotation_deg à 0 pose l'objet contre un mur horizontal, la pièce au-dessus. Les longueurs sont réelles et suivent l'unité du document. La réponse porte les handles créés ET les échecs avec l'index de l'élément fautif. Vérifiez ensuite avec render_view.

delete_entitiesA

DESTRUCTIF ET IRRÉVERSIBLE. Supprime toutes les entités correspondant au filtre et renvoie leurs handles. undo_last_batch ne restaure PAS ce que cet outil efface: il n'annule que des créations.

À utiliser pour retirer ce qui a été mal tracé quand undo_last_batch ne suffit plus, parce que d'autres lots sont venus par-dessus, ou pour nettoyer un calque entier.

Le filtre est unifié et ses critères se combinent par ET logique: calque, type, couleur, liste de handles, fenêtre rectangulaire. Pour supprimer précisément, passez d'abord par query_entities et supprimez par handles.

Un filtre VIDE désigne le dessin entier. Dans ce cas seulement, confirm_delete_all doit valoir true, sinon l'appel est refusé avec le code confirmation_required. Ne posez ce drapeau que si l'utilisateur a demandé d'effacer tout le dessin.

set_entity_colorA

Change la couleur d'une ou plusieurs entités désignées par leur handle.

À utiliser pour corriger une entité posée sur le bon calque mais dans la mauvaise couleur, sans avoir à l'effacer puis à la redessiner.

Les handles s'obtiennent d'abord par query_entities, ou dans la réponse de draw et build_structure: ils ne se devinent pas.

Pour rendre une entité à la couleur de son calque, passez "bylayer", ce qui est la convention du dessin technique. L'index 0 est ByBlock et non noir; le noir est l'ACI 7, nommé "white".

Chaque handle est traité séparément: la réponse indique lesquels ont été modifiés et lesquels ont échoué, avec la raison.

undo_last_batchA

Annule le dernier lot d'écriture, c'est-à-dire le dernier appel à draw ou à build_structure, en supprimant les entités qu'il a créées.

À utiliser dès qu'un lot s'avère faux après l'avoir regardé avec render_view: c'est plus sûr que de supprimer à la main et cela ramène le dessin exactement à son état précédent.

Portée limitée, à connaître avant d'y compter: seules les CRÉATIONS sont annulées. Une couleur changée par set_entity_color et une entité supprimée par delete_entities ne sont pas restaurées. Les appels successifs dépilent les lots du plus récent au plus ancien; sans lot à annuler, l'appel échoue au lieu de ne rien faire silencieusement.

run_cad_commandA

DESTRUCTIF ET IRRÉVERSIBLE. Passerelle vers la ligne de commande d'AutoCAD: exécute une commande native du logiciel sur le dessin ouvert. undo_last_batch n'annule PAS ce que cette commande modifie, puisqu'elle n'est pas un lot de créations du serveur; seul l'annuler dans AutoCAD le peut.

À utiliser pour les transformations qu'AutoCAD sait déjà faire mieux qu'une réimplémentation: décaler un contour, ajuster ou prolonger des murs, raccorder deux traits, tracer un contour fermé autour d'un point. Commandes autorisées, et elles seules: ARRAY, BOUNDARY, CHAMFER, EXTEND, FILLET, HATCH, MIRROR, OFFSET, TRIM. Toute autre commande est refusée avec le code invalid_parameter et la liste ci-dessus: la liste blanche existe parce que transmettre une chaîne libre à un logiciel de CAO revient à exécuter du code arbitraire sur la machine de l'utilisateur.

INDISPONIBLE SUR LE BACKEND DXF, qui n'a pas d'interpréteur de commandes: l'appel échoue alors avec le code unsupported_operation, et c'est la situation normale hors d'un poste Windows où AutoCAD tourne. get_drawing_info dit dans can_run_commands si le moteur courant sait les exécuter: vérifiez-le avant de bâtir un plan là-dessus.

La commande est envoyée telle quelle: le dessin n'est pas relu pour vérifier ce qu'elle a fait. Regardez le résultat avec render_view.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have clearly distinct purposes, and the descriptions explicitly disambiguate the three batch-write tools (draw for raw geometry, build_structure for architectural elements, place_blocks for symbols) and the three read tools (get_drawing_info, query_entities, measure). The main residual overlap is among the write/creation tools, which an agent must read carefully to pick correctly, but the guidance is strong enough to avoid misselection.

Naming Consistency4/5

Names follow a mostly predictable verb_noun pattern (get_drawing_info, query_entities, set_entity_color, delete_entities, build_structure, place_blocks, undo_last_batch, run_cad_command). A few deviate with single bare verbs (draw, measure) or verb_noun phrasing that doesn't fit the resource-action mold (render_view, check_plan), but the overall convention is readable and consistent.

Tool Count5/5

12 tools is well-scoped for a CAD server spanning read, write, modify, validate, and render operations. Each tool earns its place, and related actions are consolidated into batches or single multi-mode tools (measure) rather than exploding the count.

Completeness4/5

The surface covers the full lifecycle well: document inspection, entity querying, measurement, rendering, batch creation at three abstraction levels, color editing, deletion, undo, and validation via check_plan. The notable gap is direct transformation of existing entities (move/rotate/scale/copy), which is only reachable through the limited native run_cad_command whitelist or full delete-and-redraw.

Maintenance

ActivityMaintained
ResponsivenessNo issues