3.5 Desktop Commander:终端与文件一把抓

它是什么

wonderwhy-er/DesktopCommanderMCP,约 10084 star,JavaScript,npm 包 @wonderwhy-er/desktop-commander(实测版本 0.3.0)。

官方描述:This is MCP server for Claude that gives it terminal control(给 Claude 终端控制能力的 MCP 服务器)。在 2026 年 3 月搜索量榜单排第 49(约 1.9k/月)。

它把“在终端跑命令”和“在文件系统做精细编辑”打包成一个桌面级工具箱,定位介于 dsh 自带 Bash 和 filesystem MCP 之间,但操作范围更大。

它和 dsh 自带 Bash 的分工

这是本章最需要讲清的一个。dsh 已经有 Bash 和文件系统,为什么还要它?

维度 dsh 自带 Bash Desktop Commander
审批 dsh 的权限体系 服务端自身策略
跨工具复用 ❌ ✅
长时任务 受会话约束 可后台管理
文件编辑 有 增强(批量、精确替换)
适用 当前工作区 桌面级操作

实务建议:日常用 dsh 自带(审批体系更完整),把 Desktop Commander 留给“需要跨工具复用同一套桌面操作”或“dsh 自带受限”的场景。

安装与配置

npm install --global @wonderwhy-er/desktop-commander
- insert:
    - id: desktop-commander
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: desktop_commander
        transport: stdio
        command: npx
        args: ["-y", "@wonderwhy-er/desktop-commander"]
        cwd: !!js process.cwd()

serverName 用 desktop_commander,工具前缀为 mcp__desktop_commander__...。

典型用法

批量文件处理:

用 desktop-commander 把 ~/Downloads 里超过 30 天未修改的 .zip
按年月移动到 ~/Archive/ 下,先列清单不要动。

长时任务:

用 desktop-commander 在后台启动数据导入脚本,
每 30 秒报告一次进度,完成后汇总结果。

精确替换:

用 desktop-commander 在 ~/projects/api 下所有 .ts 文件里
把旧函数名 oldName 替换为 newName,列出改动的文件与行号。

跨目录检索:

用 desktop-commander 在整个 ~/projects 下搜索调用了 deprecatedFn 的文件,
返回路径、行号与匹配行。

一条安全警告

这个服务器的能力范围是桌面级的,比工作区级大得多。三条纪律:

纪律 原因
明确限定可操作目录 否则它能碰到你整个 home
删除类操作必须人工确认 没有回收站可回
不要和 filesystem MCP 同时开大范围 两个大范围叠加,约束形同虚设

换句话说:它方便,但“方便”来自“范围大”。用它的前提是你清楚自己把多大权限交了出去。

排错

现象 原因
命令不执行 服务器策略限制或权限不足
找不到文件 路径写法(需绝对路径)
后台任务没输出 输出被缓冲,加 flush 或看日志文件

和 filesystem / Playwright 的关系

  • 要安全的文件读写边界 → 用 2.1 filesystem;
  • 要稳定的浏览器自动化 → 用 3.1 Playwright;
  • 要桌面级的终端 + 批量文件操作 → 才是 Desktop Commander 的用武之地。

三者能力有重叠,但权限边界和适用层级不同,按“需要多大范围”选。

小结

  • Desktop Commander 提供终端控制与文件管理,约 10k star。
  • 日常优先用 dsh 自带 Bash;它留给跨工具复用与桌面级操作。
  • 能力范围是桌面级,务必限定目录、删除必确认。

延伸阅读