plaxis-mcp is a Model Context Protocol server for interacting with a running
PLAXIS Remote Scripting session.
It uses the PLAXIS Python scripting interface shape published in
cemsbv/plxscripting and exposes a
small set of generic MCP tools for connecting to PLAXIS, inspecting objects,
reading values, setting properties, and invoking remote methods.
- Connect to a running PLAXIS Remote Scripting server.
- Create, open, close, recover, and save PLAXIS projects.
- Summarize phases, materials, and common project metadata.
- Inspect global and nested PLAXIS objects through path-based access.
- Read dynamic property values in a JSON-friendly form.
- Set writable properties.
- Call remote methods with positional arguments.
- Expose connection state as both a resource and MCP tools.
- Python 3.10+
- A running PLAXIS instance with Remote Scripting enabled
- Access to the
plxscriptingpackage
You can provide plxscripting in either of these ways:
- Install the published package dependency from this project.
- Point
PLAXIS_SCRIPTING_PATHat the PLAXIS-installed scripting location, such as:
C:\ProgramData\Seequent\PLAXIS Python Distribution V2\python\Lib\site-packages
That path pattern comes from the upstream plxscripting README.
pip install -e .Or build a container image:
docker build -t plaxis-mcp .By default the server uses stdio transport:
python -m plaxis_mcp.serverWith Docker:
docker run -i --rm \
-e PLAXIS_HOST=host.docker.internal \
-e PLAXIS_PORT=10000 \
plaxis-mcpNote: the container only runs the MCP server. PLAXIS still needs to run on the Windows host with Remote Scripting enabled and reachable from the container.
Optional environment variables:
PLAXIS_HOSTdefault:127.0.0.1PLAXIS_PORTdefault:10000PLAXIS_PASSWORDdefault: emptyPLAXIS_TIMEOUTdefault:5.0PLAXIS_REQUEST_TIMEOUToptional per-request timeoutPLAXIS_SCRIPTING_PATHoptional extra import path for PLAXIS scripting filesPLAXIS_MCP_TRANSPORTdefault:stdio
connectdisconnectconnection_statusnew_projectopen_projectclose_projectrecover_projectsave_projectproject_infolist_phaseslist_materialslist_result_typesget_resultslist_membersinspectset_propertycall_method
Paths use dotted access with optional list indexes:
Phases[0]Soils[1].MaterialSoil_1.Material.Name
An empty path refers to the PLAXIS global object.
See examples/mcp-client-config.json for a copy-pasteable client config covering both direct Python and Docker usage.
{
"mcpServers": {
"plaxis-mcp": {
"command": "python",
"args": ["-m", "plaxis_mcp.server"],
"env": {
"PLAXIS_HOST": "127.0.0.1",
"PLAXIS_PORT": "10000",
"PLAXIS_PASSWORD": ""
}
}
}
}Run the unit tests:
python -m unittest discover -s testsRun a local smoke test:
python scripts/smoke_test.pyThe smoke test is diagnostic rather than strict: it reports whether the mcp
SDK and plxscripting are importable in the current environment, and it exits
successfully even when those runtime dependencies are missing.
For PLAXIS Output result extraction, connect this MCP to an Output scripting server and then use tools like:
list_result_types("ResultTypes")get_results(phase=0, result_type_path="ResultTypes.Soil.Utot", fem_type="node")
PLAXIS is a trademark of Seequent and related companies. This project is an independent integration and is not affiliated with, endorsed by, or sponsored by Seequent or Bentley Systems.