Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
pingA

Health check. Dice si AutoCAD responde y que documento esta activo.

find_drawingA

Busca archivos DWG/DXF en el disco por nombre (subcadena, sin distinguir mayusculas). Ordena por fecha de modificacion. La busqueda no sale de las raices permitidas (variable AUTOBAT_SEARCH_ROOTS).

open_drawingA

Abre un DWG/DXF y lo deja activo. Acepta ruta completa o solo el nombre. read_only=True por default: abrir el original de un cliente en modo escritura por accidente no se deshace. Si ya estaba abierto, lo activa.

list_open_drawingsC

Dibujos abiertos en AutoCAD y cual es el activo.

set_active_drawingA

Activa un dibujo ya abierto, por nombre o ruta.

create_working_copyA

Duplica un DWG en disco antes de tocarlo. Sin path usa el dibujo activo. Obligatorio antes de cualquier operacion destructiva: la copia se hace a nivel filesystem, con el original sin abrir en modo escritura.

create_drawingA

Crea un dibujo nuevo y vacio. Es temporal: no queda en disco hasta que lo guardes con save_drawing(path).

save_drawingA

Guarda el dibujo activo. Sin path hace Save; con path, SaveAs.

read_drawingA

LEER ANTES DE ESCRIBIR. Panorama del dibujo activo: unidades, extension, cantidad de entidades, conteo por tipo, definiciones de bloque y que XREF cuelgan. Es el primer paso antes de tocar cualquier plano.

por_capa=true agrega el conteo por capa, que es lo unico que exige barrer el modelspace entero por COM (decenas de segundos en un plano de Azcuy). Para preguntar por una capa puntual usa query_entities(layer=...), que filtra dentro de AutoCAD.

get_drawing_infoA

Listado crudo de las primeras entidades del modelspace. Para entender un archivo usa read_drawing, que da el panorama completo.

list_layersA

Tabla de capas con color ACI, tipo de linea y estado. El color importa mas que el lineweight: en Azcuy el grosor de impresion sale del color via el CTB. El filtro matchea tambien capas renombradas por XREF.

list_blocksB

Definiciones de bloque: cuales son XREF, su ruta, y opcionalmente cuantas veces se insertan. count_inserts cuesta un barrido completo del modelspace.

inspect_blockA

Radiografia de una definicion de bloque sin insertarla: en que capas esta su geometria (crudas y sin el prefijo de XREF), que bloques anidados trae, su bounding box y si contiene residuos bindeados de otra obra.

query_entitiesA

Entidades del modelspace que cumplen los filtros (AND). Filtra dentro de AutoCAD con un SelectionSet, asi que es rapido incluso en planos grandes. NO entra en XREF ni en bloques: para eso esta find_nested.

find_nestedA

Busca DENTRO de XREF y bloques anidados, devolviendo coordenadas de MUNDO ya compuestas a traves de toda la cadena, mas rotacion, escala y si esta espejado. Es la unica forma de ubicar bien lo que vive dos niveles abajo.

PASA near_x/near_y/radius siempre que sepas donde mirar. Los filtros de capa/tipo se aplican despues de visitar cada nodo, asi que NO achican el recorrido; la ventana espacial si, porque poda ramas enteras. Sin ventana, sobre un plano con XREF, esto tarda minutos.

Tiene presupuesto de tiempo (segundos, default 25): si se corta, devuelve lo que encontro con parcial=true en vez de morir por timeout. Un resultado marcado parcial NO es el total.

placement_contextA

DONDE, con que rotacion, escala y capa va lo que estas por dibujar — deducido de lo que YA esta dibujado. Corrre esto antes de cualquier insert_block / draw_bathroom sobre un plano existente.

Resuelve las tres cosas que hacen que una insercion caiga en cualquier lado: la caja REAL de cada bloque (los de Azcuy tienen la geometria hasta 186 m lejos de su punto base, asi que el punto de insercion no dice donde se ve), el marco girado del edificio (2.41 grados: razonar en X/Y del mundo da mal), y la convencion de capa/escala/rotacion, que se copia de las instancias existentes en vez de inventarse.

Devuelve anclas con bbox de mundo, las filas detectadas con su paso, los huecos libres y un punto sugerido con la llamada exacta a insert_block. Es read-only.

entities_nearB

Entidades cerca de un punto, ordenadas por distancia. Es el motor de deteccion de interferencias: columnas, vigas, pases y plenos que caen sobre un area. Usa ventana de cruce, filtrada dentro de AutoCAD.

extract_attributesA

Extrae atributos de bloque en formato tabla, listo para volcar a planilla (carpinterias, locales, plenos, terminaciones, tomas). Entra en XREF. Filtra por firma de tags, que es lo unico confiable cuando el bloque es dinamico y perdio el nombre del padre.

Si el computo es de una zona puntual (una unidad, un baño), pasa near_x/near_y/radius: sin ventana hay que recorrer todas las XREF.

Tiene presupuesto de tiempo (segundos, default 25). Si se corta devuelve parcial=true: esa tabla esta INCOMPLETA y no se vuelca a planilla como si fuera el computo total. Para un archivo entero subi segundos.

locate_in_polygonsA

Cruza poligonos con las etiquetas que caen adentro. Motor de la auditoria de superficies: que rotulo corresponde a que area. No confia en el flag Closed (en el plano de venta solo 7 de 25 polilineas estan cerradas): cierra el anillo por calculo y reporta el gap.

set_propertyA

Cambia una propiedad (color, layer, linetype, lineweight, linetypescale, visible) en las entidades que matcheen. Sin confirm=true devuelve un PLAN con affected_count y no toca nada. Para jerarquia de grosores en Azcuy la propiedad es COLOR: el grosor de impresion sale del color via el CTB, no del lineweight.

transform_entitiesA

Mueve, rota y/o escala entidades existentes. rotation en grados float, respecto de (base_x, base_y). Sin confirm=true devuelve un PLAN.

copy_entitiesA

Copia entidades con desplazamiento, rotacion opcional y remapeo de capa. Es el camino para 'copiar un bano y ajustarlo': el bano no es un bloque, se copia una base. target_layer sirve para el remapeo AUX -> ZD-* al pasar del catalogo a produccion. Sin confirm=true devuelve un PLAN.

delete_entitiesA

Borra entidades. Exige al menos un filtro y confirm=true. Antes de usarla, create_working_copy: esto no se deshace desde el agente.

undoA

Deshace las ultimas operaciones del dibujo activo. Deshace el historial de AutoCAD, no solo lo que hizo el agente.

list_referencesA

Catalogo de referencias dibujables: simbolos electricos (teclas de luz, tomas, bocas), artefactos sanitarios y equipamiento. Son simbolos convencionales — la geometria real de Azcuy (tipologias de bano A01..D09, bloques de unidad UF*) NO esta aca: se trae con import_block.

draw_referenceB

Dibuja una referencia del catalogo en (x, y). Se materializa como bloque: la definicion se crea una vez y despues cada pedido es una insercion. Escala sola segun las unidades del dibujo (metros / cm / mm). rotation en GRADOS como float — nunca redondear a ortogonal.

draw_roomB

Dibuja el contorno de una habitacion/local como polilinea CERRADA, con rotulo de nombre y superficie. width/height van en las unidades del dibujo (son medidas reales del proyecto, no se reescalan).

draw_wallA

Dibuja un MURO de punta a punta, con espesor real y sus dos capas. No es draw_room (eso es el contorno de un local) ni una pieza de biblioteca (esas son de largo fijo).

Un muro de Azcuy son 4 lineas paralelas sin tapas: revoque + mamposteria + mamposteria + revoque. tipo='interna' = 11 cm (1,5+8+1,5), 'externa' = 21 cm (2+17+2). Medido de sus propios planos.

espesor/revoque en METROS; las coordenadas van en unidades del dibujo. puntos=[[x,y],...] dibuja una tirada entera con las esquinas resueltas por inglete. Graba el eje en XData: es lo que despues usa cut_opening.

cut_openingA

Abre un vano real en un muro hecho con draw_wall, para que la puerta o la ventana tengan hueco abajo y no queden apoyadas encima.

distancia y ancho van en METROS y se miden SOBRE EL EJE del muro, desde el primer punto con el que se creo. No recibe un punto de mundo a proposito: ningun muro de estos planos esta a 0/90 grados (el edificio esta a 357,586588) y un punto de mundo sobre una recta girada miente por redondeo.

pieza='puerta-planta-090' toma el ancho real de la biblioteca (0,909, no 0,90) y avisa si la profundidad de la pieza no coincide con el muro. Devuelve el punto y la rotacion exactos para insertar la carpinteria. Sin confirm=true devuelve el plan y no toca nada.

import_blockA

Trae la definicion de un bloque desde otro DWG al dibujo activo, sin insertarlo. Este es el camino para la geometria REAL de Azcuy: las 70 tipologias de bano viven en SR-TIPOLOGIAS BAÑOS.dwg y se copian, no se redibujan. Despues posicionalo con insert_block.

list_bathroom_typesA

Las 70 tipologias de bano de Azcuy (A01..D09 y sus espejadas 'e') con programa, medidas reales y artefactos. Sale de un indice local: no toca AutoCAD y es instantaneo. familia: A (Master Suite), B (Suite), C (Toilette), D (Servicio).

draw_bathroomA

Inserta una tipologia de bano REAL de Azcuy en (x, y), desde la biblioteca local del MCP: no abre, copia ni cierra ningun archivo. Acepta 'B2' o 'B02' indistintamente. Viene sin el rotulo del catalogo.

Es la unica forma correcta de poner un bano. NO uses draw_reference: eso dibujaria un bano inventado con aspecto de real. El espejado es un bloque aparte (B02 vs B02e), no xscale = -1.

editable=true la inserta explotada. recorte_esquina (NE/NO/SE/SO) + recorte_ancho + recorte_alto recortan un rectangulo de una esquina, para cuando pasa una columna.

list_libraryA

Que hay en la biblioteca local del MCP, con medidas reales. No toca AutoCAD. Un DWG = una pieza, y la CARPETA es la categoria: banos, sanitarios, carpinterias, mamposteria, equipamiento, revestimientos, electricidad, incendio, estructura.

add_to_libraryA

Guarda un objeto del dibujo activo como pieza propia de la biblioteca, en assets/library//.dwg, y la indexa. Es la via para sumar assets nuevos (una silla, una puerta en planta, una pared) sin pasar por ningun catalogo. Pasa handles= (de query_entities/entities_near) o block= (nombre de una definicion de bloque). origen: 'min' lleva la esquina inferior izquierda al (0,0) — necesario, porque la geometria de un plano esta en coordenadas del mundo y guardada tal cual se inserta a kilometros del punto pedido; 'centro' para simbolos; 'dejar' no la mueve. rotation (grados) endereza la pieza antes de guardarla: lo dibujado sobre la planta de Azcuy esta a 357.588 grados (la inclinacion de 2.41 del edificio), asi que va rotation=2.412 o la pieza arrastra ese giro para siempre. Si es un bloque conviene block= en vez de handles=: la definicion ya esta a 0 grados. Pide confirm=true solo si va a pisar una pieza existente.

index_libraryA

Reindexa assets/library/ leyendo la CARPETA como categoria. Corre esto despues de mover, agregar o borrar DWG a mano. Incremental: solo abre en AutoCAD lo que cambio (compara mtime). Guarda medidas, capas internas y peso de cada pieza, y saca del indice las que ya no estan en disco. purgar=true ademas limpia cada DWG en el lugar y lo vuelve a guardar: lento, se corre una vez, adelgaza las piezas que arrastran tablas de simbolos ajenas.

draw_from_libraryB

Inserta cualquier pieza de la biblioteca local (artefacto, grifería, luminaria, pieza de instalacion) en (x, y). Sin abrir el archivo de origen. rotation en GRADOS float. explode=true la deja editable.

cut_cornerA

Recorta un rectangulo en una esquina (NE/NO/SE/SO) de un conjunto de entidades — el caso 'es un B2 pero hay que sacarle 1x1 porque pasa una columna'. Usa resta booleana nativa sobre el contorno, no una aproximacion. Reporta que artefactos quedan en la zona recortada: esos NO se mueven solos. Sin confirm=true devuelve el plan.

list_source_blocksA

Nombres de bloque disponibles en OTRO archivo, sin importar nada. Sirve para resolver un nombre antes de traerlo.

insert_blockA

Inserta un bloque ya definido en el dibujo. Soporta escala negativa: Azcuy espeja las unidades con xscale = -1 sobre la misma definicion. Ojo, a nivel tipologia de bano el espejado es un bloque aparte (A01 vs A01e).

draw_lineC

Linea de (x1, y1) a (x2, y2).

draw_circleB

Circulo con centro (cx, cy) y radio dado.

draw_rectangleC

Rectangulo como polilinea cerrada entre dos esquinas opuestas.

draw_textC

Texto en (x, y) con la altura dada.

zoom_extentsA

Zoom a la extension del dibujo activo. Si AutoCAD quedo oculto (Visible=False), lo trae al frente primero: no se puede encuadrar una ventana que no esta en pantalla.

show_windowB

Trae la ventana de AutoCAD al frente. Sirve cuando el servidor se engancho por COM sin que AutoCAD estuviera a la vista.

send_commandA

Escotilla de escape: manda comandos o AutoLISP a la linea de comandos. Usala solo para lo que no cubre ninguna tool. Hay filtro de seguridad, y todo lo que modifica el dibujo exige confirm=true. SendCommand es asincronico: confirma el envio, no el exito.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cruz636/autobat-v2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server