🚀 COMSOL MCP 服务器
COMSOL MCP 服务器用于通过 AI 代理实现 COMSOL Multiphysics 模拟自动化。
English | 中文
🚀 快速开始
COMSOL MCP 服务器旨在构建一个完整的系统,使 AI 代理(如 Claude、opencode)能够通过 MCP 协议执行多物理场模拟。主要功能包括模型管理、几何构建、物理配置、网格划分与求解、结果可视化以及知识集成等。
✨ 主要特性
- 模型管理:支持创建、加载、保存模型以及进行版本控制。
- 几何构建:可创建块、圆柱体、球体等几何形状,并进行布尔运算。
- 物理配置:涵盖传热、流体流动、静电学、固体力学等多种物理场。
- 网格划分与求解:支持自动网格划分,可进行稳态和瞬态研究。
- 结果可视化:能够评估表达式并导出绘图。
- 知识集成:嵌入指南并支持 PDF 语义搜索。
📦 安装指南
环境要求
- COMSOL Multiphysics(版本 5.x 或 6.x)
- Python 3.10+(非 Windows 应用商店版本)
- Java 运行时环境(MPh/COMSOL 所需)
安装步骤
git clone https://github.com/wjc9011/comsol-mcp.git
cd comsol-mcp
python -m pip install -e .
python -m src.server
构建 PDF 知识库
pip install pymupdf chromadb sentence-transformers
python scripts/build_knowledge_base.py
python scripts/build_knowledge_base.py --status
💻 使用示例
选项 1:与 opencode 配合使用
在项目根目录创建 opencode.json 文件:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"comsol": {
"type": "local",
"command": ["python", "-m", "src.server"],
"enabled": true,
"environment": {
"HF_ENDPOINT": "https://hf-mirror.com"
},
"timeout": 30000
}
}
}
选项 2:与 Claude Desktop 配合使用
{
"mcpServers": {
"comsol": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/comsol-mcp"
}
}
}
📚 详细文档
代码结构
comsol_mcp/
├── opencode.json # opencode 的 MCP 服务器配置
├── pyproject.toml # Python 项目配置
├── README.md # 本文件
│
├── src/
│ ├── server.py # MCP 服务器入口点
│ ├── tools/
│ │ ├── session.py # COMSOL 会话管理(启动/停止/状态)
│ │ ├── model.py # 模型的增删改查 + 版本控制
│ │ ├── parameters.py # 参数管理 + 扫描
│ │ ├── geometry.py # 几何创建(块/圆柱体/球体)
│ │ ├── physics.py # 物理接口 + 边界条件
│ │ ├── mesh.py # 网格生成
│ │ ├── study.py # 研究创建 + 求解(同步/异步)
│ │ └── results.py # 结果评估 + 导出
│ ├── resources/
│ │ └── model_resources.py # MCP 资源(模型树、参数)
│ ├── knowledge/
│ │ ├── embedded.py # 嵌入式物理指南 + 故障排除
│ │ ├── retriever.py # PDF 向量搜索检索器
│ │ └── pdf_processor.py # PDF 分块 + 嵌入
│ ├── async_handler/
│ │ └── solver.py # 带进度跟踪的异步求解
│ └── utils/
│ └── versioning.py # 模型版本路径管理
│
├── scripts/
│ └── build_knowledge_base.py # 构建 PDF 向量数据库
│
├── client_script/ # 独立建模脚本(示例)
│ ├── create_chip_tsv_final.py # 示例:芯片热模型
│ ├── create_micromixer_auto.py # 示例:流体流动模拟
│ ├── create_chip_thermal*.py # 各种芯片热模型变体
│ ├── create_micromixer*.py # 各种微混合器变体
│ ├── visualize_*.py # 结果可视化脚本
│ ├── add_visualization.py # 向模型添加绘图组
│ └── test_*.py # 集成测试
│
├── comsol_models/ # 保存的模型(结构化)
│ ├── chip_tsv_thermal/
│ │ ├── chip_tsv_thermal_20260216_*.mph
│ │ └── chip_tsv_thermal_latest.mph
│ └── micromixer/
│ └── micromixer_*.mph
│
└── tests/
└── test_basic.py # 单元测试
可用工具(共 80 多个)
会话(4 个)
| 工具 |
描述 |
comsol_start |
启动本地 COMSOL 客户端 |
comsol_connect |
连接到远程服务器 |
comsol_disconnect |
清除会话 |
comsol_status |
获取会话信息 |
模型(9 个)
| 工具 |
描述 |
model_load |
加载 .mph 文件 |
model_create |
创建空模型 |
model_save |
保存到文件 |
model_save_version |
保存时添加时间戳 |
model_list |
列出已加载的模型 |
model_set_current |
设置活动模型 |
model_clone |
克隆模型 |
model_remove |
从内存中移除模型 |
model_inspect |
获取模型结构 |
参数(5 个)
| 工具 |
描述 |
param_get |
获取参数值 |
param_set |
设置参数 |
param_list |
列出所有参数 |
param_sweep_setup |
设置参数扫描 |
param_description |
获取/设置参数描述 |
几何(14 个)
| 工具 |
描述 |
geometry_list |
列出几何序列 |
geometry_create |
创建几何序列 |
geometry_add_feature |
添加通用特征 |
geometry_add_block |
添加矩形块 |
geometry_add_cylinder |
添加圆柱体 |
geometry_add_sphere |
添加球体 |
geometry_add_rectangle |
添加二维矩形 |
geometry_add_circle |
添加二维圆形 |
geometry_boolean_union |
合并对象 |
geometry_boolean_difference |
减去对象 |
geometry_import |
导入 CAD 文件 |
geometry_build |
构建几何 |
geometry_list_features |
列出特征 |
geometry_get_boundaries |
获取边界编号 |
物理(16 个)
| 工具 |
描述 |
physics_list |
列出物理接口 |
physics_get_available |
可用的物理类型 |
physics_add |
添加通用物理 |
physics_add_electrostatics |
添加静电学 |
physics_add_solid_mechanics |
添加固体力学 |
physics_add_heat_transfer |
添加传热 |
physics_add_laminar_flow |
添加层流 |
physics_configure_boundary |
配置边界条件 |
physics_set_material |
分配材料 |
physics_list_features |
列出物理特征 |
physics_remove |
移除物理 |
multiphysics_add |
添加耦合 |
physics_interactive_setup_heat |
交互式热边界条件设置 |
physics_setup_heat_boundaries |
配置热边界 |
physics_interactive_setup_flow |
交互式流边界条件设置 |
physics_boundary_selection |
通用边界设置 |
网格(3 个)
| 工具 |
描述 |
mesh_list |
列出网格序列 |
mesh_create |
生成网格 |
mesh_info |
获取网格统计信息 |
研究与求解(8 个)
| 工具 |
描述 |
study_list |
列出研究 |
study_solve |
同步求解 |
study_solve_async |
后台异步求解 |
study_get_progress |
获取求解进度 |
study_cancel |
取消求解 |
study_wait |
等待求解完成 |
solutions_list |
列出解 |
datasets_list |
列出数据集 |
结果(9 个)
| 工具 |
描述 |
results_evaluate |
评估表达式 |
results_global_evaluate |
评估标量 |
results_inner_values |
获取时间步 |
results_outer_values |
获取扫描值 |
results_export_data |
导出数据 |
results_export_image |
导出绘图图像 |
results_exports_list |
列出导出节点 |
results_plots_list |
列出绘图节点 |
知识(8 个)
| 工具 |
描述 |
docs_get |
获取文档 |
docs_list |
列出可用文档 |
physics_get_guide |
物理快速指南 |
troubleshoot |
故障排除帮助 |
modeling_best_practices |
最佳实践 |
pdf_search |
搜索 PDF 文档 |
pdf_search_status |
PDF 搜索状态 |
pdf_list_modules |
列出 PDF 模块 |
示例案例
案例 1:带 TSV 的芯片热模型
对具有硅通孔(TSV)的硅芯片进行 3D 热分析。
几何:60×60×5 µm 的芯片,5 µm 直径的 TSV 孔,10×10 µm 的热源
脚本:client_script/create_chip_tsv_final.py
运行:
cd /path/to/comsol-mcp
python client_script/create_chip_tsv_final.py
结果:在 1 MW/m² 的热通量下,环境温度的上升情况
案例 2:微混合器流体流动
对微流体通道中的 3D 层流进行模拟。
几何:600×100×50 µm 的矩形通道
脚本:client_script/create_micromixer_auto.py
运行:
cd /path/to/comsol-mcp
python client_script/create_micromixer_auto.py
结果:速度分布和浓度混合轮廓
模型版本控制
模型以结构化路径保存:
./comsol_models/{model_name}/{model_name}_{timestamp}.mph
./comsol_models/{model_name}/{model_name}_latest.mph
示例:
./comsol_models/chip_tsv_thermal/chip_tsv_thermal_20260216_140514.mph
./comsol_models/chip_tsv_thermal/chip_tsv_thermal_latest.mph
🔧 技术细节
1. mph 库 API 模式
jm = model.java
comp = jm.component().create('comp1', True)
geom = comp.geom().create('geom1', 3)
physics = comp.physics().create('spf', 'LaminarFlow', 'geom1')
bc = physics.create('inl1', 'InletBoundary')
bc.selection().set([1, 2, 3])
bc.set('U0', '1[mm/s]')
2. 边界条件属性名称
| 物理场 |
条件 |
属性 |
| 传热 |
热通量边界 |
q0 |
| 传热 |
温度边界 |
T0 |
| 传热 |
对流热通量 |
h, Text |
| 层流 |
入口边界 |
U0, NormalInflowVelocity |
| 层流 |
出口边界 |
p0 |
3. 客户端会话限制
mph 库创建一个单例 COMSOL 客户端。每个 Python 进程只能存在一个客户端:
client.clear()
4. 离线嵌入模型
PDF 搜索支持使用本地 HuggingFace 缓存进行离线操作:
export HF_ENDPOINT=https://hf-mirror.com
开发状态
| 阶段 |
描述 |
状态 |
| 1 |
基本框架 + 会话 + 模型 |
完成 |
| 2 |
参数 + 求解 + 结果 |
完成 |
| 3 |
几何 + 物理 + 网格 |
完成 |
| 4 |
嵌入式知识 + 工具文档 |
完成 |
| 5 |
PDF 向量检索 |
完成 |
| 6 |
集成测试 |
进行中 |
下一步计划
- 完成阶段 6 - 进行带有适当边界条件的完整集成测试
- 可视化导出 - 从绘图组生成 PNG 图像
- LSP 警告 - 修复 physics.py 中的类型提示
- 更多示例 - 添加静电学、固体力学案例
- 错误处理 - 改进错误消息和恢复机制
资源
| URI |
描述 |
comsol://session/info |
会话信息 |
comsol://model/{name}/tree |
模型树结构 |
comsol://model/{name}/parameters |
模型参数 |
comsol://model/{name}/physics |
物理接口 |
📄 许可证
本项目采用 MIT 许可证。