anylogicPLE-mcp
Generates AnyLogic simulation models from natural-language prompts in Claude Code, allowing users to describe queueing systems, factories, or ERs and obtain runnable .alp files.
README
anylogicPLE-mcp
MCP server that generates AnyLogic simulation models from natural-language prompts in Claude Code.
Describe a queueing system, factory, or ER in plain language → get a .alp file that opens and runs in AnyLogic PLE (the free edition). Models are validated automatically against PLE limits.
The goal of this project is to shorten the AnyLogic learning curve by giving you a working simulation model as a starting point. Run the simulation, observe the results, study how the model is built, and use it as a reference when building your next model from scratch.
Unlike most tools that focus on a single modeling approach, AnyLogic supports three paradigms in one environment — discrete event, agent-based, and system dynamics — covering virtually any industrial engineering problem you can think of, from factory floors to hospital ERs to supply chains. On top of that, the free PLE edition makes it accessible to anyone learning simulation, and the block-based Process Modeling Library maps naturally to code generation.
Disclaimer: This project is not affiliated with or endorsed by AnyLogic. AnyLogic is a trademark of The AnyLogic Company. Generated models are subject to AnyLogic PLE's terms of use.
Who is this for
If you are an industrial engineer, this tool lets you prototype a queuing or process model in natural language and have something running within minutes — skipping the initial friction of block wiring and XML quirks, and getting straight to the questions that matter: utilization rates, bottlenecks, throughput.
The current version handles discrete event / queueing models well. Resource-constrained models (shift schedules, breakdowns, Seize/Release blocks) are not yet supported — that is where contributions are most welcome. Whether you want to add new block types, new templates, or improve the XML generation, your input is genuinely valuable and very much encouraged.
What it looks like
You type this in Claude Code:
Create a 3-stage CNC job shop model "CNCJobShop":
- Jobs arrive every 15 minutes (exponential)
- Roughing: 2 machines, triangular(8,12,18) min
- Semi-finish: 1 machine, triangular(8,12,16) min
- Finishing: 1 machine, triangular(5,8,12) min
Give me the .alp file.
Claude calls the MCP tools, builds the .alp XML, saves the file to your output folder, and tells you which stage is the bottleneck. Open the file in AnyLogic PLE and click Run.
Requirements
- Python 3.10+
- Claude Code (VS Code extension or CLI)
- AnyLogic PLE 8.9.8 — free, to open and run generated models
Install
1. Install the package
pip install -e .
Find the entry point path — you need it in the next step:
where anylogic-mcp # Windows
which anylogic-mcp # macOS / Linux
2. Create .mcp.json in your working directory
Create a file named .mcp.json in the folder you open in VS Code:
{
"mcpServers": {
"anylogic": {
"command": "/path/to/anylogic-mcp",
"args": [],
"env": {
"ALP_OUTPUT_DIR": "/path/where/alp/files/are/saved"
}
}
}
}
Windows: use double backslashes in JSON paths:
"C:\\Users\\YourName\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\anylogic-mcp.exe"See WINDOWS_SETUP.md for a full step-by-step walkthrough.
3. Reload VS Code
Ctrl+Shift+P → Developer: Reload Window → click Allow when prompted to approve the anylogic server.
Verify the connection:
What are the AnyLogic PLE limits?
MCP tools
| Tool | What it does |
|---|---|
anylogic_create_model_ple |
Build and validate a model; returns a model ID |
anylogic_download_for_ple |
Write the .alp file to ALP_OUTPUT_DIR |
anylogic_validate_ple |
Re-check a stored model against PLE limits |
anylogic_get_ple_limits |
Return all PLE restrictions |
anylogic_upload_to_cloud |
Upload to AnyLogic Cloud (requires API key) |
Built-in templates
| Template | Entity | Default config | Traffic intensity ρ |
|---|---|---|---|
warehouse |
Truck | 3 loading docks | 0.75 |
simple_queue |
Customer | 1 server | 0.60 |
factory |
Part | 2 machines in series (A→B) | 0.83 |
hospital |
Patient | triage + 3-doctor treatment | 0.88 |
Custom models (any entity name, any block chain, any parameters) are fully supported. See EXAMPLES.md for prompts covering manufacturing, service systems, and healthcare.
Supported blocks
| Block | params keys |
Notes |
|---|---|---|
Source |
interarrivalTime |
Always use exponential(1.0/mean) — AnyLogic treats this as a rate |
Delay |
capacity (string), delayTime |
Time unit: minutes; capacity = number of parallel servers |
Queue |
— | Auto-inserted before every Delay; only specify explicitly if needed elsewhere |
Sink |
— |
Critical gotcha:
exponential(10)means 10 arrivals per minute, not one per 10 minutes. A warehouse with trucks arriving every 20 minutes needsexponential(1.0/20.0).
PLE limits (auto-enforced)
| Limit | Value |
|---|---|
| Agent types | 10 |
| Blocks per agent | 200 |
| Dynamic agents | 50,000 |
| Simulation time | 5 h (unlimited when using Process Modeling Library — all generated models use it) |
Opening generated models
- Launch AnyLogic PLE 8.9.8
- File → Open → select the
.alpfile fromALP_OUTPUT_DIR - Click the green Run button
How the XML generation works
model_builder.py produces AnyLogic 8.9.8-compatible .alp XML. The block ItemNames
(e.g. Source = 1412336242928, Queue = 1412336242932) were extracted from a
ground-truth AnyLogic file — they must be exact or the model tree crashes on load.
Key invariants baked into the generator:
- A
Queueis auto-inserted before everyDelayto buffer when server capacity is full - Queue capacity is set to 100,000 (default in AnyLogic is 100, which causes OOM on long runs)
interarrivalTimeis always emitted in rate form:exponential(1.0/mean)notexponential(mean)- Parameter name is
delayTime(notdelay); time unit isMINUTE TimePlotchart lives insideMain/Presentation/Level/Presentation, not inSimulationExperiment
Project structure
├── src/anylogic_mcp/
│ ├── server.py # MCP server and tool handlers
│ ├── model_builder.py # .alp XML generator (core logic)
│ ├── ple_validator.py # PLE limit checker
│ └── cloud_client.py # AnyLogic Cloud upload (optional)
├── tests/
│ ├── test_model_builder.py # XML structure, parameters, chart correctness
│ └── test_ple_validator.py # PLE limit enforcement
└── pyproject.toml
Run the tests:
# Windows
set PYTHONPATH=src && python -m pytest tests/ -v
# macOS / Linux
PYTHONPATH=src pytest tests/ -v
Contributing
Pull requests are welcome. The most useful additions:
- New block types —
Service,Seize/Release/ResourcePoolfor resource-constrained models. The ItemNames are already in_ITEM_NAMESinmodel_builder.py; what's needed is the parameter XML and connector wiring. - New templates — supply chain, logistics, pedestrian flow.
- Fluid Library support — bulk/continuous flow (tanks, pipes) requires a different XML structure; the block ItemNames would need to be extracted from a ground-truth Fluid model.
- Test coverage — every new block type needs XML invariant tests matching the pattern
in
test_model_builder.py.
Optional: AnyLogic Cloud upload
Set ANYLOGIC_API_KEY in the env block of .mcp.json:
"env": {
"ALP_OUTPUT_DIR": "...",
"ANYLOGIC_API_KEY": "your_key_here"
}
Get a key at: https://cloud.anylogic.com/settings/api-keys
License
MIT — see LICENSE.
Disclaimer
This project is not affiliated with or endorsed by AnyLogic. AnyLogic is a trademark of The AnyLogic Company. Generated models are subject to AnyLogic PLE's terms of use.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。