About
Lspp — Model Context Protocol server
README
lspp-mcp-server 是一个基于 Python 的 LS-PrePost MCP server。它把经过白名单验证的 LS-PrePost command file 模板和受控 keyword 生成逻辑封装成稳定、有限、可复核的 MCP tools,用于 LS-DYNA 前处理、求解和后处理自动化。
它不允许 AI 传入任意 raw cfile,也不直接操控 LS-PrePost GUI。所有工具只会渲染项目内的模板,执行生成的 .cfile,并把 .cfile、运行日志、返回码和输出检查结果保存在输出目录旁的 .lspp_mcp/ 目录中。
典型使用流程
通常你会按这个顺序使用本项目:
- 从 GitHub 克隆
lspp-mcp-server到本机。 - 在项目目录里创建 Python 虚拟环境并安装 MCP server。
- 手动复制
config.example.yaml为config.yaml,填写本机 LS-PrePost 路径和允许访问的仿真目录。 - 手动把这个 MCP server 加入 Codex 的
config.toml。 - 重启 Codex 或新开 Codex 会话。
- 用自然语言让 Codex 调用 LS-PrePost 完成后处理。
在新电脑上部署
下面以 Windows 为例。项目可以放在任意目录,后文用 <MCP项目目录> 表示你实际克隆本仓库的位置。
例如你可以放在:
D:\tools\lspp-mcp
E:\apps\lspp-mcp
C:\Users\<你的用户名>\Projects\lspp-mcp
只要后面 config.toml 里的 command、cwd、LSPP_MCP_CONFIG 都改成同一个实际目录即可。
1. 手动安装前置软件
新电脑需要先手动安装:
- Git
- Python 3.10 或更高版本
- LS-PrePost
- Codex
2. 克隆仓库
用 Git 克隆仓库:
$McpDir = "D:\tools\lspp-mcp" # 可换成你想放置本项目的任意目录
git clone https://github.com/Malps-del/lspp-mcp-server.git $McpDir
Set-Location $McpDir
3. 创建虚拟环境并安装
在项目根目录运行:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[binout]"
这个命令会同时安装大型 MPP binout 读取所需的可选 Python 后端,包括 lasso-python、h5py、pandas 和 rich。如果只需要最小安装,也可以使用 .\.venv\Scripts\python.exe -m pip install -e .,但之后使用 backend="lasso" 读取 binout 时需要再补装 binout 依赖组。
安装完成后运行测试:
.\.venv\Scripts\python.exe -B -m unittest discover -s tests
看到 OK 就说明 Python 包和基础逻辑可用。
4. 手动创建本机 config.yaml
这个步骤必须手动做,因为每台电脑的 LS-PrePost 安装路径和仿真文件目录都不同。
Copy-Item config.example.yaml config.yaml
然后编辑 <MCP项目目录>\config.yaml。以下几项可能需要根据实际情况修改:
lsprepost_exe: "D:/Program Files/Ansys/LS-PrePost-2025R1(4.12)/lsprepost4.12.exe"
lsdyna_exe: ""
workspace_root: "D:/lsdyna-projects"
allowed_roots:
- "D:/lsdyna-projects"
timeout_seconds: 300
case_generator_python: ""
case_generator_src: ""
color_palettes:
# lab_style: "D:/palettes/lab_style.txt"
含义:
lsprepost_exe:本机 LS-PrePost 可执行文件路径。lsdyna_exe:可选。本机 LS-DYNA 求解器可执行文件路径,用于run_lsdyna_solver。workspace_root:相对路径的默认起点。例如传入case01/d3part时,会按workspace_root/case01/d3part解析。allowed_roots:安全白名单目录。MCP 只允许读写这些目录下面的文件。timeout_seconds:单次 LS-PrePost 调用的超时时间。case_generator_python:可选。已有 LS-DYNA Batch Case Generator 项目的 Python 解释器路径,通常是该项目.venv里的python.exe。case_generator_src:可选。已有 LS-DYNA Batch Case Generator 项目的src目录。color_palettes:可选。把自定义 LS-PrePost 调色板文件注册为颜色风格名,供color_style调用。
如果你的仿真项目分散在多个目录,可以写多个白名单目录:
workspace_root: "D:/lsdyna-projects"
allowed_roots:
- "D:/lsdyna-projects"
- "E:/shared-results"
5. 手动配置 Codex MCP
Codex 通过 config.toml 加载 MCP server。Windows 上通常是:
C:\Users\<你的用户名>\.codex\config.toml
在这个文件里新增:
[mcp_servers.lspp]
command = "<MCP项目目录>/.venv/Scripts/python.exe"
args = ["-m", "lspp_mcp.server"]
cwd = "<MCP项目目录>"
startup_timeout_sec = 20
tool_timeout_sec = 600
default_tools_approval_mode = "prompt"
[mcp_servers.lspp.env]
LSPP_MCP_CONFIG = "<MCP项目目录>/config.yaml"
将上述文本复制到 config.toml 前,请把 <MCP项目目录> 替换成你的实际绝对路径,并建议使用 / 写路径。例如项目放在 D:\tools\lspp-mcp 时:
[mcp_servers.lspp]
command = "D:/tools/lspp-mcp/.venv/Scripts/python.exe"
args = ["-m", "lspp_mcp.server"]
cwd = "D:/tools/lspp-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 600
default_tools_approval_mode = "prompt"
[mcp_servers.lspp.env]
LSPP_MCP_CONFIG = "D:/tools/lspp-mcp/config.yaml"
其中:
command:运行 MCP server 的 Python 解释器,通常是项目虚拟环境里的python.exe。cwd:MCP 项目根目录,也就是包含pyproject.toml、src、README.md的目录。LSPP_MCP_CONFIG:本机config.yaml的绝对路径。
配置后,重启 Codex 或新开一个 Codex 会话。
6. 验证 MCP 是否加载
在 Codex CLI/TUI 中可以输入:
/mcp
确认能看到 lspp。
在 Codex 桌面窗口中,可以用两种方式验证:
- 打开 Codex 设置,进入 MCP 相关设置页,确认
lsppserver 已启用且没有启动错误。 - 新开一个 Codex 会话,直接输入下面的验证问题。
列出当前可用的 MCP server,确认 lspp 是否已加载。
然后可以继续问:
列出 lspp MCP 支持的 d3plot_fringe 变量。
或:
用 lspp MCP 检查 LS-PrePost 路径和 workspace 是否可用。
不通过 Codex 直接启动
调试时也可以手动启动 MCP server:
$env:LSPP_MCP_CONFIG="D:/tools/lspp-mcp/config.yaml" # 改成你的实际 config.yaml 路径
.\.venv\Scripts\python.exe -m lspp_mcp.server
正常在 Codex 中使用时,不需要手动运行这条命令;Codex 会按 config.toml 自动启动 MCP server。
在 Codex 中怎么调用
配置完成后,你不需要手写 JSON。直接用自然语言说清楚输入文件、输出文件、变量、状态帧和视角即可。
例如:
从 D:\lsdyna-projects\case01\d3part 导出第 5 帧 von_mises 云图,等轴测视图,
输出到 D:\lsdyna-projects\case01\post\von_mises_s005.png,云图显示层级设为 50。
Codex 会把它映射为 export_d3plot_contour,并自动设置输入文件、输出图片、变量名、状态帧、视角和云图层级等参数。
图片格式会根据输出文件扩展名自动选择。例如输出到 .jpg 会使用 JPG,输出到 .wrl 会使用 VRML/WRL。也可以明确说“输出为 jpg 格式”。当前在 LS-PrePost 4.12 cfile 自动化中已验证支持:
png, jpg, bmp, gif, wrl
LS-PrePost 界面下拉框里还可能显示 pdf、tif、pcx、ps、eps、tex、svg、pgf 等格式,但这些格式在当前 4.12 环境下用同一套 cfile print 命令没有稳定生成非空文件,因此暂时不作为 MCP 支持格式。
再比如提取节点历史曲线:
从 D:\lsdyna-projects\case01\d3plot 提取节点 524 的 resultant_displacement 历史曲线,
保存到 D:\lsdyna-projects\case01\post\node524_resultant_disp.csv。
提取 ASCII 曲线:
从 D:\lsdyna-projects\case01\nodout 提取节点 524 的 y_displacement 曲线,
保存到 D:\lsdyna-projects\case01\post\node524_y_disp.csv。
提取 binout 曲线:
从 D:\lsdyna-projects\case01\binout 提取 glstat 的 kinetic_energy 曲线,
保存到 D:\lsdyna-projects\case01\post\binout_glstat_ke.csv。
如果新会话中 Codex 没有自动选择这个 MCP,可以在句子前面加:
用 lspp MCP ...
案例:导出第 1 到 10 帧 von Mises 云图
假设工况目录是:
D:\lsdyna-projects\case01
其中有:
D:\lsdyna-projects\case01\d3part
目标是从 d3part 导出第 1 到 10 帧的 von Mises 应力云图,等轴测视图,并在该目录下新建文件夹保存图片。
可以直接对 Codex 说:
从 D:\lsdyna-projects\case01 的 d3part 中提取第 1 到 10 帧的 mises 应力云图,
等轴测视图,图片在该目录下新建一个文件夹保存。
推荐更明确一点:
用 lspp MCP 从 D:\lsdyna-projects\case01\d3part 导出第 1 到 10 帧 von_mises 云图,
视角 isometric,输出到 D:\lsdyna-projects\case01\von_mises_isometric_frames_1_10,
文件名按 von_mises_state_001.png 到 von_mises_state_010.png 命名。
Codex 会优先调用 export_d3plot_contour_frames,在同一个 LS-PrePost 会话中打开一次 d3plot 或 d3part,然后连续切换 state 并截图:
state_index = 1, 2, 3, ..., 10
variable = von_mises
view = isometric
输出目录示例:
D:\lsdyna-projects\case01\von_mises_isometric_frames_1_10
输出文件示例:
von_mises_state_001.png
von_mises_state_002.png
...
von_mises_state_010.png
这类多帧任务只会生成一次 .lspp_mcp 运行记录,里面包含:
generated.cfile
run.json
这些文件用于复核实际执行的 LS-PrePost 命令、返回码和每一帧输出文件的检查结果。少量帧或每帧设置不同的特殊任务,仍然可以使用单帧 export_d3plot_contour。
MCP Tools
validate_lsprepost
检查 LS-PrePost 可执行文件是否存在、workspace 是否存在且可写。
list_supported_variables
列出配置中支持的变量映射。支持 d3plot_fringe、nodout、matsum、node_history、binout。
export_d3plot_contour
从 d3plot 或 d3part 导出单帧云图。支持变量、状态帧、视角、part、图例、坐标轴、背景、窗口尺寸、显示层级、颜色风格和图片格式设置。颜色风格通过 LS-PrePost 的 palette 文件加载实现。
export_d3plot_contour_frames
从同一个 d3plot 或 d3part 连续导出多帧云图。支持按 state 或 time 选择、多视角批量截图,并支持与单帧云图相同的显示和格式设置。
list_contour_color_styles
列出可用的云图颜色风格预设,以及 config.yaml 中注册的自定义 palette 风格。
内置颜色风格会在输出目录旁的 .lspp_mcp/palettes/ 中生成 LS-PrePost palette 文件,并通过 range pal load 加载。palette 文件编号从 0 开始,并且会比设定的 range_level 多写一行:例如 range_level=50 时写 0..50 共 51 行。0 对应低值端,range_level 对应高值端,LS-PrePost 会把最高编号显示在 colorbar 顶部;RGB 通道使用 0..1 浮点值。
当前内置风格覆盖常见 Matplotlib 配色类别,例如:
- 感知均匀:
viridis、plasma、inferno、magma、cividis - 顺序色图:
greys、purples、blues、greens、oranges、reds、ylorbr、ylorrd、ylgnbu等 - 发散色图:
rdbu、rdylbu、rdylgn、spectral、coolwarm、bwr、seismic等 - 定性色图:
pastel1、pastel2、paired、accent、dark2、set1、set2、set3、tab10、tab20 - 其他常用色图:
hot、afmhot、gist_heat、copper、terrain、jet、turbo、nipy_spectral、gist_ncar
infer_d3plot_state_times
根据求解日志推断 d3plot state 与物理时间的对应关系。
extract_ascii_curve
从 nodout、matsum、glstat、rcforc 等 ASCII 结果文件导出曲线 CSV。
extract_d3plot_node_history
从 d3plot 提取指定节点的历史变量曲线,并保存为 CSV。
extract_binout_curve
从 binout 或 binout0000 提取 glstat、matsum、trhist、dbfsi 等 block 下的变量曲线,并保存为 CSV。
支持 backend="auto" | "lasso" | "lsprepost"。lsprepost 保留原有 LS-PrePost/binaski + xyplot 导出路径,适合小文件或 GUI/binaski 可稳定读取的场景;lasso 使用可选的 lasso-python 直接读取 binout,推荐用于大型 MPP binout* 分片批处理;auto 会先尝试 lasso,失败后回退到 LS-PrePost。
如果按照上面的推荐部署命令 pip install -e ".[binout]" 安装,lasso 后端已经包含在 MCP 虚拟环境中。旧环境或最小安装环境可以用下面命令补装:
.\.venv\Scripts\python.exe -m pip install -e ".[binout]"
示例:
extract_binout_curve(
binout_path="D:/lsdyna-projects/case01/binout0000",
block="glstat",
variable="kinetic_energy",
output_csv="D:/lsdyna-projects/case01/post/glstat_ke.csv",
backend="lasso",
)
extract_binout_curve(
binout_path="D:/lsdyna-projects/case01/binout*",
block="dbfsi",
variable="pres",
output_csv="D:/lsdyna-projects/case01/post/dbfsi_pres.csv",
backend="lasso",
)
lasso 后端支持 glstat/time、glstat/kinetic_energy、matsum/internal_energy、nodout/y_displacement、dbfsi/pres、dbfsi/fx、dbfsi/fy、dbfsi/fz、trhist/sx、trhist/sy、trhist/sz 等变量路径。二维变量指定 entity_index 时输出 time,value;不指定时输出所有实体列,列名优先使用 binout 中的 ids 或 legend_ids。
inspect_binout_contents
使用 lasso 后端列出 binout 顶层数据块、各 block 下变量名、变量 shape/dtype,以及 time 的起止时间和步数。适合在大型 MPP binout 批处理前先确认可用数据。
inspect_binout_contents(
binout_path="D:/lsdyna-projects/case01/binout*",
backend="lasso",
)
extract_binout_metrics
使用 lasso 后端直接从 binout 提取常用指标,包括 peak、time_at_peak、min、final 和 positive_impulse。对 trhist 支持压力代理量:
p_proxy = -(sx + sy + sz) / 3
可用于水下爆炸压力时程的 peak pressure、arrival time、shock impulse、post-shock/bubble impulse 汇总。
batch_postprocess_cases
对多个工况目录批量运行后处理任务,并写出 summary.json、summary.csv。适合把同一套云图导出或曲线提取流程应用到多个 case。
validate_case_generator_integration
检查 MCP 是否能调用外部 LS-DYNA Batch Case Generator 项目。
inspect_lsdyna_case_config
读取 LS-DYNA Batch Case Generator 保存的 JSON 配置,并汇总工况生成设置。
generate_lsdyna_cases
根据 LS-DYNA Batch Case Generator 的 JSON 配置生成参数化工况。支持预览和正式导出。
generate_lsdyna_keyword_field_sweep
批量修改 LS-DYNA k 文件中指定 keyword 字段,并生成参数扫描工况。适合直接扫描 *CONTROL_*、*DATABASE_*、*INITIAL_*、*MAT_*、*EOS_*、*BOUNDARY_* 等关键字参数。
generate_lsdyna_parameter_sweep
批量修改 *PARAMETER 中指定参数,并生成参数扫描工况。适合模型通过 *PARAMETER 管理参数的情况。
validate_lsdyna_solver
检查 lsdyna_exe 是否存在、求解工作目录是否在 allowed_roots 内且可写。正式启动求解前建议先运行一次。
run_lsdyna_solver
从指定 k 文件启动一次 LS-DYNA 求解。支持工作目录、CPU 数、memory、额外参数、超时时间、dry run,以及可见控制台模式。
diagnose_lsdyna_logs
读取求解日志,汇总错误、警告、终止状态和最新求解进展。
inspect_lsdyna_results
识别 LS-DYNA 结果目录中的结果文件、日志状态和可用后处理动作。
extract_lsdyna_metrics
从曲线 CSV 中计算峰值、峰值时间、终值、均值、RMS 和积分等指标。
compare_lsdyna_cases
对多个工况提取同一套指标并输出对比汇总 CSV。
inspect_keyword_deck
只读解析 LS-DYNA k/keyword 文件,汇总关键字、include、材料、part、set、数据库输出和常见仿真功能卡。
inspect_keyword_fields
只读解析 LS-DYNA keyword block 内的字段、字段值和参数引用。
check_keyword_deck
检查 LS-DYNA keyword 文件中常见的前处理和输出设置问题。
create_lsdyna_plate_mesh
生成规则矩形壳板网格 k 文件。支持长度、宽度、厚度、网格划分、材料、数据库输出和可选四边固定约束。
create_lsdyna_block_mesh
生成规则六面体实体块网格 k 文件。支持长、宽、高、网格划分、材料和数据库输出。
create_lsdyna_cylinder_shell_mesh
生成规则圆柱壳网格 k 文件。支持半径、高度、厚度、周向/轴向划分、材料、数据库输出、可选顶部/底部封闭,以及可选顶部/底部固定约束。顶部/底部封闭默认使用方形核心加过渡环的全四边形封盖;也可以显式选择三角形封盖。
precheck_lsdyna_keyword_model
对 k 文件进行前处理预检查,汇总节点、单元、part、包围盒、缺失节点引用、重复编号、退化单元和 keyword 检查结果。
preview_lsdyna_keyword_model
用 LS-PrePost 打开 k 文件并导出模型预览图。适合在生成或修改模型后快速检查几何、网格和视角显示。
create_initial_volume_fraction_geometry
生成 *INITIAL_VOLUME_FRACTION_GEOMETRY keyword block 或 include 文件。支持 part、segment、plane、cylinder/cone、box、sphere 和 user function 几何容器,用于在已有 ALE 网格中定义惰性材料填充区域。
append_initial_volume_fraction_geometry
把 *INITIAL_VOLUME_FRACTION_GEOMETRY 填充块追加到已有 k 文件,默认插入到 *END 前,并输出新的 k 文件。
inspect_initial_volume_fraction_geometry
解析已有 k 文件中的 *INITIAL_VOLUME_FRACTION_GEOMETRY 块,汇总背景 ALE 域、背景 AMMG、填充动作、几何类型、填充方向和几何参数。
create_lsdyna_cylindrical_assembly
生成规则圆柱装配 k 文件。支持封闭圆柱壳、惰性内部几何填充、沿圆周/高度规则布置的实体附加块,以及规则集中质量点。
check_lsdyna_cylindrical_assembly
检查圆柱装配 k 文件的网格、壳体闭合边、质量点统计、重复编号、缺失节点引用和常见 keyword 设置问题,可输出 JSON 检查报告。
create_lsdyna_sale_fluid_domain
生成规则 S-ALE 流体域 k 文件。支持三维矩形域或轴对称域、结构化网格控制点、多材料组、边界面设置、占位材料和可选初始体积分数填充。
check_lsdyna_sale_fluid_domain
检查 S-ALE 流体域 k 文件的结构化网格、控制点、多材料组、边界面和初始体积分数填充设置,可输出 JSON 检查报告。
扩展模板
新增模板时:
- 把
.cfile.j2放入src/lspp_mcp/cfile_templates/。 - 在
src/lspp_mcp/templates.py的ALLOWED_TEMPLATES中加入模板文件名。 - 在工具模块中只构造参数上下文,不把 LS-PrePost 命令散落到业务函数里。
- 添加单元测试,检查渲染结果和禁止命令。
所有生成的 cfile 都会经过检查,禁止以 system、shell、exec、cmd 开头的命令行。
扩展变量映射
变量编号都在 YAML 中配置。修改 config.yaml 的 variables 段即可,例如:
variables:
d3plot_fringe:
custom_result: 999
binout:
glstat:
custom_energy:
variable: custom_energy
index1: 0
index2: 1
entity_index: 0
如果以后 LS-PrePost 版本或变量列表变化,可以继续在 config.yaml 中修改。
Installing Lspp
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/Malps-del/lspp-mcp-serverFAQ
Is Lspp MCP free?
Yes, Lspp MCP is free — one-click install via Unyly at no cost.
Does Lspp need an API key?
No, Lspp runs without API keys or environment variables.
Is Lspp hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Lspp in Claude Desktop, Claude Code or Cursor?
Open Lspp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Lspp with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
