acp-mcp-agent
Provides tools for driving ANSYS Composite PrepPost (ACP) to read composite lay-ups, modify ply angles and layer counts, check manufacturing rules, and export analysis models and composite definitions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@acp-mcp-agentChange the fiber angle of the top ply to 90 degrees"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
acp-mcp-agent
Overview
An MCP server that lets an LLM agent drive ANSYS Composite Pre [ACP(Pre)] — read a lay-up, change fibre angles and layer counts, check manufacturing rules, and export the analysis model and composite definitions.
It talks to ACP two ways, and the difference matters:
agent ─┬─ acp_* ──► PyACP ──► acp_grpcserver.exe headless, batch / optimisation
└─ acp_gui_* ──► TCP 47800 ──► ACP-Pre GUI live, visible on screenPyACP launches its own headless ACP session and cannot attach to a running ACP-Pre window. So a second path exists: a small socket listener running inside the GUI's embedded Python, which executes model edits on the wx main thread. Angles change and the viewport redraws while you watch.
The two sessions are independent. acp_gui_* edits the model open in the GUI;
acp_* edits the headless one. Pick one per task and stay there.
Scope is the upstream half of the composites loop. Solve and post-processing stay where they already work:
acp-mcp-agent (lay-up) ──► analysis model ──► Mechanical (BC / mesh / solve)
──► composite defs ──► PyDPF-CompositesRelated MCP server: ansys-aedt-mcp
Live Demo
Requirements
ANSYS | with ACP. Developed and tested with 2026 R1 ( |
Python | 3.10+ for the server side — whichever interpreter your MCP client launches |
Packages |
|
OS | Windows. The bridge itself is portable, the documented paths are not |
Client | Any MCP client. Verified with Claude Desktop |
ANSYS is not a pip package. ansys-acp-core starts the ACP gRPC server from a
local ANSYS installation; without one, nothing here runs.
The GUI bridge needs nothing installed: it runs inside ACP-Pre's own embedded Python (3.10 on tested-2026 R1) and uses only the standard library plus wx, which ACP-Pre already provides.
Paths
Nothing in this repository has a machine-specific path compiled into it. One environment variable carries the location:
Variable | Read by | Meaning |
|
| full path to |
|
| where to write probe output (default: next to |
|
| where to write probe output (default: temp dir) |
install_autoload.py bakes the resolved path into the model it installs into,
so the embedded copy needs no environment variable afterwards.
Repository layout
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 knowingSetup from zero
1. Install the Python side
git clone https://github.com/aalperakiss/acp-mcp-agent.git
cd acp-mcp-agent
pip install -r requirements.txtDelivered as a zip rather than a repository? Unpack it anywhere, cd into the
folder and run the pip install line - nothing here depends on git, and the
paths in this README are all relative to the folder root.
Use one interpreter and remember its absolute path — venv, Anaconda, whatever — but it must be the exact interpreter you put in the client config. A server that "cannot find mcp" is almost always a second Python.
2. Probe your ANSYS installation
python probes\00_probe_pyacp.pySession probe only: if launch_acp() fails here, nothing downstream matters.
The report lands in probes\pyacp_api_report.txt; docs\pyacp_api_report.txt
is the reference from the development machine, kept for comparison.
Then point it at a model:
python probes\00_probe_pyacp.py C:/path/to/your.acph5PyACP renamed several methods between releases, so acp_mcp.py resolves each
operation at call time from the CANDIDATES dict near the top of the file.
Compare the probe report against CANDIDATES, PLY_ANGLE_ATTRS and
PLY_COUNT_ATTRS, and add any missing real names — one place, one edit.
Need an .acph5? Open ACP-Pre and File → Save As. Having ACP-Pre open does not
help PyACP by itself.
3. Register the server with your client
Claude Desktop config lives at %APPDATA%\Claude\claude_desktop_config.json.
Paste the acp entry from mcp_config.example.json inside the existing
mcpServers object, alongside whatever is already there. Do not replace the
file. Watch the commas, and double every backslash (or use forward slashes).
Then quit the client completely — system tray included — and reopen. The tool list is fixed at startup; a running client will never see a new server.
Sanity check without a client:
npx @modelcontextprotocol/inspector python acp_mcp.py4. Verify the headless half
Call in order, confirming each returns JSON rather than Error:
acp_import_modelacp_get_layupacp_set_ply_angles— change one ply, then re-read the lay-upacp_check_layup_rules— violations on a real model are normalacp_update_and_exportacp_save_for_gui— open the result in ACP-Pre and eyeball it
That is already useful work: open a model, list the lay-up, change angles, check rules, export. Worth living with for a while before automating further.
5. Start the live GUI bridge
Open ACP-Pre with a model, open the Python console, and paste one line:
exec(open('<repo>/acp_gui_bridge.py').read())You should see:
[acp_gui_bridge] listening on 127.0.0.1:47800Now acp_gui_status from the agent returns pong: true and the name of the
open model. From there acp_gui_set_ply_angles redraws the viewport live.
The listener lives in the ACP-Pre process. Close ACP-Pre and it is gone — paste the line again, or make it persistent as below.
6. Persistent bridge (optional)
Embed the autoloader in the model as a Script object, so ACP-Pre starts the listener on its own. In the ACP-Pre console:
import os
os.environ['ACP_BRIDGE_PATH'] = '<repo>/acp_gui_bridge.py'
exec(open('<repo>/install_autoload.py').read())Then save the model. Three things make this safe rather than reckless:
The loader is embedded, the bridge is not. A Script object stores source as a string, so embedding the whole bridge would ship a listener to every machine that opens the file. The loader reads the bridge from disk instead; no file, no listener, one printed line.
It is idempotent.
alwaysmode fires on everymodel.update(), including the update the bridge itself triggers after a ply edit. The guard onsys._acp_bridgestops it rebinding port 47800 mid-request.It fetches
dbitself. Script objects run with empty globals — nodb, nomodel. The loader reaches the console namespace through__main__.
Scripts run on model update, not on file open, so install_autoload.py triggers
one update to bring the listener up immediately. To remove it later, set
model.scripts['acp_agent_bridge'].active = False and save.
Still keep a separate agent-enabled copy of shared models. A Script object is
invisible in a design review, and a colleague opening your .acph5 should not
inherit a socket listener by accident.
Tools
Headless (PyACP)
Tool | Does |
| launch a headless session and load a model |
| plies in stacking order: angle, layers, material |
| set fibre orientations, optional snap to manufacturable set |
| set layer counts; |
| symmetry, balance, ±45 outer, ≤4 consecutive, direction fractions |
| update, write analysis model and composite definitions |
| write an |
Design vector first, export once: the set_* tools do not update or export.
Live GUI (socket bridge)
Tool | Does |
| is the bridge reachable, which model is open |
| read the lay-up from the GUI's model |
| set angles, redraw immediately |
| set layer counts, redraw immediately |
| append new modeling plies, inheriting material and OSS |
| save the GUI's model |
| export analysis model / composite definitions from the GUI |
| arbitrary Python in the live session, |
Prefer the typed tools over acp_gui_exec for routine edits; the free-form tool
is for exploration and one-offs.
acp_gui_add_ply takes a list of angles and appends one ply per entry, in
stacking order. Material and oriented selection set are inherited from an
existing ply (the last one in the group by default, or copy_from), because
create_modeling_ply needs object references an agent cannot hold. A group
with no plies at all therefore cannot be seeded from here - create the first
ply in ACP-Pre.
Angles snap to 0, ±15, ±30, ±45, ±60, 90 by default. Turn snapping off
explicitly when you want intermediate orientations.
Troubleshooting
Symptom | Cause |
New tools missing after editing the config | Client not fully restarted. Tool list is fixed at startup |
| ACP-Pre closed, or the bridge was never loaded in this process |
Bridge call times out after 300 s | GUI busy — an open dialog blocks the main thread |
| ACP-Pre is running with no model loaded |
| ANSYS not found, or the wrong Python. Check the probe first |
Port 47800 in use | An orphaned listener. |
Known gaps
acp_check_layup_rulesflattens everything into one stack. Multi-region parts need per-OSS grouping before this is trustworthy on real geometry.Ply creation exists on the live GUI side only (
acp_gui_add_ply). The headlessacp_*tools still edit existing plies only, so a model driven through PyACP must be built with enough spare plies up front.Mass is not reported by the export tool; the attribute path varies too much between releases to guess. Add it once your probe report shows the real one.
Verified against one ANSYS release only. The
CANDIDATESmechanism exists because older and newer releases will differ.
Security note
The bridge listens on 127.0.0.1 only and has no authentication.
acp_gui_exec executes arbitrary Python inside ACP-Pre. Anything able to reach
that port on the machine has the same power. Do not bind it to 0.0.0.0, and do
not run it on a shared session.
Contributing
Issues and pull requests are welcome, particularly probe reports from ANSYS
releases other than 2026 R1 — that is the fastest way to fill in CANDIDATES.
Attach the generated probes/pyacp_api_report.txt and state the release.
Contributions are accepted under the Apache License 2.0 (see section 5 of the license). No CLA.
License
Apache License 2.0 — see LICENSE and NOTICE.
ANSYS, ACP, Composite PrepPost, Mechanical and Workbench are trademarks of ANSYS, Inc. This project is an independent integration and is not affiliated with, endorsed by, or supported by ANSYS, Inc. No ANSYS software or documentation is redistributed here; a licensed local ANSYS installation is required.
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