MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

MCP server by RonaldS-8

Created 5/3/2026
Updated about 8 hours ago
Repository documentation and setup instructions

Abaqus MCP Plugin v4.0

  • Thisproject is based on abaqus-mcp modified
  • Follwing MIT License realease
  • Main changes is fit abaqus 2022 especially A plugin that enables communication between Abaqus/CAE and external AI assistants (or any MCP client) via file-based IPC.

What's New in v4.0

  • Job management — list and submit Abaqus jobs remotely
  • ODB inspection — open ODB files read-only and query steps, frames, instances
  • Viewport capture — screenshot any Abaqus viewport as base64 image
  • Richer model info — now includes loads, BCs, interactions, and assembly instances
  • MCP resourceabaqus://status resource for real-time plugin status
  • Stale command cleanup — automatically removes commands older than 2 minutes
  • Logging — all operations logged to ~/.abaqus-mcp/mcp.log
  • Version tracking — status.json and ping responses include plugin version
  • GUI Status button — check plugin state from the Plug-ins menu

Architecture

┌─────────────┐  MCP protocol   ┌───────────────┐  file IPC   ┌──────────────┐
│  MCP Client  │ ──────────────> │  mcp_server.py │ ─────────> │ Abaqus/CAE   │
│  (Cursor AI) │ <────────────── │  (FastMCP)     │ <───────── │ (plugin.py)  │
└─────────────┘                  └───────────────┘             └──────────────┘
                                        │
                                   commands/*.json ──>  (plugin reads & deletes)
                                   results/*.json  <──  (plugin writes)
                                   status.json     <──  (heartbeat every 2s)

Features

  • Execute Python scripts in Abaqus remotely
  • Query model information (parts, materials, steps, loads, BCs, interactions)
  • List and submit analysis jobs
  • Inspect ODB result files
  • Capture viewport screenshots
  • Simple file-based communication (no sockets required)
  • Non-blocking background mode (GUI stays responsive)
  • GUI menu entries for start / stop / status control
  • Works with any MCP-compatible client (Cursor, Claude Desktop, etc.)

Installation

1. Clone the repository

git clone https://github.com/Cai-aa/abaqus-mcp.git ~/.abaqus-mcp

2. Install Python dependencies (for the MCP server)

pip install mcp

3. (Optional) Auto-load plugin on Abaqus startup

# Windows
copy "$env:USERPROFILE\.abaqus-mcp\abaqus_v6.env.example" "$env:USERPROFILE\abaqus_v6.env"
# Linux/Mac
cp ~/.abaqus-mcp/abaqus_v6.env.example ~/abaqus_v6.env

4. (Optional) Install GUI plugin menu

# Windows
Copy-Item -Recurse "$env:USERPROFILE\.abaqus-mcp\abaqus_plugins\mcp_control" "$env:USERPROFILE\abaqus_plugins\mcp_control"
# Linux/Mac
cp -r ~/.abaqus-mcp/abaqus_plugins/mcp_control ~/abaqus_plugins/mcp_control

5. Configure your MCP client

Add to your Cursor / Claude Desktop MCP settings (.mcp.json):

{
  "mcpServers": {
    "abaqus-mcp-server": {
      "command": "python",
      "args": ["C:/Users/YourUsername/.abaqus-mcp/mcp_server.py"]
    }
  }
}

Usage

Start MCP (in Abaqus)

Experimental — non-blocking background thread (may be unstable on some Abaqus builds):

mcp_start()  # GUI remains responsive if background worker is supported

Menu: Plug-insMCPStart MCP (Background)

Alternative — cooperative loop (mostly responsive):

mcp_coop_loop()

Menu: Plug-insMCPStart MCP (Cooperative)

Alternative — blocking mode:

mcp_loop()  # blocks console

Menu: Plug-insMCPStart MCP (Blocking)

| Mode | GUI Responsive | Stop Method | | ------------------------------- | ------------------ | --------------------------- | | Background (mcp_start()) | Yes (if supported) | mcp_stop() or menu | | Cooperative (mcp_coop_loop()) | Mostly yes | mcp_stop() or stop.flag | | Blocking (mcp_loop()) | No | stop.flag / interrupt |

For maximum reliability, use mcp_loop() in production sessions.

Check Status

mcp_status()  # prints status to console

Menu: Plug-insMCPMCP Status

Stop MCP

Option 1 — GUI menu: Plug-insMCPStop MCP

Option 2 — Abaqus console:

mcp_stop()

Option 3 — PowerShell:

echo $null > "$env:USERPROFILE\.abaqus-mcp\stop.flag"

Option 4 — Run stop_mcp.py from any Python environment.

MCP Tools

These tools are exposed to MCP clients via mcp_server.py:

| Tool | Description | | ------------------------- | ------------------------------------------------------------- | | check_abaqus_connection | Verify Abaqus is running and plugin is responding | | execute_script | Execute a Python script inside Abaqus/CAE | | get_model_info | Get model details (parts, materials, steps, loads, BCs, etc.) | | list_jobs | List all analysis jobs in the session | | submit_job | Submit a job by name and wait for completion | | get_odb_info | Open an ODB file read-only and return metadata | | get_viewport_image | Capture a viewport screenshot as base64 | | ping | Test connection (returns version info) |

MCP Resources

| URI | Description | | ----------------- | ---------------------------------------------------------- | | abaqus://status | Real-time plugin status (running/stopped, version, uptime) |

File-Based IPC Protocol

Write a JSON command file into ~/.abaqus-mcp/commands/:

import json, os, time

command = {
    'id': 'my_command',
    'type': 'execute_script',
    'script': 'print("Hello from Abaqus!")',
    'timestamp': time.time(),
}

cmd_path = os.path.expanduser('~/.abaqus-mcp/commands/cmd_my_command.json')
with open(cmd_path, 'w') as f:
    json.dump(command, f)

Result will appear at ~/.abaqus-mcp/results/my_command.json.

Command Types

| Type | Parameters | Description | | -------------------- | ------------------------- | ------------------------------- | | execute_script | script (str) | Execute Python script in Abaqus | | get_model_info | — | Get current model information | | list_jobs | — | List all defined jobs | | submit_job | job_name (str) | Submit and wait for a job | | get_odb_info | odb_path (str) | Read ODB metadata | | get_viewport_image | viewport_name, format | Capture viewport screenshot | | ping | — | Test connection | | stop | — | Request loop stop |

Directory Structure

~/.abaqus-mcp/
├── abaqus_mcp_plugin.py      # Abaqus-side plugin (runs inside CAE)
├── mcp_server.py              # MCP server (runs externally)
├── stop_mcp.py                # Helper to send stop signal
├── abaqus_v6.env.example      # Auto-load config template
├── .mcp.json                  # MCP client config example
├── abaqus_plugins/
│   └── mcp_control/
│       ├── __init__.py
│       └── mcp_control_plugin.py
├── commands/                  # Incoming command files
├── results/                   # Outgoing result files
├── scripts/                   # Temporary script files
├── screenshots/               # Temporary viewport captures
├── status.json                # Heartbeat status (updated every 2s)
├── mcp.log                    # Operation log
└── stop.flag                  # Stop signal file

Troubleshooting

  • Plugin says "running" but no commands are consumed:
    1. Run mcp_stop() then mcp_start() again
    2. Check ~/.abaqus-mcp/status.json — timestamp should update every ~2s
    3. Check ~/.abaqus-mcp/mcp.log for errors
  • Abaqus uses a different home directory:
    import os; os.environ['ABAQUS_MCP_HOME'] = r'C:\Users\YourName\.abaqus-mcp'
    
    Set this before loading the plugin.
  • Commands timing out:
    • Stale commands (>2 min) are auto-cleaned
    • Ensure the plugin is in running state via mcp_status()
  • GUI plugin not showing:
    • Verify ~/abaqus_plugins/mcp_control/ exists and contains mcp_control_plugin.py
    • Restart Abaqus/CAE

License

MIT License

Quick Setup
Installation guide for this server

Install Package (if required)

uvx abaqus2022_mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "ronalds-8-abaqus2022-mcp": { "command": "uvx", "args": [ "abaqus2022_mcp" ] } } }