Skills_SAP
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- exec() — Shell command execution in mcp_server/sap_executor.py
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
MCP + Agente para crear scripts Python de SAP2000
SAP2000 Automation Framework
Framework de automatización de SAP2000 mediante Python, COM bridge y Model Context Protocol (MCP).
Permite generar modelos estructurales, asignar cargas, ejecutar análisis y extraer resultados de forma programática — todo orquestado desde VS Code con GitHub Copilot como interfaz conversacional.
Características Principales
- MCP Bridge — Servidor MCP que conecta GitHub Copilot con SAP2000 vía COM automation
- 212 funciones API verificadas — Registry con firmas, parámetros ByRef y wrappers testeados
- 127 wrapper scripts — Funciones individuales documentadas y verificadas contra SAP2000 real
- Scripts parametrizados — Modelos completos generados programáticamente (vigas, domos, naves, placas base)
- 8 aplicaciones GUI standalone — Interfaces PySide6 con worker threads para operación asíncrona
- Sandbox seguro — Ejecución aislada de scripts con restricciones de imports y timeout
- Documentación API completa — 25 archivos markdown cubriendo toda la API de SAP2000
Arquitectura
graph LR
A["👤 Usuario"] --> B["🤖 GitHub Copilot"]
B -->|MCP Protocol| C["🐍 MCP Server<br/>(Python)"]
C -->|COM Automation| D["🏗️ SAP2000"]
C --- E["📋 Script Library"]
C --- F["📖 API Docs Index"]
C --- G["🔧 Function Registry"]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#fff3e0
style D fill:#e8f5e9
Flujo de Trabajo
- El usuario describe lo que necesita en lenguaje natural a Copilot
- Copilot consulta el MCP Server para buscar documentación y funciones verificadas
- El MCP Server genera y ejecuta scripts en un sandbox aislado
- SAP2000 procesa los comandos vía COM automation y retorna resultados
- El script se guarda automáticamente en la biblioteca de scripts
Componentes del MCP Server
| Módulo | Función |
|---|---|
server.py |
Entry point — registro de 12 herramientas MCP |
sap_bridge.py |
Conexión COM singleton a SAP2000 |
sap_executor.py |
Ejecutor con sandbox (imports restringidos, timeout) |
script_library.py |
Persistencia y búsqueda de scripts |
doc_search.py |
Motor de búsqueda sobre documentación API |
function_registry.py |
Base de datos de funciones verificadas |
Requisitos
| Requisito | Versión |
|---|---|
| Windows | 10/11 (SAP2000 solo corre en Windows) |
| Python | 3.10+ |
| SAP2000 | Cualquier versión con soporte API |
| comtypes | Última versión |
| mcp[cli] | Última versión |
| PySide6 | Para GUIs standalone (opcional) |
Instalación
# 1. Clonar repositorio
git clone https://github.com/tu-usuario/Skills_SAP.git
cd Skills_SAP
# 2. Crear y activar entorno virtual
python -m venv .venv
.venv\Scripts\Activate.ps1
# 3. Instalar dependencias
pip install -r mcp_server/requirements.txt
# 4. (Opcional) Para GUIs standalone
pip install PySide6
Configuración en VS Code
El servidor MCP se autoconfigura via .vscode/mcp.json. Al abrir el workspace y usar Copilot, el server se inicia automáticamente — no requiere configuración manual.
Configuración en Claude Code
Para usar las herramientas MCP desde Claude Code, crear .claude/settings.json en la raíz del proyecto con rutas absolutas:
{
"mcpServers": {
"sap2000": {
"command": "<ruta-al-proyecto>/.venv/Scripts/python.exe",
"args": [
"<ruta-al-proyecto>/mcp_server/server.py"
],
"env": {}
}
}
}
Diferencias con VS Code:
- Root key es
"mcpServers"(no"servers") - No incluir
"type": "stdio"(Claude Code lo asume) - Usar rutas absolutas —
${workspaceFolder}no está disponible
Uso:
- Asegurarse de que SAP2000 esté abierto
- Llamar
connect_sap2000una vez por sesión para establecer el bridge COM - Las 12 herramientas MCP quedan disponibles automáticamente
Ejemplos de Aplicación
Scripts completos en scripts/ejemplos/, generados conversacionalmente con Copilot y verificados contra SAP2000 real.
| Script | Descripción |
|---|---|
example_1001_simple_beam.py |
Viga simplemente apoyada con verificación analítica (M, V, δ) |
example_ring_areas_parametric.py |
Anillo circular con 3 zonas concéntricas de espesor variable |
domo_elipsoidal_parametrico_py.py |
Domo elipsoidal 3D — doble curvatura (quads + triángulos polares) |
modelo_complejo_mixto.py |
Nave industrial mixta HA+acero con análisis sísmico NCh2745 |
mega_modelo_multi_torre.py |
Modelo multi-torre a gran escala |
complex_geometry_showcase.py |
Showcase de geometría compleja parametrizada |
test_bolt_plates_inline_py.py |
Placa base con pernos de anclaje y balasto Winkler |
Aplicaciones GUI Standalone
Interfaces gráficas completas construidas con PySide6, operables sin VS Code ni Copilot. Cada GUI se conecta directamente a SAP2000 via COM.
Modelo Base Estandarizado
Archivos: scripts/modelo_base/
Generador de modelo base con materiales, patrones de carga, secciones de acero/HA, espectros NCh2369 y combinaciones LRFD/ASD/NCh. Configuración completa en archivo config.py con parámetros sísmicos por zona.
Placa Base Paramétrica
Archivos: scripts/placabase/
Interfaz para generar placas base con control visual de todos los parámetros: pernos, silla de anclaje, balasto, y mallado. Incluye worker threads para ejecución asíncrona sin bloquear la GUI.
Anillo Circular
Archivos: scripts/ring_areas/
GUI para generar anillos circulares parametrizados con control de radios, espesores y calidad de malla por zona concéntrica.
Explorador de Database Tables
Archivos: scripts/database_tables/
Navegador y editor de las tablas internas de SAP2000. Permite listar todas las tablas, leer datos, editar celdas y exportar a CSV/XML/Excel. Cubre las 37 funciones de DatabaseTables.*.
Post-Proceso: Estabilidad y Shells
Archivos: scripts/post_proceso/
Extracción de resultados de análisis: desplazamientos de nodos (JointDispl) para verificación de estabilidad y fuerzas en shells (AreaForceShell) para todas las combinaciones de carga. Opera sobre la selección manual del usuario en SAP2000.
Combinaciones de Carga
Archivos: scripts/comb_cargas/
Gestor de combinaciones de carga con CRUD completo y templates de combinaciones normativas (LRFD, ASD, NCh). Permite crear, editar y eliminar combinaciones directamente en el modelo activo.
Estados de Carga
Archivos: scripts/estados_carga/
Aplicación multi-tab para mapeo y verificación de estados de carga. Arquitectura completa con capa de modelo dedicada, verificación basada en fixtures y funciones de cálculo reutilizables.
Fundaciones
Archivos: scripts/fundaciones/
Generador paramétrico de fundaciones. Diseño automatizado con conexión directa a SAP2000 para crear geometría, asignar propiedades y aplicar cargas.
Registry de Funciones Verificadas
El framework mantiene un registro de 212 funciones API verificadas contra SAP2000 real. Cada entrada incluye:
- Firma completa con tipos de parámetros
- Layout ByRef — posición de cada parámetro de salida en el tuple retornado
- Wrapper script — código ejecutable que demuestra el uso
- Notas — particularidades, valores por defecto, errores comunes
Categorías cubiertas:
| Categoría | Funciones | Ejemplo |
|---|---|---|
| File | 2 | NewBlank, Save, OpenFile |
| PropMaterial | 10 | SetMaterial, SetMPIsotropic, SetWeightAndMass |
| PropFrame | 13 | SetRectangle, SetCircle, SetISection, SetTube |
| PropArea | 3 | SetShell_1, GetNameList |
| Object_Model | 22 | AddCartesian, Count, GetCoordCartesian |
| FrameObj | 2 | AddByPoint, AddByCoord |
| AreaObj | 1 | AddByCoord |
| Properties | 3 | SetSection, SetTCLimits, SetSpring |
| Load_Patterns | 4 | Add, GetNameList, SetSelfWTMultiplier |
| Load_Cases | 5 | ResponseSpectrum.SetCase/SetLoads/GetLoads |
| RespCombo | 10 | Add, SetCaseList, GetCaseList, GetNameList |
| Analyze | 3 | RunAnalysis, GetActiveDOF, SetActiveDOF |
| Analysis_Results | 5 | JointDispl, JointReact, FrameForce, AreaForceShell |
| Database_Tables | 37 | Lectura, escritura, edición, exportación |
| Select | 1 | CoordinateRange |
| Constraints | 3 | SetBody, GetBody, SetDiaphragm |
| Design | 9 | StartDesign, GetCode, SetCode, SetComboStrength |
| Groups | 2 | AddGroup, SetGroupAssign |
| Edit | 1 | Divide |
| Functions | 1 | FuncRS.SetUser |
| Mass_Source | 4 | SetDefault, SetMassSource |
Estructura del Proyecto
Skills_SAP/
├── mcp_server/ # Servidor MCP (Python)
│ ├── server.py # Entry point — 12 herramientas MCP
│ ├── sap_bridge.py # Conexión COM singleton
│ ├── sap_executor.py # Sandbox de ejecución
│ ├── script_library.py # Persistencia de scripts
│ ├── doc_search.py # Buscador de documentación API
│ ├── function_registry.py # Registry de funciones verificadas
│ └── tests/ # Tests unitarios e integración
│
├── scripts/ # Scripts y aplicaciones
│ ├── ejemplos/ # 7 scripts de ejemplo completos
│ ├── wrappers/ # 127 wrappers de funciones individuales
│ ├── templates/ # Templates base (backend + GUI)
│ ├── mesh/ # Backends de generación de malla
│ ├── modelo_base/ # GUI: Modelo base estandarizado
│ ├── placabase/ # GUI: Placa base paramétrica
│ ├── ring_areas/ # GUI: Anillo circular
│ ├── database_tables/ # GUI: Explorador de tablas
│ ├── post_proceso/ # GUI: Estabilidad + shells
│ ├── comb_cargas/ # GUI: Combinaciones de carga
│ ├── estados_carga/ # GUI: Estados de carga
│ ├── fundaciones/ # GUI: Fundaciones paramétricas
│ ├── columnas/ # Generador de columnas
│ ├── steel_connections/ # Conexiones de acero
│ ├── section_cut/ # Section Cuts (en desarrollo)
│ └── registry.json # Registry de 212 funciones verificadas
│
├── API/ # Documentación API SAP2000 (25 archivos .md)
│
└── .github/
├── copilot-instructions.md # Instrucciones para Copilot
├── agents/ # Agente SAP2000 Scripter
└── skills/ # Skill de referencia API
Herramientas MCP Disponibles
El servidor expone 12 herramientas que Copilot puede invocar:
| Herramienta | Descripción |
|---|---|
connect_sap2000 |
Conectar/adjuntar a instancia de SAP2000 |
disconnect_sap2000 |
Desconectar del modelo activo |
get_model_info |
Obtener info del modelo (unidades, conteos, archivo) |
execute_sap_function |
Ejecutar una función API individual |
run_sap_script |
Ejecutar un script completo en sandbox |
list_scripts |
Listar scripts guardados |
load_script |
Cargar código fuente de un script |
search_api_docs |
Buscar en documentación API |
list_api_categories |
Listar categorías de documentación |
query_function_registry |
Consultar funciones verificadas |
register_verified_function |
Registrar nueva función verificada |
list_registry_categories |
Listar categorías del registry |
Tecnologías
- Python 3.10+ — Lenguaje principal
- comtypes — Interfaz COM para SAP2000
- MCP (Model Context Protocol) — Protocolo de comunicación con Copilot
- FastMCP — SDK para servidor MCP
- PySide6 — Framework GUI (aplicaciones standalone)
- SAP2000 API — API COM de CSI para análisis estructural
Licencia
Este proyecto está bajo la licencia MIT. Ver LICENSE para más detalles.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found