Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Lspp

БесплатноНе проверен

Lspp — Model Context Protocol server

GitHubEmbed

Описание

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/ 目录中。

典型使用流程

通常你会按这个顺序使用本项目:

  1. 从 GitHub 克隆 lspp-mcp-server 到本机。
  2. 在项目目录里创建 Python 虚拟环境并安装 MCP server。
  3. 手动复制 config.example.yamlconfig.yaml,填写本机 LS-PrePost 路径和允许访问的仿真目录。
  4. 手动把这个 MCP server 加入 Codex 的 config.toml
  5. 重启 Codex 或新开 Codex 会话。
  6. 用自然语言让 Codex 调用 LS-PrePost 完成后处理。

在新电脑上部署

下面以 Windows 为例。项目可以放在任意目录,后文用 <MCP项目目录> 表示你实际克隆本仓库的位置。

例如你可以放在:

D:\tools\lspp-mcp
E:\apps\lspp-mcp
C:\Users\<你的用户名>\Projects\lspp-mcp

只要后面 config.toml 里的 commandcwdLSPP_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-pythonh5pypandasrich。如果只需要最小安装,也可以使用 .\.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.tomlsrcREADME.md 的目录。
  • LSPP_MCP_CONFIG:本机 config.yaml 的绝对路径。

配置后,重启 Codex 或新开一个 Codex 会话。

6. 验证 MCP 是否加载

在 Codex CLI/TUI 中可以输入:

/mcp

确认能看到 lspp

在 Codex 桌面窗口中,可以用两种方式验证:

  1. 打开 Codex 设置,进入 MCP 相关设置页,确认 lspp server 已启用且没有启动错误。
  2. 新开一个 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 界面下拉框里还可能显示 pdftifpcxpsepstexsvgpgf 等格式,但这些格式在当前 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 导出第 110 帧的 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 会话中打开一次 d3plotd3part,然后连续切换 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_fringenodoutmatsumnode_historybinout

export_d3plot_contour

d3plotd3part 导出单帧云图。支持变量、状态帧、视角、part、图例、坐标轴、背景、窗口尺寸、显示层级、颜色风格和图片格式设置。颜色风格通过 LS-PrePost 的 palette 文件加载实现。

export_d3plot_contour_frames

从同一个 d3plotd3part 连续导出多帧云图。支持按 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 配色类别,例如:

  • 感知均匀:viridisplasmainfernomagmacividis
  • 顺序色图:greyspurplesbluesgreensorangesredsylorbrylorrdylgnbu
  • 发散色图:rdburdylburdylgnspectralcoolwarmbwrseismic
  • 定性色图:pastel1pastel2pairedaccentdark2set1set2set3tab10tab20
  • 其他常用色图:hotafmhotgist_heatcopperterrainjetturbonipy_spectralgist_ncar

infer_d3plot_state_times

根据求解日志推断 d3plot state 与物理时间的对应关系。

extract_ascii_curve

nodoutmatsumglstatrcforc 等 ASCII 结果文件导出曲线 CSV。

extract_d3plot_node_history

d3plot 提取指定节点的历史变量曲线,并保存为 CSV。

extract_binout_curve

binoutbinout0000 提取 glstatmatsumtrhistdbfsi 等 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/timeglstat/kinetic_energymatsum/internal_energynodout/y_displacementdbfsi/presdbfsi/fxdbfsi/fydbfsi/fztrhist/sxtrhist/sytrhist/sz 等变量路径。二维变量指定 entity_index 时输出 time,value;不指定时输出所有实体列,列名优先使用 binout 中的 idslegend_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 提取常用指标,包括 peaktime_at_peakminfinalpositive_impulse。对 trhist 支持压力代理量:

p_proxy = -(sx + sy + sz) / 3

可用于水下爆炸压力时程的 peak pressure、arrival time、shock impulse、post-shock/bubble impulse 汇总。

batch_postprocess_cases

对多个工况目录批量运行后处理任务,并写出 summary.jsonsummary.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 检查报告。

扩展模板

新增模板时:

  1. .cfile.j2 放入 src/lspp_mcp/cfile_templates/
  2. src/lspp_mcp/templates.pyALLOWED_TEMPLATES 中加入模板文件名。
  3. 在工具模块中只构造参数上下文,不把 LS-PrePost 命令散落到业务函数里。
  4. 添加单元测试,检查渲染结果和禁止命令。

所有生成的 cfile 都会经过检查,禁止以 systemshellexeccmd 开头的命令行。

扩展变量映射

变量编号都在 YAML 中配置。修改 config.yamlvariables 段即可,例如:

variables:
  d3plot_fringe:
    custom_result: 999
  binout:
    glstat:
      custom_energy:
        variable: custom_energy
        index1: 0
        index2: 1
        entity_index: 0

如果以后 LS-PrePost 版本或变量列表变化,可以继续在 config.yaml 中修改。

from github.com/Malps-del/lspp-mcp-server

Установка Lspp

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/Malps-del/lspp-mcp-server

FAQ

Lspp MCP бесплатный?

Да, Lspp MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Lspp?

Нет, Lspp работает без API-ключей и переменных окружения.

Lspp — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Lspp в Claude Desktop, Claude Code или Cursor?

Открой Lspp на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Lspp with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development