dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
把 MathWorks MATLAB/Simulink MCP 服务器注册进 dsh profile,让会话获得 mcp__matlab__* 工具,用于运行 MATLAB 代码以及读取、编辑与测试 Simulink 模型。
DeepSeek Harness (dsh) profile bundle that registers the MathWorks
MATLAB/Simulink MCP server into the dsh GUI, so agent sessions get native
mcp__matlab__* tools for controlling MATLAB and reading/building/testing
Simulink models.
| Kind | Tool name (in agent sessions) | What it does |
|---|---|---|
| MATLAB | mcp__matlab__evaluate_matlab_code | Run any MATLAB code in the shared session |
| MATLAB | mcp__matlab__run_matlab_file / run_matlab_test_file | Run a script / run unit tests |
| MATLAB | mcp__matlab__check_matlab_code | Static Code Analyzer warnings for a .m file |
| MATLAB | mcp__matlab__detect_matlab_toolboxes | MATLAB version + installed toolboxes |
| Simulink | mcp__matlab__model_overview | Hierarchical model view |
| Simulink | mcp__matlab__model_read | Block topology + expression notation |
| Simulink | mcp__matlab__model_edit | Structural edits / parameter changes |
| Simulink | mcp__matlab__model_check | Structural validation (unconnected ports, …) |
| Simulink | mcp__matlab__model_query_params | Random access to any block/config parameter |
| Simulink | mcp__matlab__model_resolve_params | Resolve workspace variables to values |
| Simulink | mcp__matlab__model_test | Gherkin-based behavioral tests (needs Simulink Test) |
model_* tools), with
Simulink installed.setupAgenticToolkit("install")
(select MATLAB + Simulink toolkits). Manual download is documented in the
Simulink Agentic Toolkit
getting-started guide.dsh plugin): npm install -g pnpmdsh), or npx (the installer falls back to
npx -y @deepseek-ai/dsh).git clone https://github.com/<your-account>/dsh-matlab-mcp.git
cd dsh-matlab-mcp
# Windows:
.\install.ps1
# macOS / Linux:
./install.sh
dsh plugin --profile web add github:<your-account>/dsh-matlab-mcp
Append this to ~/.dsh/profiles/web/cordis.patch.yml (create the file with
content [] if missing), then restart the GUI:
- insert:
- id: mcp-matlab
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: matlab
transport: stdio
command: !!js "(process.env.USERPROFILE || process.env.HOME) + '/.matlab/agentic-toolkits/bin/matlab-mcp-server' + (process.platform === 'win32' ? '.exe' : '')"
args: !!js "['--matlab-session-mode=existing', '--extension-file=' + (process.env.USERPROFILE || process.env.HOME) + '/.matlab/agentic-toolkits/simulink/tools/tools.json']"
env:
WINDIR: 'C:\Windows'
toolCallTimeoutMs: 600000
failOnStartupError: true
New rows in a patch file must be added with an
insertlist without anid. A bareidtargets an existing entry and fails withentry "xxx" not found.
--matlab-session-mode=existing), it does not start MATLAB.addpath('~/.matlab/agentic-toolkits/simulink') % Windows: use C:\Users\<you>\.matlab\...
satk_initialize
After a GUI restart, ask the agent:
What version of MATLAB is running? List the installed toolboxes.
It should answer via mcp__matlab__detect_matlab_toolboxes. For Simulink:
Show me an overview of model MyModel.
| Symptom | Fix |
|---|---|
No mcp__matlab__* tools in the session | GUI wasn't restarted after install; or failOnStartupError would have logged a loud error — check the GUI host console |
| Tools exist but calls fail / "not shared" | Run addpath('~/.matlab/agentic-toolkits/simulink'); satk_initialize in the running MATLAB session |
matlab-mcp-server binary missing | Install the MATLAB Agentic Toolkit (setupAgenticToolkit("install")) |
| MATLAB version mismatch | The server attaches to whatever MATLAB is running; use the MATLAB you want to control |
| Tool calls time out on long simulations | Increase toolCallTimeoutMs (default 600000 = 10 min) in cordis.patch.yml |
| Simulink fails on Windows | WINDIR env var is injected by this bundle (required on Windows) |
dsh plugin --profile web remove dsh-matlab-mcp
@deepseek-ai/dsh-mcp-client shipped with DeepSeek Harness.!!js expressions, so
no per-machine editing is needed (Windows, macOS, Linux).MIT