Skip to main content

dlubal-mcp

Model Context Protocol (MCP) server that enables AI tools and large language models (LLMs) to interact with running Dlubal structural analysis applications.

Built on top of the dlubal.api gRPC client library, dlubal-mcp exposes tools that AI assistants can call directly to do modelling, analysis or reading results through the API scripts.

Supported Applications

Application Script Tool
RFEM 6 — Finite Element Analysis run_rfem_script
RSTAB 9 — Frame and Truss Analysis run_rstab_script
RSECTION 1 — Cross-Section Analysis run_rsection_script

How It Works

Choosing a transport

dlubal-mcp speaks two MCP transports. Pick by how the client reaches it.

stdio streamable-http (default)
How it starts your client launches it as a subprocess you start it; it listens on a port
Who can reach it only the client that launched it anything on the machine
Access token not needed required (DLUBAL_MCP_ALLOWED_API_KEYS)
Script tools enabled by default withheld unless the operator enables them
Typical user an engineer in VS Code, Claude Code, Cursor Dlubal CALC via the Connector; multi-client setups

Use stdio unless something prevents it. It is what the MCP specification asks clients to prefer, and it needs no port and no token: the client owns the process, so there is no anonymous caller to authenticate. Browsers cannot launch a subprocess, which is why Dlubal CALC uses the HTTP door instead.

{
  "mcpServers": {
    "dlubal-mcp": {
      "command": "C:\\Program Files\\Dlubal\\RFEM 6.15\\bin\\python.exe",
      "args": ["-m", "dlubal_mcp", "--transport", "stdio"]
    }
  }
}

Running the Dlubal-bundled python.exe lets the server find the API key the Dlubal application already wrote, so no key configuration is needed. Set DLUBAL_MCP_ALLOW_SCRIPTS=false to withhold the script tools on stdio as well.

Running a stdio server next to the Connector. Both use the same execution journal in %LOCALAPPDATA%\DlubalMCP, so while one of them runs a script or a model operation, the other refuses new ones with busy. RFEM also accepts only one API client at a time, so read tools on the second server report RFEM as unavailable until the first finishes. Either retry, or keep one server in use. The exclusion holds only while both use the default journal: do not point RFEM_EXECUTION_STATE_FILE (or the RSTAB/RSECTION equivalents) at a different file on a machine that runs both.

HTTP access protection

Starting with 1.0.13, HTTP access always requires a separate bearer token and a numeric loopback bind address. The matching Dlubal Connector provisions this automatically. Standalone clients must configure DLUBAL_MCP_ALLOWED_API_KEYS and send Authorization: Bearer <access-token>; the Dlubal application API key is a separate credential. Anonymous operation and query-string tokens are not supported. See HTTP authentication and upgrade notes.

dlubal-mcp acts as a bridge between an AI assistant and a running Dlubal application. The application must already be open and its API service active — the MCP server connects to the live session, it does not launch applications itself.

  1. Start RFEM 6, RSTAB 9, or RSECTION 1 on your machine
  2. Launch the MCP server with proper settings (urls, API ports)
  3. An AI tool calls e.g. run_rfem_script with Python code
  4. The code executes against the live application and returns the output

LLM Responsibility for API Scripts

The run_rfem_script, run_rstab_script, and run_rsection_script tools execute arbitrary Python code against the live application. The LLM is responsible for composing correct and valid API scripts — the MCP server simply runs whatever code it receives and returns the output or any errors.

To write correct scripts, the LLM should consult the Dlubal API Documentation, which covers all available objects, methods, and usage patterns for the gRPC-based API.

Requirements

  • Python 3.11 or higher
  • A running Dlubal application (RFEM 6, RSTAB 9, or RSECTION 1)
  • Active API Service subscription — see dlubal.api for details

Installation

pip install "dlubal-mcp[rfem]"      # RFEM 6
pip install "dlubal-mcp[rstab]"     # RSTAB 9
pip install "dlubal-mcp[rsection]"  # RSECTION 1
pip install "dlubal-mcp[all]"       # All products

Available MCP Tools

Tool Description
run_rfem_script Execute Python code against a running RFEM 6 instance
read_rfem_results Read an allowlisted, bounded RFEM result summary without executing caller code or changing the model
run_rstab_script Execute Python code against a running RSTAB 9 instance
run_rsection_script Execute Python code against a running RSECTION 1 instance
health_check Server status: installed products, running state, available tools

Typed RFEM result access

read_rfem_results is the preferred path for read-only agents. It accepts only five fixed result types (calculation_status, member internal forces, node deformations, stability critical load factors, and steel member design ratios). Result queries require bounded integer object numbers (except stability) and validated loading identifiers. Both filters are verified against every returned row. It never calculates, writes, opens, saves or switches a model.

The response is bounded to at most 100 rows and contains only allowlisted numeric fields, units, the active model GUID, the RFEM version, a complete model-input state_fingerprint and a canonical result_hash. The fingerprint is produced from RFEM's Python-gRPC model export before and after the result query. The export is canonicalised and hashed locally, then deleted; its model contents never leave the machine. If the model changes during the read or RFEM cannot produce the complete snapshot, the tool returns unavailable fail-closed. Model paths, object names, arbitrary RFEM warning text and exception messages are not returned. no_results and unavailable are explicit states, not successful checks.

Release files for dlubal-mcp 1.0.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dlubal-mcp 1.0.17
File Size Uploaded
dlubal_mcp-1.0.17.tar.gz 79.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dlubal-mcp 1.0.17
File Interpreter ABI Platform
dlubal_mcp-1.0.17-py3-none-any.whl Python 3 none any Details

Total release size: 144.4 kB

Release files / dlubal_mcp-1.0.17.tar.gz

Download URL dlubal_mcp-1.0.17.tar.gz
Size 79.4 kB
Tags Source
SHA-256 checksum
How to use checksums
255759790074daac37731bfa8c6bd78044a167a2d634e56d2b3f918ec5872a68
BLAKE2b-256 checksum
How to use checksums
c5f22481da11a1858d1779e35fc677b92e77831408e65d100b78ab93489b3973
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / dlubal_mcp-1.0.17-py3-none-any.whl

Download URL dlubal_mcp-1.0.17-py3-none-any.whl
Size 65.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff97fa925b876301a7c5fd8ffb785ff4a1ade6d8896f4f257f633d7c8ca5acee
BLAKE2b-256 checksum
How to use checksums
a7bd1a1970c827322df0bc59bcf58a5063f2efeb790d27620e44b0353c6e07b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

1.0.17 This release

2 release files

1.0.16

2 release files

1.0.15

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page