Abaqus Server
БесплатноНе проверенEnables Claude Code to interact with Abaqus FEM software for model generation, job submission, log monitoring, and result extraction from ODB files.
Описание
Enables Claude Code to interact with Abaqus FEM software for model generation, job submission, log monitoring, and result extraction from ODB files.
README
A local stdio MCP server that enables Claude Code to interact with Abaqus FEM software — model generation, job submission, log monitoring, and result extraction from ODB files.
🎓 Ideal for simulation automation, parametric studies, post-processing pipelines, and teaching FEM scripting through natural language.
✨ Features
- 11 MCP tools covering the full Abaqus workflow — from script generation to result extraction
- Workspace sandboxing — all file operations are scoped to a configurable directory
- ODB extraction via generated Abaqus Python scripts (no direct binary parsing — uses
odbAccess) - Security-first — no arbitrary shell execution, path traversal blocked, confirmation required for destructive operations
- Windows support — correctly handles Abaqus
.batfile execution viacmd.exe /c call - Output truncation — prevents token blowout in LLM context windows
- 85 tests across unit, mocked integration, and MCP protocol layers
📋 Requirements
- Python 3.10+
- Abaqus (tested with Abaqus 2025; the
abaquscommand must be available) - The
mcpPython SDK (≥1.28.0) is installed automatically as a dependency
🚀 Quick Start
# Clone the repository
git clone https://github.com/YOUR_USERNAME/abaqus-mcp-server.git
cd abaqus-mcp-server
# Install in editable mode with dev dependencies
pip install -e ".[dev]"
# Copy and edit environment config (optional)
copy .env.example .env
# Run the server
abaqus-mcp serve
🔌 Claude Desktop Integration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"abaqus": {
"type": "stdio",
"command": "python",
"args": ["-m", "abaqus_mcp_server.cli", "serve"],
"env": {
"ABAQUS_COMMAND": "abaqus",
"ABAQUS_MCP_WORKSPACE_DIR": "./abaqus_work"
},
"timeout": 600000
}
}
}
Or with Claude Code, add to your project's .mcp.json:
{
"mcpServers": {
"abaqus": {
"type": "stdio",
"command": "python",
"args": ["-m", "abaqus_mcp_server.cli", "serve"],
"env": {
"ABAQUS_COMMAND": "D:\\SIMULIA\\Commands\\abaqus.bat",
"ABAQUS_MCP_WORKSPACE_DIR": "${CLAUDE_PROJECT_DIR:-.}/abaqus_work"
}
}
}
}
⚙️ Configuration
All settings via environment variables (prefix ABAQUS_MCP_):
| Variable | Default | Description |
|---|---|---|
ABAQUS_COMMAND |
auto-detect | Path to Abaqus launcher (abaqus.bat) |
ABAQUS_MCP_WORKSPACE_DIR |
./abaqus_work |
Workspace root directory |
ABAQUS_MCP_MAX_CPUS |
4 |
Maximum CPUs per job |
ABAQUS_MCP_SCRIPT_TIMEOUT |
300 |
Script execution timeout (seconds) |
ABAQUS_MCP_JOB_TIMEOUT |
3600 |
Job execution timeout (seconds) |
ABAQUS_MCP_MAX_OUTPUT_CHARS |
20000 |
Max chars in a single tool output |
ABAQUS_MCP_ALLOW_OVERWRITE |
false |
Allow overwriting existing files |
ABAQUS_MCP_LOG_LEVEL |
WARNING |
Server-side logging level |
🛠️ Tools
| Tool | Description | Confirm? |
|---|---|---|
check_environment |
Verify Abaqus installation, Python paths, and workspace status | |
validate_workspace |
Create or validate workspace directory structure | |
generate_script |
Generate Abaqus Python modeling scripts (cantilever, static, modal, contact) | |
run_script |
Execute Python scripts via abaqus python with timeout control |
|
submit_job |
Submit an .inp file for FEM analysis |
✓ |
job_status |
Check job progress from .sta and .lck files |
|
read_job_logs |
Read .sta/.msg/.dat/.log with automatic error/warning extraction |
|
extract_odb_summary |
Extract ODB metadata — steps, frames, instances, field outputs | |
extract_field_output |
Extract field output (S, U, E, PEEQ, RF, etc.) as CSV with statistics | |
extract_history_output |
Extract history output (ALLIE, ALLSE, RF, etc.) as time-value CSV | |
clean_job |
Remove intermediate files, preserving .odb/.inp/.cae |
✓ |
🏗️ Architecture
src/abaqus_mcp_server/
├── app.py # FastMCP singleton — all tools register here
├── cli.py # argparse entry point
├── config.py # pydantic Settings (ABAQUS_MCP_ prefix)
├── security.py # Workspace sandboxing & path validation
├── abaqus_cli.py # Abaqus subprocess abstraction (all calls go here)
├── log_parser.py # .sta/.msg/.dat parsers
├── odb_script_templates.py # Generate Abaqus Python scripts for ODB extraction
├── constants.py # Status strings, file extensions, error keywords
└── tools/ # 11 MCP tool implementations (one per file)
Key Design Decisions
- FastMCP — high-level MCP SDK with auto-generated JSON schemas from type annotations
- ODB extraction via generated scripts — the server generates temporary Python scripts that run under
abaqus python(which hasodbAccess); system Python cannot importodbAccess - Windows subprocess — Abaqus
.batfiles requirecmd.exe /c "call abaqus.bat ..."(noshell=True) - Workspace sandboxing —
security.validate_path()enforces all file ops stay within the workspace - Confirmation gates — destructive tools require
confirmed=Trueas an explicit user gate
🔒 Security
- All file paths are validated against the workspace directory
- Path traversal (
../../) is blocked - Dangerous shell characters (
;,|,&,`,$, etc.) are rejected submit_job,run_script, andclean_jobrequire explicitconfirmed=True- No arbitrary shell execution — all Abaqus calls use explicit argument lists
- Output is truncated to
ABAQUS_MCP_MAX_OUTPUT_CHARSto prevent context overflow
🧪 Testing
# Run all tests
python -m pytest tests/ -v
# Run a specific area
python -m pytest tests/test_security.py -v
# Run with coverage
python -m pytest tests/ --cov=abaqus_mcp_server --cov-report=html
Test Layers
| Layer | What | Requires Abaqus |
|---|---|---|
| Unit | security, config, log parsers | No |
| Mocked integration | AbaqusCLI, ODB extraction | No |
| MCP protocol | Server subprocess, tool listing | No |
| Live integration | Real Abaqus calls | Yes |
📁 Example: Cantilever Beam
examples/simple_beam/ contains a complete cantilever beam analysis:
beam.inp— linear elastic beam with C3D8 elements- Ask Claude Code: "Submit the beam.inp and extract the maximum Mises stress"
The server will: validate the workspace → submit the job → check status → extract ODB summary → extract field output.
🐛 Troubleshooting
Abaqus not found
Set ABAQUS_COMMAND to the full path:
set ABAQUS_COMMAND=D:\SIMULIA\Commands\abaqus.bat
ODB extraction fails
- The
.odbfile may be locked (job still running) — check withjob_statusfirst - Abaqus Python must be able to read the workspace directory
- The generated temp scripts run under
abaqus python, not system Python
Path traversal errors
All file paths must be relative to ABAQUS_MCP_WORKSPACE_DIR.
🤝 Contributing
Contributions are welcome! See CONTRIBUTING.md for development setup, project structure, and guidelines.
📄 License
MIT — see LICENSE for details.
Установка Abaqus Server
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/MOBAI547800/abaqus-mcp-serverFAQ
Abaqus Server MCP бесплатный?
Да, Abaqus Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Abaqus Server?
Нет, Abaqus Server работает без API-ключей и переменных окружения.
Abaqus Server — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Abaqus Server в Claude Desktop, Claude Code или Cursor?
Открой Abaqus Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Abaqus Server with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
