Skip to main content
Glama
aalperakiss

acp-mcp-agent

by aalperakiss

acp-mcp-agent

License: Apache 2.0 Python 3.10+ Platform: Windows ANSYS 2026 R1

Überblick

Ein MCP-Server, der es einem LLM-Agenten ermöglicht, ANSYS Composite Pre [ACP(Pre)] zu steuern — ein Lay-up zu lesen, Faserwinkel und Lagenanzahlen zu ändern, Fertigungsregeln zu prüfen und das Analysemodell sowie die Composite-Definitionen zu exportieren.

Er spricht ACP auf zwei Arten an, und der Unterschied ist wichtig:

agent ─┬─ acp_*      ──► PyACP ──► acp_grpcserver.exe   headless, batch / optimisation
       └─ acp_gui_*  ──► TCP 47800 ──► ACP-Pre GUI      live, visible on screen

PyACP startet seine eigene headless ACP-Sitzung und kann sich nicht an ein laufendes ACP-Pre-Fenster anhängen. Deshalb gibt es einen zweiten Pfad: einen kleinen Socket-Listener, der im eingebetteten Python der GUI läuft und Modelländerungen im wx-Hauptthread ausführt. Winkel ändern sich und das Viewport wird live neu gezeichnet, während Sie zusehen.

Die beiden Sitzungen sind unabhängig. acp_gui_* bearbeitet das in der GUI geöffnete Modell; acp_* bearbeitet das headless. Wählen Sie eine pro Aufgabe und bleiben Sie dabei.

Der Umfang ist die vorgelagerte Hälfte der Composites-Schleife. Lösung und Nachbearbeitung bleiben dort, wo sie bereits funktionieren:

acp-mcp-agent (lay-up) ──► analysis model ──► Mechanical (BC / mesh / solve)
                       ──► composite defs ──► PyDPF-Composites

Related MCP server: ansys-aedt-mcp

Live-Demo

Voraussetzungen

ANSYS

mit ACP. Entwickelt und getestet mit 2026 R1 (AWP_ROOT261)

Python

3.10+ für die Serverseite — welcher Interpreter auch immer Ihr MCP-Client startet

Packages

mcp, pydantic, ansys-acp-core (siehe requirements.txt)

OS

Windows. Die Bridge selbst ist portabel, die dokumentierten Pfade nicht

Client

Jeder MCP-Client. Verifiziert mit Claude Desktop

ANSYS ist kein pip-Paket. ansys-acp-core startet den ACP-gRPC-Server aus einer lokalen ANSYS-Installation; ohne eine solche läuft hier nichts.

Die GUI-Bridge benötigt keine Installation: Sie läuft im eigenen eingebetteten Python von ACP-Pre (3.10 auf getestetem 2026 R1) und verwendet nur die Standardbibliothek plus wx, die ACP-Pre bereits bereitstellt.

Pfade

Nichts in diesem Repository hat einen maschinenspezifischen Pfad eingebaut. Eine Umgebungsvariable trägt den Speicherort:

Variable

Gelesen von

Bedeutung

ACP_BRIDGE_PATH

acp_mcp.py, install_autoload.py, acp_gui_autoload.py

vollständiger Pfad zu acp_gui_bridge.py

ACP_PROBE_OUT

00_probe_pyacp.py, gui_probe.py

wohin die Probe-Ausgabe geschrieben wird (Standard: neben 00_probe_pyacp.py, temporäres Verzeichnis für die GUI-Probe)

ACP_PROBE2_OUT

gui_probe2.py

wohin die Probe-Ausgabe geschrieben wird (Standard: temporäres Verzeichnis)

install_autoload.py bäckt den aufgelösten Pfad in das Modell ein, in das es installiert wird, sodass die eingebettete Kopie danach keine Umgebungsvariable benötigt.


Repository-Struktur

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 knowing

Einrichtung von Grund auf

1. Python-Seite installieren

git clone https://github.com/aalperakiss/acp-mcp-agent.git
cd acp-mcp-agent
pip install -r requirements.txt

Als Zip statt als Repository geliefert? Entpacken Sie es irgendwo, cd in den Ordner und führen Sie die pip install-Zeile aus – nichts hier hängt von git ab, und die Pfade in dieser README sind alle relativ zum Ordnerstamm.

Verwenden Sie einen Interpreter und merken Sie sich seinen absoluten Pfad – venv, Anaconda, was auch immer – aber es muss genau der Interpreter sein, den Sie in die Client-Konfiguration eintragen. Ein Server, der „mcp nicht finden kann“, ist fast immer ein zweites Python.

2. ANSYS-Installation prüfen

python probes\00_probe_pyacp.py

Nur Sitzungsprobe: Wenn launch_acp() hier fehlschlägt, ist nichts Weiteres von Bedeutung. Der Bericht landet in probes\pyacp_api_report.txt; docs\pyacp_api_report.txt ist die Referenz vom Entwicklungsrechner, zum Vergleich aufbewahrt. Dann zeigen Sie es auf ein Modell:

python probes\00_probe_pyacp.py C:/path/to/your.acph5

PyACP hat zwischen den Versionen mehrere Methoden umbenannt, daher löst acp_mcp.py jede Operation zur Laufzeit aus dem CANDIDATES-Dict nahe dem Dateianfang auf. Vergleichen Sie den Probe-Bericht mit CANDIDATES, PLY_ANGLE_ATTRS und PLY_COUNT_ATTRS und fügen Sie fehlende echte Namen hinzu – eine Stelle, eine Bearbeitung.

Brauchen Sie eine .acph5? Öffnen Sie ACP-Pre und Datei → Speichern unter. Ein geöffnetes ACP-Pre hilft PyACP nicht von selbst.

3. Server bei Ihrem Client registrieren

Die Claude-Desktop-Konfiguration liegt unter %APPDATA%\Claude\claude_desktop_config.json. Fügen Sie den acp-Eintrag aus mcp_config.example.json innerhalb des vorhandenen mcpServers-Objekts ein, neben dem, was bereits dort ist. Ersetzen Sie die Datei nicht. Achten Sie auf die Kommas und verdoppeln Sie jeden Backslash (oder verwenden Sie Schrägstriche).

Beenden Sie dann den Client vollständig – einschließlich System Tray – und öffnen Sie ihn erneut. Die Werkzeugliste wird beim Start festgelegt; ein laufender Client sieht einen neuen Server nie.

Schnelltest ohne Client:

npx @modelcontextprotocol/inspector python acp_mcp.py

4. Headless-Hälfte verifizieren

Rufen Sie in dieser Reihenfolge auf und bestätigen Sie, dass jeder JSON zurückgibt und nicht Error::

  1. acp_import_model

  2. acp_get_layup

  3. acp_set_ply_angles — einen Ply ändern, dann das Lay-up erneut lesen

  4. acp_check_layup_rules — Verstöße bei einem echten Modell sind normal

  5. acp_update_and_export

  6. acp_save_for_gui — das Ergebnis in ACP-Pre öffnen und prüfen

Das ist bereits nützliche Arbeit: ein Modell öffnen, das Lay-up auflisten, Winkel ändern, Regeln prüfen, exportieren. Es lohnt sich, eine Weile damit zu leben, bevor man weiter automatisiert.

5. Live-GUI-Bridge starten

Öffnen Sie ACP-Pre mit einem Modell, öffnen Sie die Python-Konsole und fügen Sie eine Zeile ein:

exec(open('<repo>/acp_gui_bridge.py').read())

Sie sollten sehen:

[acp_gui_bridge] listening on 127.0.0.1:47800

Jetzt gibt acp_gui_status vom Agenten pong: true und den Namen des geöffneten Modells zurück. Von dort aus zeichnet acp_gui_set_ply_angles das Viewport live neu.

Der Listener lebt im ACP-Pre-Prozess. Schließen Sie ACP-Pre und er ist weg – fügen Sie die Zeile erneut ein oder machen Sie ihn wie unten beschrieben persistent.

6. Persistente Bridge (optional)

Betten Sie den Autoloader als Script-Objekt in das Modell ein, damit ACP-Pre den Listener selbst startet. In der ACP-Pre-Konsole:

import os
os.environ['ACP_BRIDGE_PATH'] = '<repo>/acp_gui_bridge.py'
exec(open('<repo>/install_autoload.py').read())

Dann speichern Sie das Modell. Drei Dinge machen das sicher statt leichtsinnig:

  • Der Loader ist eingebettet, die Bridge nicht. Ein Script-Objekt speichert Quellcode als String, daher würde das Einbetten der gesamten Bridge einen Listener auf jedem Rechner ausliefern, der die Datei öffnet. Der Loader liest die Bridge stattdessen von der Festplatte; keine Datei, kein Listener, eine gedruckte Zeile.

  • Es ist idempotent. Der always-Modus feuert bei jedem model.update(), einschließlich des Updates, das die Bridge selbst nach einer Ply-Bearbeitung auslöst. Die Wache auf sys._acp_bridge verhindert, dass Port 47800 mitten in einer Anfrage neu gebunden wird.

  • Es holt db selbst. Script-Objekte laufen mit leeren Globals – kein db, kein model. Der Loader erreicht den Konsolen-Namespace über __main__.

Skripte laufen bei Modell-Update, nicht beim Dateiöffnen, daher löst install_autoload.py ein Update aus, um den Listener sofort hochzufahren. Um es später zu entfernen, setzen Sie model.scripts['acp_agent_bridge'].active = False und speichern.

Behalten Sie trotzdem eine separate agent-fähige Kopie gemeinsamer Modelle. Ein Script-Objekt ist in einer Design-Review unsichtbar, und ein Kollege, der Ihre .acph5 öffnet, sollte nicht versehentlich einen Socket-Listener erben.


Werkzeuge

Headless (PyACP)

Tool

Funktion

acp_import_model

startet eine headless Sitzung und lädt ein Modell

acp_get_layup

Plies in Stapelreihenfolge: Winkel, Lagen, Material

acp_set_ply_angles

Faserorientierungen setzen, optional auf fertigbare Menge rasten

acp_set_ply_counts

Lagenanzahlen setzen; 0 deaktiviert einen Ply

acp_check_layup_rules

Symmetrie, Balance, ±45 außen, ≤4 aufeinanderfolgende, Richtungsanteile

acp_update_and_export

aktualisieren, Analysemodell und Composite-Definitionen schreiben

acp_save_for_gui

eine .acph5 schreiben, um sie in ACP-Pre zu prüfen

Designvektor zuerst, einmal exportieren: Die set_*-Werkzeuge aktualisieren oder exportieren nicht.

Live-GUI (Socket-Bridge)

Tool

Funktion

acp_gui_status

ist die Bridge erreichbar, welches Modell ist geöffnet

acp_gui_get_layup

das Lay-up aus dem GUI-Modell lesen

acp_gui_set_ply_angles

Winkel setzen, sofort neu zeichnen

acp_gui_set_ply_counts

Lagenanzahlen setzen, sofort neu zeichnen

acp_gui_add_ply

neue Modellierungs-Plies anhängen, Material und OSS erben

acp_gui_save

das GUI-Modell speichern

acp_gui_export

Analysemodell / Composite-Definitionen aus der GUI exportieren

acp_gui_exec

beliebiges Python in der Live-Sitzung, db und model im Scope

Bevorzugen Sie die typisierten Werkzeuge gegenüber acp_gui_exec für Routinebearbeitungen; das Freiform-Werkzeug ist für Erkundung und Einzelfälle.

acp_gui_add_ply nimmt eine Liste von Winkeln und hängt einen Ply pro Eintrag in Stapelreihenfolge an. Material und orientierte Auswahlmenge werden von einem vorhandenen Ply geerbt (standardmäßig der letzte in der Gruppe, oder copy_from), weil create_modeling_ply Objektreferenzen benötigt, die ein Agent nicht halten kann. Eine Gruppe ohne Plies kann daher von hier aus nicht initialisiert werden – erstellen Sie den ersten Ply in ACP-Pre.

Winkel rasten standardmäßig auf 0, ±15, ±30, ±45, ±60, 90 ein. Schalten Sie das Rasten explizit aus, wenn Sie Zwischenorientierungen wünschen.


Fehlerbehebung

Symptom

Ursache

Neue Werkzeuge fehlen nach Konfigurationsänderung

Client nicht vollständig neu gestartet. Werkzeugliste wird beim Start festgelegt

Cannot reach the live ACP-Pre bridge

ACP-Pre geschlossen, oder die Bridge wurde in diesem Prozess nie geladen

Bridge-Aufruf läuft nach 300 s in Timeout

GUI beschäftigt – ein offener Dialog blockiert den Hauptthread

No active model

ACP-Pre läuft ohne geladenes Modell

launch_acp() schlägt fehl

ANSYS nicht gefunden oder falsches Python. Zuerst die Probe prüfen

Port 47800 belegt

Ein verwaister Listener. sys._acp_bridge.stop() in der Konsole


Bekannte Lücken

  • acp_check_layup_rules reduziert alles auf einen einzigen Stack. Mehrzonen-Bauteile benötigen eine Gruppierung pro OSS, bevor dies bei realer Geometrie vertrauenswürdig ist.

  • Die Ply-Erstellung existiert nur auf der Live-GUI-Seite (acp_gui_add_ply). Die headless acp_*-Werkzeuge bearbeiten weiterhin nur vorhandene Plies, daher muss ein über PyACP gesteuertes Modell von vornherein mit genügend Reserve-Plies aufgebaut werden.

  • Noch kein Werkzeug zum Löschen von Plies. Deaktivieren Sie einen Ply mit acp_gui_set_ply_counts auf 0.

  • Die Masse wird vom Export-Werkzeug nicht gemeldet; der Attributpfad variiert zu stark zwischen den Versionen, um ihn zu erraten. Fügen Sie ihn hinzu, sobald Ihr Probe-Bericht den tatsächlichen Pfad zeigt.

  • Nur gegen eine ANSYS-Version verifiziert. Der CANDIDATES-Mechanismus existiert, weil sich ältere und neuere Versionen unterscheiden werden.

  • Keine Tests. Der Verifikationspfad ist der Probe plus die manuelle Werkzeugsequenz in den Schritten 4 und 5.

  • Optimierungsschleife nicht gestartet. Drei Entscheidungen stehen noch aus: ob der Optimierer ACP direkt oder über MCP aufruft, ob die Lösung im Batch-Modus oder über einen Mechanical-MCP läuft, und welche Versagenskriterien die Randbedingung festlegen. Planen Sie ein Surrogat ein — eine Auswertung ist eine vollständige Lösung, und 200 davon sind mindestens ein Arbeitstag.

Sicherheitshinweis

Die Brücke lauscht nur auf 127.0.0.1 und hat keine Authentifizierung. acp_gui_exec führt beliebiges Python innerhalb von ACP-Pre aus. Alles, was diesen Port auf der Maschine erreichen kann, hat dieselbe Macht. Binden Sie sie nicht an 0.0.0.0 und führen Sie sie nicht in einer gemeinsamen Sitzung aus.


Mitwirken

Issues und Pull Requests sind willkommen, insbesondere Probe-Berichte von anderen ANSYS-Versionen als 2026 R1 — das ist der schnellste Weg, CANDIDATES zu vervollständigen. Fügen Sie den generierten probes/pyacp_api_report.txt bei und geben Sie die Version an.

Beiträge werden unter der Apache License 2.0 akzeptiert (siehe Abschnitt 5 der Lizenz). Kein CLA.

Lizenz

Apache License 2.0 — siehe LICENSE und NOTICE.

ANSYS, ACP, Composite PrepPost, Mechanical und Workbench sind Marken von ANSYS, Inc. Dieses Projekt ist eine unabhängige Integration und ist weder mit ANSYS, Inc. verbunden, noch von ANSYS, Inc. unterstützt oder befürwortet. Hier wird keine ANSYS-Software oder -Dokumentation weiterverteilt; eine lizenzierte lokale ANSYS-Installation ist erforderlich.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to automate COMSOL Multiphysics simulations, including model management, geometry building, physics configuration, meshing, solving, and results visualization through the MCP protocol.
    78
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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

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