Skip to main content
Glama
etabs-mcp

etabs-mcp

by LATINALU

etabs-mcp

Servidor MCP para ETABS 22. Se adjunta a la instancia de ETABS que ya tienes abierta y expone geometria, secciones, materiales, cargas y resultados como herramientas MCP, ademas de herramientas para crear y editar el modelo (grids, niveles, secciones, frames, muros, cargas, combos y analisis).

Requisitos

  • Windows con ETABS 22 instalado y el modelo abierto.

  • Python 3.10 o superior (64 bits, igual que ETABS).

Related MCP server: ETABS MCP Server

Instalacion

cd etabs-mcp
py -3 -m venv .venv
.venv\Scripts\pip install -e .

Uso

  1. Abre ETABS 22 y carga tu modelo.

  2. Registra el servidor en tu cliente MCP:

{
  "mcpServers": {
    "etabs22": {
      "command": "C:\\ruta\\a\\etabs-mcp\\.venv\\Scripts\\etabs-mcp.exe"
    }
  }
}
  1. Prueba la conexion desde el cliente con etabs_model_info.

Modo HTTP (para usarlo desde Devin u otro cliente remoto)

ETABS corre en tu PC, asi que el servidor debe escuchar por HTTP y exponerse con un tunel. El token es obligatorio: sin Authorization: Bearer <token> toda peticion recibe 401.

$env:ETABS_MCP_TOKEN = python -c "import secrets; print(secrets.token_urlsafe(32))"
$env:ETABS_MCP_TOKEN                      # guarda este valor
.\.venv\Scripts\etabs-mcp.exe --http --port 8756

En otra terminal, publica el puerto (cualquiera de los dos):

cloudflared tunnel --url http://127.0.0.1:8756
ngrok http 8756

La URL del MCP es https://<tu-tunel>/mcp. Agrega --readonly si quieres exponerlo sin herramientas de escritura.

Para verificar sin cliente MCP:

.venv\Scripts\python -c "from etabs_mcp.server import etabs_model_info; print(etabs_model_info())"

Herramientas

Herramienta

Descripcion

etabs_model_info

Archivo, version, unidades y si el modelo esta analizado

etabs_set_units

Unidades de presentacion al leer datos (p. ej. Ton_m_C)

etabs_stories

Niveles con elevacion y altura

etabs_grid_systems

Sistemas de ejes

etabs_points

Nudos con coordenadas, etiqueta y nivel

etabs_frames

Vigas/columnas con seccion y nudos extremos

etabs_areas

Losas/muros con propiedad y contorno

etabs_frame_sections

Secciones de frame y sus propiedades geometricas

etabs_area_sections

Propiedades de area

etabs_materials

Materiales, tipo y peso especifico

etabs_load_patterns

Patrones de carga y multiplicador de peso propio

etabs_load_cases

Casos de carga

etabs_load_combinations

Combinaciones con sus casos y factores

etabs_select_output

Selecciona casos/combos para consultar resultados

etabs_modal_periods

Periodos y frecuencias modales

etabs_base_reactions

Reacciones en la base

etabs_story_drifts

Derivas por nivel

etabs_joint_reactions

Reacciones en nudos

etabs_frame_forces

Fuerzas internas en frames

etabs_reconnect

Re-adjunta a ETABS si cerraste o reabriste el programa

Escritura

Herramienta

Descripcion

etabs_new_model

Modelo nuevo con reticula regular y niveles

etabs_new_blank_model

Modelo vacio

etabs_open_model / etabs_save_model

Abrir y guardar .EDB

etabs_set_stories

Define niveles y alturas

etabs_define_concrete_material

Material de concreto (f'c, E, peso)

etabs_define_rectangular_section / etabs_define_circular_section

Secciones de frame

etabs_define_slab / etabs_define_wall

Propiedades de losa y muro

etabs_add_frame

Viga o columna por coordenadas

etabs_add_area

Losa o muro por vertices

etabs_set_point_restraint

Apoyos en nudos

etabs_add_load_pattern

Patrones de carga

etabs_assign_frame_distributed_load

Carga distribuida en frames

etabs_assign_area_uniform_load

Carga uniforme en areas

etabs_add_load_combination

Combinaciones de carga

etabs_run_analysis

Corre el analisis

etabs_unlock_model / etabs_refresh_view

Desbloquear tras analisis y refrescar vistas

Para dejar el servidor en modo consulta, exporta ETABS_MCP_READONLY=1: las herramientas de escritura quedan deshabilitadas y devuelven error.

Ejemplo de proyecto nuevo

  1. etabs_new_model (units Ton_m_C, 3 niveles de 3 m, retícula 4x4 a 6 m)

  2. etabs_define_concrete_material -> etabs_define_rectangular_section (columna y viga)

  3. etabs_add_frame para columnas y vigas, etabs_define_slab + etabs_add_area para losas

  4. etabs_set_point_restraint en la base

  5. etabs_add_load_pattern + etabs_assign_area_uniform_load + etabs_add_load_combination

  6. etabs_run_analysis y luego etabs_select_output con etabs_story_drifts / etabs_base_reactions

  7. etabs_save_model con la ruta del .edb

Los resultados requieren que el analisis ya este corrido en ETABS y que antes llames a etabs_select_output con los casos o combinaciones que te interesan. Las listas largas se paginan con limit y offset (maximo 500 elementos por llamada).

Notas

  • Las herramientas de escritura desbloquean el modelo automaticamente cuando quedo bloqueado por un analisis previo.

  • etabs_new_model descarta el modelo abierto sin guardar: guarda antes si te interesa.

  • Si ETABS se cierra o cambias de modelo, usa etabs_reconnect.

  • La API de CSI expone sus salidas como parametros ByRef; call_api prueba las dos convenciones que puede generar comtypes para que funcione en distintas instalaciones.

Available Tools

40 tools
etabs_add_areaC

Crea una losa o muro a partir de sus vertices [[x, y, z], ...] en orden.

Inputs: points (required), property_name (required), name. Returns: object

etabs_add_frameC

Crea una viga o columna entre dos coordenadas globales.

Inputs: xi (required), xj (required), yi (required), yj (required), +4 more. Returns: object

etabs_add_load_combinationC

Crea una combinacion de carga. case_type: 0=load case, 1=combo.

Inputs: name (required), cases (required), factors (required), case_type, +1 more. Returns: object

etabs_add_load_patternC

Crea un patron de carga. load_type: 1=Dead, 2=SuperDead, 3=Live, 5=Quake, 6=Wind, 8=Other.

Inputs: name (required), load_type, add_analysis_case, self_weight_multiplier. Returns: object

etabs_areasC

Elementos area (losas y muros) con su propiedad y nudos de contorno.

Inputs: limit, story, offset. Returns: object

etabs_area_sectionsB

Nombres de las propiedades de area (losas, muros, deck).

Inputs: no named parameters. Returns: result

etabs_assign_area_uniform_loadC

Asigna carga uniforme a una losa o muro (fuerza por area).

Inputs: area (required), value (required), load_pattern (required), replace, +2 more. Returns: object

etabs_assign_frame_distributed_loadC

Asigna carga uniformemente distribuida a un frame (fuerza por longitud).

Inputs: frame (required), value (required), load_pattern (required), replace, +2 more. Returns: object

etabs_base_reactionsB

Reacciones en la base para los casos/combinaciones seleccionados.

Inputs: no named parameters. Returns: result

etabs_define_circular_sectionC

Define una seccion circular.

Inputs: name (required), diameter (required), material (required). Returns: object

etabs_define_concrete_materialC

Define un material de concreto (f'c y modulo en las unidades actuales).

Inputs: fc (required), name (required), modulus (required), poisson, +2 more. Returns: object

etabs_define_rectangular_sectionB

Define una seccion rectangular de concreto (depth = peralte, width = base).

Inputs: name (required), depth (required), width (required), material (required). Returns: object

etabs_define_slabD

Define una propiedad de losa.

Inputs: name (required), material (required), thickness (required), slab_type, +1 more. Returns: object

etabs_define_wallD

Define una propiedad de muro.

Inputs: name (required), material (required), thickness (required), shell_type. Returns: object

etabs_frame_forcesC

Fuerzas internas en frames. item_type: 0=objeto, 1=elemento, 2=grupo, 3=seleccion.

Inputs: name, limit, item_type. Returns: object

etabs_framesC

Elementos frame (vigas/columnas) con seccion asignada y nudos extremos.

Inputs: limit, story, offset. Returns: object

etabs_frame_sectionsB

Secciones de frame definidas, con sus propiedades geometricas si se piden.

Inputs: include_properties. Returns: result

etabs_grid_systemsC

Nombres de los sistemas de ejes (grids) del modelo.

Inputs: no named parameters. Returns: result

etabs_joint_reactionsB

Reacciones en nudos. item_type: 0=objeto, 1=elemento, 2=grupo, 3=seleccion.

Con item_type=2 y name='All' se consulta todo el modelo.

Inputs: name, limit, item_type. Returns: object

etabs_load_casesB

Nombres de los casos de carga definidos.

Inputs: no named parameters. Returns: result

etabs_load_combinationsC

Combinaciones de carga y, opcionalmente, los casos y factores que las componen.

Inputs: include_cases. Returns: result

etabs_load_patternsC

Patrones de carga con su tipo y multiplicador de peso propio.

Inputs: no named parameters. Returns: result

etabs_materialsC

Materiales definidos con su tipo y peso especifico.

Inputs: no named parameters. Returns: result

etabs_modal_periodsB

Periodos y frecuencias modales del analisis ejecutado.

Inputs: no named parameters. Returns: result

etabs_model_infoA

Datos del modelo abierto: archivo, version de ETABS, unidades y si esta analizado.

Inputs: no named parameters. Returns: object

etabs_new_blank_modelC

Crea un modelo vacio, sin ejes ni niveles predefinidos.

Inputs: units. Returns: object

etabs_new_modelA

Crea un modelo nuevo con una retícula regular y los niveles indicados.

Descarta el modelo abierto sin guardar, asi que guarda antes con etabs_save_model.

Inputs: units, stories, spacing_x, spacing_y, +4 more. Returns: object

etabs_open_modelB

Abre un archivo .EDB existente.

Inputs: path (required). Returns: object

etabs_pointsD

Nudos con coordenadas cartesianas, etiqueta y nivel.

Inputs: limit, story, offset. Returns: object

etabs_reconnectA

Vuelve a adjuntar el servidor a la instancia de ETABS abierta.

Inputs: no named parameters. Returns: object

etabs_refresh_viewA

Refresca las ventanas de ETABS para ver los cambios recien creados.

Inputs: no named parameters. Returns: object

etabs_run_analysisC

Corre el analisis. Con cases solo ejecuta esos casos.

Inputs: cases. Returns: object

etabs_save_modelB

Guarda el modelo. Con path hace 'guardar como' (usa ruta absoluta .edb).

Inputs: path. Returns: object

etabs_select_outputC

Selecciona que casos y combinaciones se usaran al consultar resultados.

Inputs: cases, combos. Returns: object

etabs_set_point_restraintC

Asigna restricciones a un nudo: [U1, U2, U3, R1, R2, R3]. Por defecto empotrado.

Inputs: point (required), item_type, restraints. Returns: object

etabs_set_storiesB

Define los niveles del modelo (de abajo hacia arriba) con su altura.

Inputs: names (required), heights (required), similar_to, base_elevation, +1 more. Returns: object

etabs_set_unitsA

Cambia las unidades de presentacion usadas al leer datos (p. ej. 'Ton_m_C', 'kN_m_C').

Solo afecta como se reportan los valores; no modifica el modelo.

Inputs: units (required). Returns: object

etabs_storiesA

Lista los niveles con su elevacion y altura.

Inputs: no named parameters. Returns: result

etabs_story_driftsC

Derivas por nivel para los casos/combinaciones seleccionados.

Inputs: no named parameters. Returns: result

etabs_unlock_modelA

Desbloquea el modelo para poder seguir editandolo tras un analisis.

Inputs: no named parameters. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.6/5.0

    Scored across 40 tools

    Disambiguation5/5

    Each tool targets a distinct entity or action: list vs create vs define vs assign vs analyze vs query. Even closely related tools like load_patterns, add_load_pattern, and load_combinations are clearly separated by their purpose.

    Naming Consistency3/5

    All tools share the etabs_ prefix, but the action style is mixed: noun-only names for queries (etabs_stories, etabs_points), verb+noun for actions (etabs_set_units, etabs_add_frame), and inconsistent creation verbs such as new_model, add_load_pattern, and define_rectangular_section.

    Tool Count2/5

    With 40 tools, the surface is far larger than the typical well-scoped 3–15 tool set. While ETABS is a complex domain, this many tools risks overwhelming agents and indicates the server is trying to cover too many operations.

    Completeness3/5

    The set covers a broad workflow: model creation, geometry, property definitions, load patterns/combinations, assignments, analysis, and results. However, critical gaps remain: there is no explicit tool to assign defined sections/materials to frame or area elements, and no update/delete operations for created objects.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Connects AI assistants to CSI ETABS for structural engineering tasks, enabling model creation, analysis, design, and seismic checks via the COM API.
      69
      10
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables users to control CSI ETABS structural engineering software through Claude, allowing model creation, status checks, and engineering checks via COM automation.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI coding assistants to directly control CSI ETABS for structural and seismic analysis, including model inspection, material/section definition, frame generation, solver execution, and result extraction through natural language.
      2
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      An agentic MCP server for CSI ETABS v22+ that enables AI agents to model, load, analyze, design, and inspect building structures through 60 curated engineering tools and live .NET reflection of the full 1,293-method OAPI. Includes offscreen 3D rendering of deformed shapes and D/C ratios, interactive database table editing, and background analysis execution.
      71
      20
      Apache 2.0