acp-mcp-agent
acp-mcp-agent
Resumen
Un servidor MCP que permite a un agente LLM manejar ANSYS Composite Pre [ACP(Pre)] — leer un laminado, cambiar ángulos de fibra y número de capas, comprobar reglas de fabricación y exportar el modelo de análisis y las definiciones de composite.
Se comunica con ACP de dos maneras, y la diferencia importa:
agent ─┬─ acp_* ──► PyACP ──► acp_grpcserver.exe headless, batch / optimisation
└─ acp_gui_* ──► TCP 47800 ──► ACP-Pre GUI live, visible on screenPyACP lanza su propia sesión ACP sin interfaz y no puede conectarse a una ventana ACP-Pre en ejecución. Por eso existe una segunda vía: un pequeño listener de socket que se ejecuta dentro del Python embebido de la GUI, que ejecuta las ediciones del modelo en el hilo principal de wx. Los ángulos cambian y el viewport se redibuja mientras lo observas.
Las dos sesiones son independientes. acp_gui_* edita el modelo abierto en la GUI;
acp_* edita el de la sesión sin interfaz. Elige una por tarea y quédate ahí.
El alcance es la mitad aguas arriba del bucle de composites. La resolución y el postprocesado permanecen donde ya funcionan:
acp-mcp-agent (lay-up) ──► analysis model ──► Mechanical (BC / mesh / solve)
──► composite defs ──► PyDPF-CompositesRelated MCP server: ansys-aedt-mcp
Demostración en vivo
Requisitos
ANSYS | con ACP. Desarrollado y probado con 2026 R1 ( |
Python | 3.10+ para el lado del servidor — cualquier intérprete que lance tu cliente MCP |
Paquetes |
|
SO | Windows. El puente en sí es portable, las rutas documentadas no lo son |
Cliente | Cualquier cliente MCP. Verificado con Claude Desktop |
ANSYS no es un paquete pip. ansys-acp-core inicia el servidor gRPC de ACP desde una
instalación local de ANSYS; sin una, nada de esto se ejecuta.
El puente de la GUI no necesita nada instalado: se ejecuta dentro del Python embebido de ACP-Pre (3.10 en la versión probada 2026 R1) y usa solo la biblioteca estándar más wx, que ACP-Pre ya proporciona.
Rutas
Nada en este repositorio tiene una ruta específica de máquina compilada. Una variable de entorno lleva la ubicación:
Variable | Leída por | Significado |
|
| ruta completa a |
|
| dónde escribir la salida de la sonda (por defecto: junto a |
|
| dónde escribir la salida de la sonda (por defecto: directorio temporal) |
install_autoload.py incrusta la ruta resuelta en el modelo donde se instala,
por lo que la copia embebida no necesita variable de entorno después.
Estructura del repositorio
acp_mcp.py the MCP server - 15 tools, stdio transport
acp_gui_bridge.py socket listener that runs INSIDE ACP-Pre
acp_gui_autoload.py tiny loader, embedded in a model for a persistent bridge
install_autoload.py embeds the loader in the open model, one call
mcp_config.example.json client registration template
requirements.txt
probes/
00_probe_pyacp.py stage 1: what this PyACP install actually exposes
gui_probe.py GUI console API exploration
gui_probe2.py deeper GUI console API dump
docs/
pyacp_api_report.txt reference probe output (yours lands in probes/)
gui_probe2_out.txt reference GUI console dump, 2026 R1
acp-scripting-notes.md undocumented ACP behaviour worth knowingConfiguración desde cero
1. Instala el lado de Python
git clone https://github.com/aalperakiss/acp-mcp-agent.git
cd acp-mcp-agent
pip install -r requirements.txt¿Entregado como zip en lugar de repositorio? Descomprímelo en cualquier lugar, cd a la
carpeta y ejecuta la línea de pip install — nada aquí depende de git, y las
rutas en este README son todas relativas a la raíz de la carpeta.
Usa un solo intérprete y recuerda su ruta absoluta — venv, Anaconda, lo que sea — pero debe ser exactamente el intérprete que pongas en la configuración del cliente. Un servidor que "no encuentra mcp" casi siempre es un segundo Python.
2. Prueba tu instalación de ANSYS
python probes\00_probe_pyacp.pySolo sonda de sesión: si launch_acp() falla aquí, nada más abajo importa.
El informe cae en probes\pyacp_api_report.txt; docs\pyacp_api_report.txt
es la referencia de la máquina de desarrollo, guardada para comparar.
Luego apúntalo a un modelo:
python probes\00_probe_pyacp.py C:/path/to/your.acph5PyACP renombró varios métodos entre versiones, así que acp_mcp.py resuelve cada
operación en tiempo de llamada desde el diccionario CANDIDATES cerca del inicio del archivo.
Compara el informe de la sonda con CANDIDATES, PLY_ANGLE_ATTRS y
PLY_COUNT_ATTRS, y añade cualquier nombre real que falte — un lugar, una edición.
¿Necesitas un .acph5? Abre ACP-Pre y Archivo → Guardar como. Tener ACP-Pre abierto no
ayuda a PyACP por sí mismo.
3. Registra el servidor con tu cliente
La configuración de Claude Desktop está en %APPDATA%\Claude\claude_desktop_config.json.
Pega la entrada acp de mcp_config.example.json dentro del objeto
mcpServers existente, junto a lo que ya haya. No reemplaces el archivo.
Cuida las comas y duplica cada barra invertida (o usa barras normales).
Luego cierra el cliente por completo — incluida la bandeja del sistema — y vuelve a abrirlo. La lista de herramientas se fija al inicio; un cliente en ejecución nunca verá un servidor nuevo.
Comprobación rápida sin cliente:
npx @modelcontextprotocol/inspector python acp_mcp.py4. Verifica la mitad sin interfaz
Llama en orden, confirmando que cada una devuelve JSON en lugar de Error:
acp_import_modelacp_get_layupacp_set_ply_angles— cambia una capa, luego vuelve a leer el laminadoacp_check_layup_rules— las violaciones en un modelo real son normalesacp_update_and_exportacp_save_for_gui— abre el resultado en ACP-Pre y revísalo visualmente
Eso ya es trabajo útil: abrir un modelo, listar el laminado, cambiar ángulos, comprobar reglas, exportar. Vale la pena convivir con ello un tiempo antes de automatizar más.
5. Inicia el puente de GUI en vivo
Abre ACP-Pre con un modelo, abre la consola de Python y pega una línea:
exec(open('<repo>/acp_gui_bridge.py').read())Deberías ver:
[acp_gui_bridge] listening on 127.0.0.1:47800Ahora acp_gui_status del agente devuelve pong: true y el nombre del
modelo abierto. Desde ahí acp_gui_set_ply_angles redibuja el viewport en vivo.
El listener vive en el proceso de ACP-Pre. Cierra ACP-Pre y desaparece — pega la línea de nuevo, o hazlo persistente como abajo.
6. Puente persistente (opcional)
Incrusta el autoloader en el modelo como objeto Script, para que ACP-Pre inicie el listener por sí solo. En la consola de ACP-Pre:
import os
os.environ['ACP_BRIDGE_PATH'] = '<repo>/acp_gui_bridge.py'
exec(open('<repo>/install_autoload.py').read())Luego guarda el modelo. Tres cosas hacen que esto sea seguro en lugar de imprudente:
El cargador está embebido, el puente no. Un objeto Script almacena el código como cadena, así que incrustar todo el puente enviaría un listener a cada máquina que abra el archivo. El cargador lee el puente desde el disco en su lugar; sin archivo, sin listener, una línea impresa.
Es idempotente. El modo
alwaysse dispara en cadamodel.update(), incluida la actualización que el propio puente dispara tras una edición de capa. La protección ensys._acp_bridgeevita que se reenlace el puerto 47800 a mitad de una petición.Obtiene
dbpor sí mismo. Los objetos Script se ejecutan con globales vacíos — sindb, sinmodel. El cargador alcanza el espacio de nombres de la consola a través de__main__.
Los Scripts se ejecutan al actualizar el modelo, no al abrir el archivo, así que
install_autoload.py dispara una actualización para levantar el listener de inmediato. Para eliminarlo después, pon
model.scripts['acp_agent_bridge'].active = False y guarda.
Aun así, mantén una copia separada habilitada para agente de los modelos compartidos. Un objeto Script es
invisible en una revisión de diseño, y un colega que abra tu .acph5 no debería
heredar un listener de socket por accidente.
Herramientas
Sin interfaz (PyACP)
Herramienta | Hace |
| lanzar una sesión sin interfaz y cargar un modelo |
| capas en orden de apilado: ángulo, capas, material |
| establecer orientaciones de fibra, con ajuste opcional a conjunto fabricable |
| establecer número de capas; |
| simetría, balance, ±45 exterior, ≤4 consecutivas, fracciones de dirección |
| actualizar, escribir modelo de análisis y definiciones de composite |
| escribir un |
Primero el vector de diseño, exporta una vez: las herramientas set_* no actualizan ni exportan.
GUI en vivo (puente de socket)
Herramienta | Hace |
| si el puente es alcanzable, qué modelo está abierto |
| leer el laminado del modelo de la GUI |
| establecer ángulos, redibujar inmediatamente |
| establecer número de capas, redibujar inmediatamente |
| añadir nuevas capas de modelado, heredando material y OSS |
| guardar el modelo de la GUI |
| exportar modelo de análisis / definiciones de composite desde la GUI |
| Python arbitrario en la sesión en vivo, con |
Prefiere las herramientas tipadas sobre acp_gui_exec para ediciones rutinarias; la herramienta de forma libre
es para exploración y casos puntuales.
acp_gui_add_ply toma una lista de ángulos y añade una capa por entrada, en
orden de apilado. El material y el conjunto de selección orientado se heredan de una
capa existente (la última del grupo por defecto, o copy_from), porque
create_modeling_ply necesita referencias a objetos que un agente no puede mantener. Un grupo
sin capas en absoluto no puede sembrarse desde aquí — crea la primera
capa en ACP-Pre.
Los ángulos se ajustan a 0, ±15, ±30, ±45, ±60, 90 por defecto. Desactiva el ajuste
explícitamente cuando quieras orientaciones intermedias.
Solución de problemas
Síntoma | Causa |
Faltan herramientas nuevas tras editar la configuración | Cliente no reiniciado por completo. La lista de herramientas se fija al inicio |
| ACP-Pre cerrado, o el puente nunca se cargó en este proceso |
La llamada al puente agota el tiempo tras 300 s | GUI ocupada — un diálogo abierto bloquea el hilo principal |
| ACP-Pre en ejecución sin modelo cargado |
| ANSYS no encontrado, o el Python incorrecto. Revisa la sonda primero |
Puerto 47800 en uso | Un listener huérfano. |
Brechas conocidas
acp_check_layup_rulesaplana todo en una sola pila. Las piezas de varias regiones necesitan agrupación por OSS antes de que esto sea fiable en geometría real.La creación de capas existe solo en la interfaz gráfica en vivo (
acp_gui_add_ply). Las herramientasacp_*sin interfaz gráfica todavía solo editan capas existentes, por lo que un modelo controlado a través de PyACP debe construirse con suficientes capas de repuesto desde el principio.Aún no existe una herramienta para eliminar capas. Desactive una capa con
acp_gui_set_ply_countsestablecido en 0.La herramienta de exportación no informa de la masa; la ruta del atributo varía demasiado entre versiones como para adivinarla. Añádala una vez que su informe de sondeo muestre la real.
Verificado solo contra una versión de ANSYS. El mecanismo
CANDIDATESexiste porque las versiones más antiguas y más nuevas diferirán.Sin pruebas. La ruta de verificación es el sondeo más la secuencia manual de herramientas en los pasos 4 y 5.
El bucle de optimización no se ha iniciado. Tres decisiones siguen abiertas: si el optimizador llama a ACP directamente o a través de MCP, si la resolución se ejecuta en lote o a través de un MCP de Mechanical, y qué conjunto de criterios de fallo establece la restricción. Prevea un modelo sustituto: una evaluación es una resolución completa, y 200 de ellas son como mínimo un día de trabajo.
Nota de seguridad
El puente escucha solo en 127.0.0.1 y no tiene autenticación.
acp_gui_exec ejecuta Python arbitrario dentro de ACP-Pre. Cualquier cosa que
pueda alcanzar ese puerto en la máquina tiene el mismo poder. No lo vincule a
0.0.0.0 y no lo ejecute en una sesión compartida.
Contribuciones
Se aceptan issues y pull requests, especialmente informes de sondeo de
versiones de ANSYS distintas de 2026 R1: esa es la forma más rápida de
completar CANDIDATES. Adjunte el probes/pyacp_api_report.txt generado e
indique la versión.
Las contribuciones se aceptan bajo la Licencia Apache 2.0 (véase la sección 5 de la licencia). Sin CLA.
Licencia
Licencia Apache 2.0 — consulte LICENSE y NOTICE.
ANSYS, ACP, Composite PrepPost, Mechanical y Workbench son marcas comerciales de ANSYS, Inc. Este proyecto es una integración independiente y no está afiliado, respaldado ni soportado por ANSYS, Inc. Aquí no se redistribuye ningún software ni documentación de ANSYS; se requiere una instalación local de ANSYS con licencia.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Run your website's AI support agent from Claude, Cursor or any MCP client. Manage the knowledge base, edit agent instructions, read conversations and leads, reply live to visitors, and check plan usage. 54 tools, OAuth sign-in, no API key. Free with every Asyntai account: https://asyntai.com/documentation/mcp/
Manage portable AI agent playbooks, Agent Skills, MCP configurations, personas, and memory.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Independent directory of agentic AI tools — search, compare & recommend via MCP. Read-only.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to automate COMSOL Multiphysics simulations, including model management, geometry building, physics configuration, meshing, solving, and results visualization through the MCP protocol.78MIT
- AlicenseCqualityDmaintenanceEnables AI agents to control Ansys Electronics Desktop (HFSS, Maxwell, Q3D, etc.) using MCP tools for simulation automation.10040PolyForm Noncommercial 1.0.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Ansys simulation software (Fluent, MAPDL, Mechanical, Geometry) through the Model Context Protocol.55MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to automate COMSOL Multiphysics simulations, including model management, geometry building, physics configuration, meshing, solving, and results visualization via the MCP protocol.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/aalperakiss/acp-mcp-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server