基于MCP协议的Simulink自动化配置详解与实践
引言
本文基于实际Windows系统配置经验,面向已完成MATLAB/Simulink与Python安装的开发者,指导如何通过Model Context Protocol(MCP)在Cursor等智能代理中实现Simulink模型的自动化操作。
上游开源项目:sohumsuthar/simulink-mcp(许可证:PolyForm Noncommercial 1.0.0,商业用途需自行评估)。
配置成果
成功配置后,Cursor AI可通过MCP调用约14个结构化工具,实现:
- SLX模型加载/关闭/保存
- 模块枚举与参数读写
- 模块增删与连接操作
- 求解器配置管理
- 仿真执行与结果可视化
MATLAB采用延迟启动机制:MCP握手响应迅速,首次调用工具时才启动引擎,冷启动耗时约15-20秒属正常现象。
环境兼容性要求
需满足以下三个条件:
- MATLAB Python引擎支持选定Python小版本(由MATLAB发行版决定)
- 官方mcp包(mcp[cli]>=1.2.0)要求Python≥3.10
- simulink-mcp依赖上述mcp,实际运行解释器必须为3.10+且与引擎安装版本一致
典型冲突案例: - R2022a等旧版MATLAB引擎仅支持Python 2.7/3.7/3.8/3.9,在3.10环境下执行pip install会报错 - 使用Python 3.9安装引擎时,mcp>=1.2.0无法安装(PyPI包要求Python≥3.10)
结论:建议使用较新的MATLAB版本(如R2024a/b)配合Python 3.10或3.11,具体以MathWorks官方文档为准,避免使用未被支持的过新版本(如某些环境下的Python 3.13)。
确认MATLAB根目录
打开MATLAB命令行执行:matlabroot,记录输出路径(如F:\MATLAB2024)。引擎源码位于:<matlabroot>\extern\engines\python,该目录应包含setup.py文件。
安装MATLAB Python引擎
4.1 确定唯一Python解释器
后续Cursor MCP的command、pip install、import matlab.engine等操作必须指向同一python.exe,建议始终使用绝对路径。
4.2 推荐在引擎目录内执行setup.py
PowerShell中执行:
cd "<matlabroot>\extern\engines\python"
& "C:\Python310\python.exe" setup.py install
避免使用pip install的原因:部分环境可能触发安装损坏等误报。
4.3 验证引擎安装
& "C:\Python310\python.exe" -c "import matlab.engine; print('OK')"
应输出OK。
安装simulink-mcp
5.1 PyPI包名说明
推荐从GitHub克隆后本地安装:
cd C:\Path\To\simulink-mcp
5.2 PowerShell pip调用语法
& "C:\Python310\python.exe" -m pip install .
5.3 分步安装建议
Remove-Item Env:HTTP_PROXY... -ErrorAction SilentlyContinue
cd "C:\Path\To\simulink-mcp"
& "C:\Python310\python.exe" -m pip install --upgrade pip setuptools wheel hatchling "mcp[cli]>=1.2.0" --index-url https://pypi.org/simple --trusted-host pypi.org --trusted-host files.pythonhosted.org
& "C:\Python310\python.exe" -m pip install . --no-build-isolation --index-url https://pypi.org/simple --trusted-host pypi.org --trusted-host files.pythonhosted.org
5.4 网络代理问题
若出现ProxyError或SSLError,可尝试:
- 关闭VPN并重试
- 清除环境变量中的代理设置
- 检查netsh winhttp代理配置
- 确认pip配置中未设置无效代理
5.5 与其他库共存提示
若该Python环境安装有TensorFlow、Streamlit等库,可能出现依赖冲突。建议为MCP单独创建venv环境。
Cursor MCP配置
6.1 工作目录环境变量
| 变量名 | 含义 |
|---|---|
| SIMULINK_MCP_WORKDIR | MATLAB引擎启动后cd的工作目录 |
建议设为专门存放.slx文件的文件夹,如F:/SimulinkModels。
6.2 用户级mcp.json示例
{
"mcpServers": {
"simulink": {
"command": "C:/Users/User/AppData/Local/Programs/Python/Python310/python.exe",
"args": ["-m", "simulink_mcp"],
"env": {
"SIMULINK_MCP_WORKDIR": "F:/SimulinkModels"
}
}
}
}
要点: - command必须使用与引擎安装相同的python.exe绝对路径 - 每个MCP服务器独立进程,仅修改simulink配置不影响其他服务 - 修改后需完全重启Cursor或重载窗口,确认simulink状态为绿色且工具数量匹配文档
自检清单
| 检查项 | 操作 |
|---|---|
| Python小版本 | python -V |
| 引擎验证 | python -c "import matlab.engine; print('OK')" |
| simulink-mcp | pip show simulink-mcp |
| 解释器一致性 | 检查mcp.json中command与上述路径是否一致 |
| 工作目录 | 确认SIMULINK_MCP_WORKDIR已设置且文件夹存在 |
| 许可 | 非商业用途符合PolyForm NC |
首次使用与排错
- 首次工具调用会触发MATLAB冷启动,请耐心等待
- MCP报错时查看Cursor日志,确认MATLAB进程是否存在
- 无效Simulink操作可能导致会话崩溃,可重启MCP
- 部分版本对PID等带mask模块有初始化要求
测试示例
前置条件:确认Cursor MCP中simulink已开启,工作目录下有.slx文件。在Agent模式且已启用Simulink MCP工具的窗口中,依次发送以下三段指令:
① 加载F:/SimulinkModels/1.slx(若不存在则加载当前目录任意.slx),列出search_depth=2的所有模块,并说明信号流关系
② 新建demo_pid_blocks模型,使用基础模块搭建并行PID控制器(禁用现成PID模块),要求包含Transfer Fcn、Step、Scope等组件
③ 调用simulate函数,获取仿真结果图像并分析阶跃响应特性
提示:首次调用可能触发15-20秒冷启动;若仅有文字无图像,检查是否接了Scope且return_figures设为true。
参考链接
- 仓库:https://github.com/sohumsuthar/simulink-mcp
- MCP协议:https://modelcontextprotocol.io
- MathWorks文档:搜索MATLAB Engine for Python与支持Python版本
