Windows-local MCP server for PLAXIS 2D Remote Scripting: geometry, staged construction, results.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Geometry, staged construction, meshing, calculation and results β exposed as tools, over a hardened Windows-local stdio server.
Quickstart Β· Tools Β· Clients Β· Security model Β· Architecture
mcp-name: io.github.yixuanzhong/plaxis-mcp
| One-shot machine setup | plaxis-mcp setup discovers the PLAXIS installation, writes both role profiles, and stores each role password in Windows Credential Manager β with hidden prompts, no password argument. |
| Shared profile store | Every client on the machine reads the same profiles. Claude Code, Codex, Cursor and VS Code all bind to one installation and one credential set. |
serve --role | No per-client config surgery. --role input / --role output resolves its own profile. |
| Mode-aware operations | generate_mesh, create_phase and calculate enter the PLAXIS mode they need, so a workflow never has to interleave set_mode calls. |
| Listed on the MCP Registry | Published as io.github.yixuanzhong/plaxis-mcp, installable with uvx. |
Client-neutral by design: Codex, Claude Code, Cursor, VS Code/Copilot and any other conforming local stdio MCP client connect to the same unprefixed server tools.
1 β Set up the machine, once.
Profiles land in %LOCALAPPDATA%\Caros\PLAXIS-MCP\profiles (override with --profile-dir).
Add --skip-credentials to generate profiles now and store passwords later with
plaxis-mcp.exe credentials set --profile <profile.toml>.
The directory name is historical β it is where the first supported installer wrote β and is kept because
credential_targetis derived from it.
2 β Run each role as its own process.
--config <profile.toml> names a profile explicitly and is equivalent. Either way serve
takes every endpoint setting from the profile and the password from Windows Credential
Manager, and it fails to start if any PLAXIS_* endpoint environment override is
present β so a client cannot silently redirect an endpoint or inject a password.
3 β Point a client at it. See Clients; the host never connects at startup,
so call the connect tool once PLAXIS is running.
| Distribution | Command | Assurances |
|---|---|---|
| Signed Windows package | plaxis-mcp.exe | Authenticode-signed, hash-manifested, installer-verified. The supported production deployment. |
| PyPI | uvx plaxis-mcp serve --role inputpy -3.13 -m pip install plaxis-mcp | Ordinary Python source distribution. No code signature, no artifact manifest. |
Both expose the same setup, serve, credentials and profiles commands and enforce the
same profile binding and environment-override rejection β so PyPI is not a weaker runtime
posture. It simply carries no supply-chain attestation of its own beyond PyPI's, and it is not
what an organization requiring signed binaries should deploy.
Do not install plxscripting into the host environment under either.
A clean CPython 3.13 environment can run the module directly with endpoint environment variables. This path carries the password in the environment and performs no installation binding.
For Output, set PLAXIS_ROLE=output and use the PLAXIS_OUTPUT_* variables. Role-specific
variables take precedence over the deprecated generic PLAXIS_HOST, PLAXIS_PORT and
PLAXIS_PASSWORD fallback. The server accepts stdio only β do not set a non-stdio
PLAXIS_MCP_TRANSPORT.
Each process has one immutable role. A client registers Input and Output as separate MCP servers when it needs both.
| Role | Endpoint | Tools |
|---|---|---|
| Both | β | connect Β· disconnect Β· connection_status Β· list_members Β· inspect Β· project_info Β· list_phases Β· list_materials |
| Input | 127.0.0.1:10000 | list_objects Β· model_state Β· set_property Β· call_method Β· new_project Β· open_project Β· close_project Β· recover_project Β· save_project Β· create_phase Β· set_current_phase Β· set_phase_property Β· activate Β· deactivate Β· calculate Β· view_results Β· set_mode Β· generate_mesh Β· create_point Β· create_line Β· create_polygon Β· create_borehole Β· create_soillayer Β· create_material Β· assign_material Β· create_structural_element |
| Output | 127.0.0.1:10001 | list_result_types Β· get_results Β· get_single_result |
34 Input tools Β· 11 Output tools.
connect() takes no endpoint or credential arguments. It uses only the pinned role
configuration, so an agent cannot redirect a stored password to an arbitrary host.plaxis://input/status and plaxis://output/status.get_results(phase, result_type_path, fem_type="node", offset=0, limit=200) paginates
losslessly. limit is 1β5,000; responses report count, offset, limit,
returned_count, has_more, next_offset and results.path β the exact string to pass back to any reference
parameter. list_objects(kind) lists a whole kind that way, with a geometry summary
(coordinates, or a parsed bounds for objects that report a bounding box).model_state() reports mesh status, the phase table and unassigned materials before a
calculate is attempted. It separates blocking (a fault in this model) from unknown (a
check that could not run here) and caveats (something PLAXIS does not expose at all β on
2D V22, whether the mesh still matches the geometry), so an empty blocking is never
mistaken for a clean bill of health.view_results(phase) on the Input server is what puts a calculated phase there.plaxis_message
(sanitised: no filesystem paths, no frames, capped with the truncation flagged out of band).
A failing calculate also carries a per-phase table in details.All shipped examples are secret-free and use two server entries, one per role. Replace the
command with wherever plaxis-mcp.exe lives, or with uvx plaxis-mcp for a PyPI install.
Nothing else needs editing β --role finds the shared profiles by itself.
| Client | Example | Credentials & approvals |
|---|---|---|
| Codex | codex-config.toml | env_vars forwards the locally stored password; default_tools_approval_mode = "writes". |
| Claude Code | claude-code-mcp.json | Expand only a user-level environment variable in .mcp.json; retain server trust and tool approval prompts. |
| Cursor | cursor-mcp.json | Role password in the user environment at launch; keep Auto-run off. |
| VS Code / Copilot | vscode-mcp.json | Use a password inputs entry β VS Code stores it securely for reuse. Keep Default Approvals, not Bypass or Autopilot. |
The generic mcp-client-config.json is a minimal
mcpServers example for clients using that conventional JSON shape.
Never add a PLAXIS password to version control, command-line arguments, logs, or a profile file.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/plaxis)<a href="https://allmcps.com/mcp/plaxis"><img src="https://allmcps.com/api/badge/plaxis?style=directory" alt="PLAXIS on AllMCPs" /></a>