loading…
Search for a command to run...
loading…
An MCP server that automates Aspen Custom Modeler (ACM) via COM, enabling steady-state and dynamic simulations and variable manipulation. It allows users to pro
An MCP server that automates Aspen Custom Modeler (ACM) via COM, enabling steady-state and dynamic simulations and variable manipulation. It allows users to programmatically manage ACM sessions and interact with .acmf files through standardized tools.
An MCP (Model Context Protocol) server that automates Aspen Custom Modeler (ACM) via COM. Designed for use with Claude Code to open .acmf files, run simulations, and read/write variable values programmatically.
comtypes (not win32com, which has known VARIANT issues with ACM)pip install "mcp[cli]>=1.0.0" "comtypes>=1.4.0"
Add this to your project's .mcp.json:
{
"mcpServers": {
"acm": {
"command": "python",
"args": ["<path-to>/acm-mcp/server.py"]
}
}
}
Restart Claude Code after first setup to pick up the server.
| Tool | Description |
|---|---|
open_acm |
Open an .acmf file and create a session |
connect_acm |
Connect to an already-running ACM instance |
close_acm |
Close a session and quit ACM |
list_acm_sessions |
List all active sessions |
| Tool | Description |
|---|---|
run_steady_state |
Run steady-state simulation |
run_dynamic |
Run dynamic simulation to a specified end time |
get_simulation_status |
Get current status, DOF, convergence info |
reset_simulation |
Reset to initial conditions |
| Tool | Description |
|---|---|
get_variable |
Get a variable by dot-notation path (e.g. B1.Tank.h) |
set_variable |
Set a variable's value |
get_variables_bulk |
Get multiple variables at once |
find_variables |
Find variables matching a wildcard pattern |
| Tool | Description |
|---|---|
create_task |
Create a task on the flowsheet |
activate_task |
Activate a task for dynamic simulation |
deactivate_task |
Deactivate a task |
1. open_acm("path/to/model.acmf")
2. run_steady_state("model")
3. get_variable("model", "B1.Tank.h") → "B1.Tank.h = 40.0 [cm] (Free)"
To observe transient dynamics after a step change:
run_steady_state at initial conditionsrun_dynamic to a small time (e.g. 0.001) — locks state variables at old SSset_variable to apply the step changerun_dynamic to successive times, reading variables at each pointImportant: Do NOT
set_variablebefore the firstrun_dynamic— ACM re-initializes state variables at the new conditions, producing an instant jump to new SS with no visible transient.
Detailed documentation is in docs/:
server.py # FastMCP entry point, 15 tool registrations
acm_manager.py # COM lifecycle: subprocess launch, GetActiveObject, sessions
tools/
session_tools.py # open, connect, close, list
simulation_tools.py # run steady/dynamic, status, reset
variable_tools.py # get, set, bulk get, find
task_tools.py # create, activate, deactivate
docs/ # Documentation and ACM Help reference
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"acm-mcp-server": {
"command": "npx",
"args": []
}
}
}