关于 PLAXIS
PLAXIS-MCP 是 Windows 本地 MCP 服务,通过 Remote Scripting 操作 PLAXIS 2D,面向岩土建模工作流。Input 和 Output 角色分别提供建模、计算与结果工具,并将配置绑定到本机安装。
主要功能
- 01创建和编辑几何图形与材料
- 02管理阶段和分步施工
- 03生成网格并运行计算
- 04检查模型状态和项目信息
- 05分页获取计算结果
适用场景
- 01通过 MCP 客户端构建或修改 PLAXIS 2D 模型
- 02设置施工阶段并计算项目
- 03在 PLAXIS Output 中检查阶段结果
MCP 相关
通过 stdio 提供独立的 Input 和 Output MCP 服务进程。客户端可用 Input 工具建模和计算,并通过 Output 获取结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
PLAXIS · MCP
从任意 MCP 客户端驱动 PLAXIS 2D。
几何、分阶段施工、网格划分、计算和结果 — 通过工具开放,并由经过加固的 Windows 本地 stdio 服务提供。
mcp-name: io.github.yixuanzhong/plaxis-mcp
▸ v0.3 — 一次设置,随处启动
| 一次性机器设置 | plaxis-mcp setup 会发现 PLAXIS 安装位置,写入两个角色配置文件,并将每个角色的密码存储在 Windows Credential Manager 中——密码提示会隐藏,且无需提供密码参数。 |
| 共享配置文件存储 | 这台机器上的所有客户端都会读取同一组配置文件。Claude Code、Codex、Cursor 和 VS Code 都连接到同一个安装实例和同一组凭据。 |
serve --role | 无需为每个客户端单独修改配置。--role input / --role output 会解析各自的配置文件。 |
| 模式感知操作 | generate_mesh、create_phase 和 calculate 会切换到所需的 PLAXIS 模式,因此工作流无需交错调用 set_mode。 |
| 已列入 MCP Registry | 以 io.github.yixuanzhong/plaxis-mcp 发布,可通过 uvx 安装。 |
此设计与客户端无关:Codex、Claude Code、Cursor、VS Code/Copilot 以及任何其他符合规范的本地 stdio MCP 客户端,都可连接到同一组不带前缀的服务工具。
快速开始
1 — 设置机器,只需一次。
plaxis-mcp.exe setup
配置文件会写入 %LOCALAPPDATA%\Caros\PLAXIS-MCP\profiles(可使用 --profile-dir 覆盖)。
添加 --skip-credentials,即可现在生成配置文件,稍后再通过
plaxis-mcp.exe credentials set --profile <profile.toml> 存储密码。
目录名称沿用历史命名——首个受支持的安装程序曾将文件写入此处—— 并予以保留,因为
credential_target是根据该名称生成的。
2 — 将每个角色作为独立进程运行。
plaxis-mcp.exe serve --role input
plaxis-mcp.exe serve --role output
--config <profile.toml> 用于显式指定配置文件,效果相同。无论采用哪种方式,serve
都会从配置文件读取所有端点设置,并从 Windows Credential
Manager 获取密码;如果存在任何 PLAXIS_* 端点环境变量覆盖项,就会拒绝启动——这样客户端就无法悄悄重定向端点或注入密码。
3 — 将客户端指向它。 请参阅客户端;主机在启动时不会连接,因此请在 PLAXIS 运行后调用一次 connect 工具。
获取主机
| 分发方式 | 命令 | 保障 |
|---|---|---|
| 已签名的 Windows 软件包 | plaxis-mcp.exe | 已通过 Authenticode 签名、包含哈希清单,并经过安装程序验证。受支持的生产部署方式。 |
| PyPI | uvx plaxis-mcp serve --role inputpy -3.13 -m pip install plaxis-mcp | 普通 Python 源码分发包。没有代码签名,没有制品清单。 |
两种方式都提供相同的 setup、serve、credentials 和 profiles 命令,并执行相同的配置文件绑定和环境变量覆盖拒绝机制——因此,PyPI 在运行时安全态势上并不较弱。它只是除了 PyPI 自身的保障外,不包含自己的供应链证明;需要部署已签名二进制文件的组织不应采用这种方式。
无论采用哪种方式,都不要将 plxscripting 安装到主机环境中。
仅用于源码 / 开发者启动 — 非受支持的部署方式
干净的 CPython 3.13 环境可以通过端点环境变量直接运行该模块。此方式会将密码放在环境变量中,且不进行任何安装绑定。
py -3.13 -m pip install .
$env:PLAXIS_ROLE = "input"
$env:PLAXIS_INPUT_HOST = "127.0.0.1"
$env:PLAXIS_INPUT_PORT = "10000"
$env:PLAXIS_BUNDLE_PYTHON = "C:\Path\To\PLAXIS\python.exe"
py -3.13 -I -u -m plaxis_mcp.server
对于 Output,请设置 PLAXIS_ROLE=output 并使用 PLAXIS_OUTPUT_* 变量。特定角色的变量优先于已弃用的通用 PLAXIS_HOST、PLAXIS_PORT 和 PLAXIS_PASSWORD 回退值。该服务仅接受 stdio——不要将 PLAXIS_MCP_TRANSPORT 设置为非 stdio 值。
工具
每个进程只有一个不可变角色。当客户端同时需要 Input 和 Output 时,应将它们注册为独立的 MCP 服务。
| 角色 | 端点 | 工具 |
|---|---|---|
| 两者 | — | 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 工具 · 11 个 Output 工具。
connect()不接受端点或凭据参数。它只使用固定的角色配置,因此 Agent 无法将存储的密码重定向到任意主机。- 角色状态资源位于
plaxis://input/status和plaxis://output/status。 get_results(phase, result_type_path, fem_type="node", offset=0, limit=200)支持无损分页。limit的范围为 1–5,000;响应会报告count、offset、limit、returned_count、has_more、next_offset和results。- 结果中的每个对象都包含
path——这是可传回任何引用参数的确切字符串。list_objects(kind)会以这种方式列出某一类型的全部对象,并提供几何摘要(坐标,或为报告边界框的对象解析出的bounds)。 model_state()会在尝试计算前报告网格状态、阶段表和未分配的材料。它会区分blocking(模型中的故障)、unknown(此处无法运行的检查)和caveats(PLAXIS 完全不公开的信息——对于 2D V22,即网格是否仍与几何匹配),因此blocking为空绝不代表模型已确认正常。- 结果位于 Output 服务上,该服务会读取 PLAXIS Output 应用程序当前打开的内容。Input 服务上的
view_results(phase)用于将已计算的阶段加载到其中。 - 当 PLAXIS 拒绝调用时,它自己的消息会通过
plaxis_message与我们的消息一同返回(已清理:不含文件系统路径和堆栈帧;截断状态会在带外标明)。失败的calculate还会在details中包含按阶段列出的表格。
客户端
所有已提供的示例都不包含密钥,并使用两个服务条目,每个角色一个。将命令替换为 plaxis-mcp.exe 所在位置,或 PyPI 安装时替换为 uvx plaxis-mcp。无需编辑其他内容——--role 会自动查找共享配置文件。
| 客户端 | 示例 | 凭据与审批 |
|---|---|---|
| Codex | codex-config.toml | env_vars 会转发本地存储的密码;default_tools_approval_mode = "writes"。 |
| Claude Code | claude-code-mcp.json | 仅在用户级 .mcp.json 中展开环境变量;保留服务信任和工具审批提示。 |
| Cursor | cursor-mcp.json | 启动时从用户环境中读取角色密码;保持 Auto-run 关闭。 |
| VS Code / Copilot | vscode-mcp.json | 使用密码 inputs 条目——VS Code 会安全存储密码以便重复使用。选择 Default Approvals,不要选择 Bypass 或 Autopilot。 |
通用的 mcp-client-config.json 是采用常见 JSON 结构的客户端可用的最小 mcpServers 示例。
绝不要将 PLAXIS 密码加入版本控制、命令行参数、日志或配置文件。
安全模型
- 配置文件绑定到单个安装。
credential_target源自installation_root,而worker_python必须是发现机制确认与同一根目录关联的解释器。手动编辑这三项中的任何一项都会导致配置文件无法加载。这样可以防止配置文件将已存储的 PLAXIS 密码交给任意可执行文件。 - 环境变量覆盖会被拒绝,而非合并:设置了
PLAXIS_*端点变量时,serve会拒绝启动。 - 未经认证的配对会默认拒绝。 Python 版本必须完全匹配——任何其他补丁版本的 3.7 系列解释器都属于不同且未经认证的 ABI,因此会被拒绝,而不会被假定为兼容。
- 修改前先询问。 所有客户端都应在调用
call_method和项目/文件修改工具前提示用户。不要为call_method、open_project或save_project设置类似 Always Allow 的规则:客户端审批通常针对整个工具,而非具体参数。 - 修改无法撤销。 只有经用户批准后,才允许使用 PLAXIS 可访问的本地绝对路径和 UNC
.p2dx路径。客户端审批和客户端侧检查点无法恢复 PLAXIS 的内存状态——所有修改测试都应使用一次性项目和备份。
架构
PLAXIS-MCP 将 MCP 主机与 PLAXIS 厂商管理的 Python 运行时分开:
MCP client ──stdio──▶ host (CPython 3.13, mcp 1.26.0)
│
├─ private local pipe
▼
role-pinned worker (PLAXIS bundled Python)
│
▼
PLAXIS Remote Scripting @ 127.0.0.1
- 客户端流量始终通过 stdio 使用 MCP;常规日志和诊断信息会输出到 stderr。
- PLAXIS-MCP 绝不会向 PLAXIS Python 包中安装软件包、升级软件包或重新分发该包。
这种拆分是必需的,因为 MCP 主机需要使用较新的 Python 运行时,而 PLAXIS 提供的是特定版本的脚本环境。
| PLAXIS 代际 | 内置 Python | 运行时配置文件 | 发布状态 |
|---|---|---|---|
| PLAXIS 2024.2 及更新版本 | 3.12.3 | current-312 | 通过实时认证后启用 |
| PLAXIS CONNECT Edition V22 → 2024 初期版本 | 3.8.10 | legacy-38 | 首个生产目标 |
| PLAXIS CONNECT Edition V20 / V21 | 3.7.4 | legacy-37 | 通过实时认证和安全认证后启用 |
V20 和 V21 共用旧版配置文件:其已停止支持的 Python 仅隔离运行于环回工作进程中,并且需要组织接受相关安全风险。
要求
- Windows,安装了受支持的本地 PLAXIS 2D,并已启用 Remote Scripting。
- MCP 主机使用 CPython 3.13。支持的主机版本范围:
>=3.13,<3.14。 - 一个仅监听环回地址的 PLAXIS Input 和/或 Output 服务——默认地址为
Input
127.0.0.1:10000、Output127.0.0.1:10001。 - 选择经过认证的 PLAXIS 内置 Python 配置文件。请勿在 MCP 主机环境中安装
plxscripting。
历史 PLAXIS 脚本路径——仅限工作进程使用,绝不可加入主机的 PYTHONPATH
C:\ProgramData\Seequent\PLAXIS Python Distribution V2\python\Lib\site-packages
C:\ProgramData\Bentley\Geotechnical\PLAXIS Python Distribution V2\python\Lib\site-packages
Docker、WSL、远程 MCP 传输方式,以及将 PLAXIS 程序包复制到 Python 环境中,均不是 v0.3 支持的部署方式。旧版 Docker 构件已被有意移除。
开发与验证
# unit suite, from the CPython 3.13 host environment
py -3.13 -m unittest discover -s tests
# inspect the split host/worker configuration without starting PLAXIS
py -3.13 scripts/smoke_test.py
发布前:在干净环境中验证主机 wheel/安装程序,确认 pip check 通过,扫描构件以检查是否包含供应商文件,验证协议版本为 2025-03-26 的 MCP 契约,并针对每个启用的 PLAXIS 配置文件,使用可丢弃的已计算项目完成实时认证。
参考资料
MCP Python SDK · Codex · Claude Code · Cursor · VS Code
采用 MIT 许可证。PLAXIS 是 Seequent 及其关联公司的商标。
本独立集成与 Seequent 或 Bentley Systems 无关联,也未获得其认可或赞助。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。