
OpenSTAAD MCP Server
io.github.BentleySystemsPublished by GitHub account BentleySystemsv1.3.0Updated Oct 24, 2026
MCP server for Bentley STAAD.Pro via the OpenSTAAD API
Overview
Local MCP server that lets an AI assistant read and modify Bentley STAAD.Pro structural models through the OpenSTAAD API.
- What you can do
- Discover and read API skills and usage guidance for the STAAD.Pro OpenSTAAD API
- List running STAAD.Pro instances with model paths and versions, and check connection, version and analysis status
- Run validated Python code against a connected STAAD.Pro model to define load cases, set properties and extract data
- Read CSV or XLSX input files into the sandbox and write results back to CSV or multi-sheet XLSX files
- When to use it
- Useful for structural engineers who want an assistant to automate repetitive STAAD.Pro work such as load case definition, property setting and bulk data extraction, including across several open models at once.
- Requirements
- Windows 11 or newer with STAAD.Pro 2025 or newer installed and running with a model open. Installed as an .mcpb bundle in Claude Desktop, or run locally with uv/uvx in stdio mode; HTTP mode listens on port 18120 by default and needs an Authorization Bearer token. No cloud account or API key.
Installation
In SourceWeft
- Open OpenSTAAD MCP Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
OpenSTAAD MCP Server
A Model Context Protocol (MCP) server for Bentley STAAD.Pro that enables AI agents like Claude Desktop, Gemini, or VSCode Copilot to interact with your STAAD.Pro models and perform various time-consuming tasks like load cases definition, data extraction, repetitive property setting and more.
This MCP server was introduced as part of Bentley's Infrastructure AI Co-Innovation Initiative to help our users and accounts discover opportunities and innovate faster, while connecting Bentley's unique engineering tool capabilities to their emerging agentic workflows.
Key Features
- Fast and flexible: Enjoy minimal latency, interact with every STAAD.Pro features covered by the OpenSTAAD API.
- AI-friendly: Provides documentation, guidance and feedback via dedicated tools to help your AI agent ramp up quickly on the STAAD.Pro API.
- Multi-instance support: Connects to multiple running STAAD.Pro instances simultaneously to parallelize tasks across models.
- Privacy-first: All processing happens locally on your machine. No data is sent to the cloud. No telemetry.
Prerequisites
- OS: Windows 11 or newer
- STAAD.Pro 2025 or newer installed and running
Quick Start with Claude Desktop (<2min)
- Download the latest
openstaad-mcp.mcpbfile from the GitHub Releases page. - Open Claude Desktop.
- Click the ☰ menu (top-left) → File → Settings → Extensions.
- Click Advanced → Install Extensions.
- Select the downloaded
.mcpbfile. - Click the ☰ menu (top-left) → File → Exit
- Restart Claude Desktop.
Claude Desktop will install the server automatically. Open a new conversation and ask Claude to interact with your STAAD.Pro model.
Tip: Make sure STAAD.Pro is running with a model open before you start chatting.
Other Clients & Configuration
TL;DR:
If not already installed, install uv with the command:
Configure your client to start the server in stdio mode with the command:
VS Code with GitHub Copilot
-
For stdio: Open the Command Palette → MCP: Add Server... → Command (stdio) and enter the following command:
-
For http: First, start the server in a terminal:
Look for the generated token and URL in the terminal output. It should look like this:
Then, in VS Code, open the Command Palette → MCP: Add Server... → HTTP URL and enter the URL shown in the terminal (e.g.
http://127.0.0.1:18120/mcp).18120is the default port, but yours may differ if you have multiple instances running or if you changed the default. Add the headerAuthorization: Bearer <token>with the token shown in the MCP server terminal.
GitHub Copilot CLI
Use the /mcp add command inside a Copilot CLI session to add the server. See the Copilot CLI documentation for more details.
-
For stdio transport, use the command:
-
For HTTP transport, first start the server in a terminal:
Look for the generated token and URL in the terminal output. It should look like this:
Then add the server in Copilot CLI using the URL shown in the terminal (e.g.
http://127.0.0.1:18120/mcp).18120is the default port, but yours may differ if you have multiple instances running or if you changed the default. Add the headerAuthorization: Bearer <token>with the token shown in the MCP server terminal.
Claude Desktop (manual configuration)
If you prefer manual setup over the .mcpb bundle, edit the Claude Desktop
config file directly:
- Windows (MSIX):
%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\claude_desktop_config.json - Windows (classic):
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Claude Code (CLI)
-
For stdio transport, use the command:
-
For HTTP transport, first start the server in a terminal:
Look for the generated token and URL in the terminal output. It should look like this:
Then add the server in Claude Code with the command:
18120is the default port, but yours may differ if you have multiple instances running or if you changed the default.
Gemini CLI
-
For stdio transport, use the command:
-
For HTTP transport, first start the server in a terminal:
Look for the generated token and URL in the terminal output. It should look like this:
Then add the server in Gemini CLI with the command:
18120is the default port, but yours may differ if you have multiple instances running or if you changed the default.
Transport Modes
The server supports two transport modes:
CLI Options
Available MCP Tools
File I/O
The execute_code tool supports optional server-side file I/O for bulk data workflows.
Instead of passing large datasets through the agent's context window, the server reads/writes
CSV and XLSX files directly and injects the data into the sandbox as the input_data variable.
input_data has a stable, extension-specific shape:
- CSV: a list of row lists. If a header is detected, it is
input_data[0]and data rows start atinput_data[1:]. - XLSX: a dict:
{sheet_name: {"columns": list, "rows": list_of_rows}}.
Path containment: File paths must resolve inside a configured allowed boundary before any read/write occurs.
The server supports both client-configured MCP roots and server-configured allowed directories (via --allowed-dirs or user_config.allowed_directories in the manifest).
The server validates paths against these boundaries before any file access.
Limits: Max file size 50 MB, max 100K rows, max 500 columns, max 50 input sheets.
Security Notes
- Bearer token authentication. Pass
--token MY_SECRET_TOKENwhen running in HTTP mode and includeAuthorization: Bearer <token>in client requests. - DNS rebinding protection. Starlette Middlewares validate
Host,Sec-Fetch-SiteandOriginheaders. - Code sandbox. The
execute_codetool validates all Python code via AST analysis before execution. Imports, file access, and dangerous builtins are blocked.
Privacy Policy
Please find the Bentley Systems privacy policy here.
Contributing
See CONTRIBUTING.md for guidelines on setting up your development environment, branch naming, running tests, and submitting pull requests.
Source: README.md at commit 9910fef
Tools
0Version history
2- v1.3.0LatestOct 1, 2026
- v1.2.0Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts