COMSOL MCP服务器
用于通过AI代理实现COMSOL多物理场仿真自动化的MCP服务器。
英语| 中文
明星历史
](https://github.com/wjc9011/COMSOL_Multiphysics_MCP/stargazers)

项目目标
构建一个完整的COMSOL MCP服务器,使AI代理(如Claude、opencode)能够通过MCP协议执行多物理场模拟:
- 模型管理 -创建、加载、保存、版本控制
- 几何建筑 -块、圆柱体、球体、布尔运算
- 物理配置 -传热、流体流动、静电学、固体力学
- 网格与求解 -自动网格、静态/时变研究
- 结果可视化 -计算表达式,导出图表
- 知识集成 -嵌入式指南+PDF语义搜索
需求
- COMSOL 多物理场 (5.x或6.x版本)
- Python 3.10+ (非Windows应用商店版本)
- Java运行时 (MPh/COMSOL要求)
安装
# Clone repository
git clone https://github.com/wjc9011/comsol-mcp.git
cd comsol-mcp
# Install dependencies
python -m pip install -e .
# Test server
python -m src.server构建PDF知识库
# Install additional dependencies
pip install pymupdf chromadb sentence-transformers
# Build knowledge base
python scripts/build_knowledge_base.py
# Check status
python scripts/build_knowledge_base.py --status用法
选项1:使用开放代码
创建 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:使用克劳德桌面
{
"mcpServers": {
"comsol": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/comsol-mcp"
}
}
}代码结构
comsol_mcp/
├── opencode.json # MCP server config for opencode
├── pyproject.toml # Python project config
├── README.md # This file
│
├── src/
│ ├── server.py # MCP Server entry point
│ ├── tools/
│ │ ├── session.py # COMSOL session management (start/stop/status)
│ │ ├── model.py # Model CRUD + versioning
│ │ ├── parameters.py # Parameter management + sweeps
│ │ ├── geometry.py # Geometry creation (block/cylinder/sphere)
│ │ ├── physics.py # Physics interfaces + boundary conditions
│ │ ├── mesh.py # Mesh generation
│ │ ├── study.py # Study creation + solving (sync/async)
│ │ └── results.py # Results evaluation + export
│ ├── resources/
│ │ └── model_resources.py # MCP resources (model tree, parameters)
│ ├── knowledge/
│ │ ├── embedded.py # Embedded physics guides + troubleshooting
│ │ ├── retriever.py # PDF vector search retriever
│ │ └── pdf_processor.py # PDF chunking + embedding
│ ├── async_handler/
│ │ └── solver.py # Async solving with progress tracking
│ └── utils/
│ └── versioning.py # Model version path management
│
├── scripts/
│ └── build_knowledge_base.py # Build PDF vector database
│
├── client_script/ # Standalone modeling scripts (examples)
│ ├── create_chip_tsv_final.py # Example: Chip thermal model
│ ├── create_micromixer_auto.py # Example: Fluid flow simulation
│ ├── create_chip_thermal*.py # Various chip thermal variants
│ ├── create_micromixer*.py # Various micromixer variants
│ ├── visualize_*.py # Result visualization scripts
│ ├── add_visualization.py # Add plot groups to model
│ └── test_*.py # Integration tests
│
├── comsol_models/ # Saved models (structured)
│ ├── chip_tsv_thermal/
│ │ ├── chip_tsv_thermal_20260216_*.mph
│ │ └── chip_tsv_thermal_latest.mph
│ └── micromixer/
│ └── micromixer_*.mph
│
└── tests/
└── test_basic.py # Unit tests可用工具(共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 | 交互式加热BC设置 |
physics_setup_heat_boundaries | 配置热量边界 |
physics_interactive_setup_flow | 交互式流程BC设置 |
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热源
# Key steps:
# 1. Create chip block and TSV cylinder
# 2. Boolean difference (subtract TSV from chip)
# 3. Add Silicon material (k=130 W/m·K)
# 4. Add Heat Transfer physics
# 5. Set heat flux on top, temperature on bottom
# 6. Solve and evaluate temperature distribution脚本: 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矩形通道
# Key steps:
# 1. Create rectangular channel block
# 2. Add water material (ρ=1000 kg/m³, μ=0.001 Pa·s)
# 3. Add Laminar Flow physics
# 4. Set inlet velocity (1 mm/s), outlet pressure
# 5. Add Transport of Diluted Species for mixing
# 6. Solve and evaluate velocity profile脚本: 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模式
# Access Java model via property (not callable)
jm = model.java # NOT model.java()
# Create component with True flag
comp = jm.component().create('comp1', True)
# Create 3D geometry
geom = comp.geom().create('geom1', 3)
# Create physics with geometry reference
physics = comp.physics().create('spf', 'LaminarFlow', 'geom1')
# Boundary condition with selection
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进程只能存在一个客户端:
# This is handled in session.py - client is kept alive and models are cleared
client.clear() # Clear models instead of full disconnect4.离线嵌入模型
PDF搜索支持使用本地HuggingFace缓存进行离线操作:
# Set mirror for China
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 | 物理接口 |
许可证
麻省理工学院
