MCP 指南

Desktop Commander MCP:安装、远程模式与安全风险

Desktop Commander 让聊天应用拥有一个 shell 和你的文件。本文涵盖本地安装、能连通 ChatGPT 和 Claude 网页版的 Remote MCP 模式、允许目录和黑名单设置的真实作用、项目自己对其局限的说法,以及它与官方 filesystem MCP 服务器和 Claude Code 内置工具的对比。

A glowing line shifts from cyan to amber as it passes through a small glass cube on a dark desk, connecting a floating glass panel to a large screen and folders.
插图:一道光线穿过一个小玻璃立方体,把悬浮的面板与大屏幕和文件夹连在一起,这正是聊天客户端通过一个工具触达本地机器的样子。

简短回答

Desktop Commander 是一个 MCP 服务器,让 AI 客户端可以在你的电脑上读写文件、运行终端命令和长时间运行的进程,而它自己的安全策略明确说,内置的限制是护栏,不是沙箱。截至 2026 年 10 月 30 日,npm 的 latest 版本是 0.3.1,发布于 2026 年 10 月 22 日,采用 MIT 许可证。它可以在 Claude Desktop、Cursor、Codex 和 Claude Code 等 MCP 客户端内本地运行,也可以通过 Remote Device 让 ChatGPT 和 Claude 网页版调用你机器上的同一套工具。

实用建议很简短。把已连接的 AI 账号当作拥有你电脑的 shell,因为它确实有。用 allowedDirectories 和命令黑名单来避免意外,但不要指望它们挡住恶意提示。AI 不能触及机器其余部分的场景,请把 Desktop Commander 放进 Docker 或虚拟机运行,这也是 SECURITY.md 的建议。如果你只需要文件访问,官方 filesystem MCP 服务器的爆炸半径小得多;如果你用 Claude Code 写代码,也许根本不需要 Desktop Commander。

本指南依据项目的 README、SECURITY.md、PRIVACY.md、Remote MCP README、产品页面、GitHub 发布记录和 npm 注册表条目,以及 filesystem 服务器的 README 和 Claude Code 的权限与沙箱文档(用于对比)。我们没有为本文安装或运行 Desktop Commander,所以这里的一切都以文档为依据,文末的结论表标出了哪些是厂商自述。想搭建更完整的工具集,可以看我们的热门 MCP 服务器榜单和按任务划分的 Claude Code 最佳 MCP 服务器(英文)。

它授予什么访问权限

README 的工具表是对范围最清楚的说明。Desktop Commander 暴露配置工具(get_config、set_config_value)、终端工具(start_process、interact_with_process、read_process_output、force_terminate、list_sessions、list_processes、kill_process)、文件系统工具(read_file、read_multiple_files、write_file、write_pdf、create_directory、list_directory、move_file、start_search 及相关搜索调用、get_file_info)、文本编辑工具(edit_block)以及分析工具(get_usage_stats、get_recent_tool_calls、give_feedback_to_desktop_commander)。它还能读取 Excel、PDF 和 DOCX 文件,可以通过 read_file 抓取 URL,并能维持 SSH、数据库控制台和开发服务器等交互式会话。

有两个细节关系到风险。第一,终端工具不局限于某个项目文件夹:用 start_process 启动的进程以你的用户身份运行,带着你的环境变量,你的主目录、SSH 密钥和云凭据都在它够得着的范围内,除非操作系统拦住。第二,set_config_value 本身就是一个工具,所以本该被设置约束的客户端,也可以请求修改这些设置。README 承认了这一点,并建议用户在与实际工作不同的聊天里修改配置,因为助手遇到文件系统限制时可能会尝试修改 allowedDirectories。

能力涉及的工具能触及什么项目记录的边界
运行命令和程序start_process, interact_with_process, read_process_output你的用户账号能运行的任何东西命令黑名单,被描述为仅供参考
管理进程list_processes, kill_process, force_terminate, list_sessions你的用户能看到或发信号的任何进程除黑名单外没有记录
读写文件read_file, write_file, edit_block, move_file文件工具可访问 allowedDirectories 内的路径allowedDirectories,被描述为不是安全边界
搜索start_search, get_more_search_results名称和内容,包括 Excel 内容同样的允许目录检查
修改自身设置get_config, set_config_valueblockedCommands、allowedDirectories、defaultShell、限制项、遥测建议在单独的聊天里修改配置
查看历史get_recent_tool_calls最近的调用及其参数和有界输出本地文件;见日志一节

当前版本与发布节奏

npm 注册表把 latest 列为 0.3.1,发布于 2026 年 10 月 22 日 07:54 UTC,另有一个 alpha 标签指向 0.3.1-alpha.2。v0.3.1 的 GitHub 发布也是 10 月 22 日。0.3.0 在 10 月 13 日,在此之前的 0.2.x 系列分别在 9 月 29 日(0.2.52)和 9 月 17 日(0.2.51)有发布,所以这个包大约每一到三周发一版。0.3.1 的 npm 元数据列出 MIT 许可证、三个命令入口(setup、remove 和 desktop-commander)以及 34 个声明的依赖。早先的研究笔记指向 2026 年 3 月的 0.2.38;它已经不是当前版本。

发布说明显示了与安全相关的边界出现在哪里。0.3.0 包含题为“通过符号链接到达的允许目录仍然被允许”和“validatePath 检查悬空链接会写到哪里”的修复,一项“保留 Error 信息、整体脱敏路径”的遥测改动,一次依赖安全更新,以及一批 Remote 重连修复。0.3.1 在 Remote 启动时加入了 Desktop Commander 版本号,给远程终端输出加上了时间戳,并固定了一个 PDF 依赖的版本。这些都不能证明什么可利用性,但与项目自己的说法吻合:路径处理是一个仍在持续工程化的面,而不是已经封闭的。

安装前有一处差异值得核对。0.3.1 的 npm 元数据把 engines.node 声明为 22.12.0 或更高,而 Remote MCP README 说 Node.js 18 或更高,产品页面说 18.0.0 或更高。我们没有测试哪个是对的,所以请先运行 node --version,并优先使用较新的 Node 版本。

本地安装,一步步来

README 列出了 Claude Desktop 的六种安装路径,以及其他客户端通用的 JSON 条目。以下是大多数读者会用到的几种。

Claude Desktop

推荐的路径是 setup 命令,它会替你修改 Claude Desktop 的配置。完成后重启 Claude。

npx @wonderwhy-er/desktop-commander@latest setup

要手动完成同样的事,把下面这个条目加到 claude_desktop_config.json(macOS:~/Library/Application Support/Claude/,Windows:%APPDATA%\Claude\,Linux:~/.config/Claude/):

{
  "mcpServers": {
    "desktop-commander": {
      "command": "npx",
      "args": ["-y", "@wonderwhy-er/desktop-commander@latest"]
    }
  }
}

Claude Code、Codex 及其他客户端

README 为两个终端代理给出了一行命令。如果只想为当前项目安装,请去掉 Claude Code 命令中的 --scope user。

claude mcp add --scope user desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
codex mcp add desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest

Cursor、Windsurf、带 GitHub Copilot 的 VS Code、Cline、Roo Code、Trae、Kiro、JetBrains AI Assistant、Gemini CLI、Augment Code 和 Qwen Code,README 里都分别给出了同样的 JSON 条目或客户端专用命令。

在意供应链就固定版本

上面每条路径都用 @latest,README 还把它当作卖点:客户端每次重启,服务器就自动更新。对一个有 shell 权限的工具来说,这也意味着每次重启都可能拉取新代码。我们的建议(不是项目的建议)是把 @latest 换成你审阅过的确切版本,例如 @0.3.1,并有意识地去更新。README 给出的卸载命令是 npx @wonderwhy-er/desktop-commander@latest remove,它在修改前还会备份 Claude 的配置。

Docker,隔离的路径

README 的第 6 种方式把服务器放进容器里运行,并提供适用于 macOS、Linux 和 Windows PowerShell 的安装脚本。手动配置使用镜像 mcp/desktop-commander:latest,用 -v 挂载把文件夹暴露给它:

{
  "mcpServers": {
    "desktop-commander-in-docker": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/Users/username/Projects:/mnt/Projects",
        "mcp/desktop-commander:latest"
      ]
    }
  }
}

README 说这提供“完全隔离”和“对你的电脑零风险”,这是一条需要仔细阅读的厂商说法。隔离覆盖的是容器之外的宿主机,不覆盖你挂载进去的东西:把主目录以读写方式挂载,就等于把主目录交给了 AI。只挂载项目目录,AI 只需要读取时可以考虑加上只读标志,filesystem 服务器的 README 为它自己的 Docker 镜像记录了这种做法。

配置选项的实际作用

README 记录了六项设置,可用 get_config 读取,用 set_config_value 写入。产品页面还把允许目录、被阻止的命令和自定义 shell 列为可配置项。

设置README 说它做什么它不做什么
blockedCommands不能执行的 shell 命令数组按 SECURITY.md,可通过 shell 替换、绝对路径或另一个解释器绕过
allowedDirectories服务器在文件操作中可访问的文件系统路径数组终端命令仍可读取它之外的文件;空数组会让文件操作可访问整个文件系统
defaultShell执行命令所用的 shell,如 bash、zsh 或 powershell不是安全控制
fileReadLineLimit单次最多读取的行数,默认 1000不是安全控制
fileWriteLineLimit单次最多写入的行数,默认 50不是安全控制;被解释为迫使编辑更小的手段
telemetryEnabled开启或关闭遥测不影响本地日志

关键的是第二行。用 README 的话说,allowedDirectories“目前只限制文件系统操作,不限制终端命令”。文件工具被限制在 /Users/you/projects 的助手,仍然可以通过终端进程对别处的文件运行 cat。SECURITY.md 在一张表里说了同样的事:允许目录、命令黑名单和符号链接遍历防护,在“是否是安全边界”一列里都是“否”,只有 Docker 或虚拟机隔离是“是”。

README 还列出了容易被忽略的最佳实践:使用具体路径,而不是 / 这样宽泛的路径;修改后用 get_config 验证;把配置修改放在专门的聊天里。我们再补一条:首次使用前就把实际的列表写进配置,而不是沿用默认值,并且在助手遇到权限错误的任何会话之后重新读一遍。README 说配置保存在服务器工作目录下的 config.json,而 PRIVACY.md 把遥测设置指向 ~/.desktop-commander/config.json。我们没有核实你的安装实际用哪条路径,所以在依赖它之前先搜索一下这个文件。

面向 ChatGPT 和 Claude 网页版的 Remote MCP

本地 MCP 只能在能启动进程的桌面客户端里使用。Remote MCP 的存在,是为了让网页客户端也能触达同一套工具。产品页面把它宣传为“远程连接你的一台或多台设备”,并可从手机或任何浏览器控制电脑。它把 ChatGPT、Claude 网页版和 Cursor 列为远程路径支持的客户端,把 Claude Desktop 列为本地路径的客户端。

工作方式

Remote MCP README 把路径描述为:AI 客户端,然后是 Desktop Commander Remote MCP 服务,然后是你电脑上的 Remote Device,再然后是本地的 Desktop Commander 服务器。Remote Device 是一个本地进程,主动向外连接到该服务。命令在本地以你的用户账号执行,设备只有在运行并保持连接时才会收到调用。

安装

  1. 在你想控制的电脑上启动设备:npx @wonderwhy-er/desktop-commander@latest remote。如果 Desktop Commander 是全局安装的,等价写法是 desktop-commander remote。
  2. 完成 OAuth 设备授权流程。浏览器会打开一个验证页面;确认页面上显示的代码与终端里的一致,登录并授权该设备。
  3. 打开 mcp.desktopcommander.app,按照你所用 AI 客户端的连接说明操作。
  4. 保持终端运行。按 Ctrl+C 让这台机器下线。

第二步值得认真做。设备流程的设计,是让你比对两边的代码,这正是防止你批准别人发起的配对的保护措施。README 列出的前提是 Node.js 18 或更高、一个 Desktop Commander 账号,以及一个能连接远程服务的 AI 客户端。

凭据、停止与撤销

默认情况下,已认证的会话保存在 ~/.desktop-commander-device/device.json,重启时复用。在 POSIX 系统上,该文件以 0600 权限创建;在 Windows 上,README 说没有设置自定义的仅所有者 ACL,所以访问权限遵循普通的用户配置文件权限。以下操作作用各不相同,README 明确说停止不等于撤销:

操作效果本地凭据服务器端授权
Ctrl+C电脑下线,直到你重启设备保留保留
remote --logout删除这台电脑上保存的凭据已删除保留
在 Remote MCP 控制台撤销在服务器上使该设备授权失效本地可能仍存在已撤销
在 AI 客户端中移除连接器移除该客户端与 Remote MCP 的连接保留不变

要彻底重置,先在控制台撤销,再运行 remote --logout,然后重新配对。其他标志有 --no-persist-session(不保存也不复用凭据,所以每次启动都需要浏览器授权)、--disable-no-sleep 和 --debug。在 macOS 上,设备默认运行 caffeinate,让机器保持唤醒和可达,这很方便,但也意味着这台宿主机保持可用的时间比你想的更长。

风险图景有什么变化

本地 MCP 把你的 shell 暴露给你机器上的一个应用。Remote MCP 则通过第三方中继,把它暴露给你连接的每一个网页 AI 账号。SECURITY.md 和 Remote README 都直白地陈述了这个模型:已连接的 AI 客户端以及驱动它的账号被假定为可信,Desktop Commander 不会尝试区分真实的用户请求、提示注入和被攻陷的 AI 账号。我们的理解是,被盗的 ChatGPT 或 Claude 会话,或者助手被要求总结的恶意页面,只要设备在线,就会变成已配对机器上的一个 shell。SECURITY.md 的缓解措施不多但合理:为已连接的 AI 账号开启多因素认证,只连接你信任的客户端并移除不用的,把工作限定在项目目录,在上下文需要时审阅生成的命令。

文档没有说 Remote Device 能否在 Docker 或虚拟机内运行,所以我们不能保证这条路可行。SECURITY.md 的通用建议适用:对 AI 不得触及机器其余部分的工作负载,使用虚拟机、开发容器或单独的工作站,并配对那个环境,而不是你日常用的笔记本。关于对编码代理的远程访问,可参阅Claude Code Remote Control:设置、限制与修复和OpenAI 安全 MCP 隧道。

日志、遥测与保留期限

有三种不同的数据流容易混淆,项目对每一种都有说明。

数据存放位置包含什么说明
claude_tool_call.log你的机器,位于 ~/.claude-server-commander/每次调用的时间戳、工具名称和 JSON 参数参数不做脱敏,所以命令、路径和粘贴进命令的密钥都可能出现;达到 10 MB 时轮转,轮转后的文件不会自动删除
tool-history.jsonl你的机器,同一文件夹时间戳、工具、参数、耗时和结果内存中保留最近 1,000 次调用;每条记录的输出上限为 4 KiB;文件超过 5 MiB 时被裁剪
mcp_remote_callsRemote MCP 服务调用被路由期间的工具参数和结果终端记录在一分钟后即可删除,另有一小时兜底
遥测Google Analytics 4匿名 UUID、事件名称、操作系统、应用版本、客户端名称、文件扩展名和大小、基础命令名称默认开启;文档称不包含文件路径、文件内容和命令参数;保留 14 个月

由此得出两点。本地参数日志是 AI 要求你的电脑做了什么的明文记录,对审计有用,但如果其中含有你粘贴进命令的令牌,它就成了隐患。请把 ~/.claude-server-commander/ 视为敏感目录,把它从你会共享的备份中排除,并自己清理轮转后的文件。另外,远程保留期限的说明专指终端记录;README 没有给出经过该服务路由的文件读取结果的保留期限,所以请假定你通过 Remote MCP 读取的文件内容会经过它。

遥测是选择退出式的。PRIVACY.md 最后更新于 2025 年 12 月 11 日,列出了收集的字段,说明不收集文件路径、文件内容、命令参数、用户名或 IP 地址(Google Analytics 通过 HTTPS 接收 IP 地址,并在存储前匿名化),并给出两种关闭方式:让助手关闭,或在配置中设置 "telemetryEnabled": false 并重启。按 0.3.0 的发布说明,一项遥测修复保留了错误信息,同时对整个路径做了脱敏,这说明通过错误文本泄露路径曾经是个真实存在的问题。关闭遥测不会影响本地日志。

对比 filesystem MCP 与 Claude Code

Desktop Commander 的 README 说它建立在官方 MCP Filesystem Server 之上,并增加了搜索、编辑和终端能力。把这两者对比,再把两者与 Claude Code 自带的工具对比,可以看清你安装它时到底增加了什么。

问题Desktop CommanderFilesystem MCP 服务器Claude Code 内置工具
能否运行 shell 命令能,带交互式进程会话我们读到的工具列表里没有命令工具能,通过 Bash 和 PowerShell 工具
能否把文件访问限制在选定文件夹allowedDirectories 仅对文件工具有效;终端不受限允许目录以命令行参数传入;至少需要一个工作目录加上额外添加的目录;其他路径会提示确认
是否被记录为安全边界否;只是护栏,Docker 或虚拟机才是边界基于路径的检查;记录了带只读挂载的 Docker权限规则,以及针对 shell 命令的可选沙箱
行动前是否询问取决于宿主客户端的工具审批取决于宿主客户端手动模式下,Bash、Edit 和 MCP 工具都会询问
能否从网页聊天应用访问能,通过 Remote MCP按文档不能Remote Control 是另一个独立功能
额外格式Excel、PDF、DOCX、URL 读取文本和媒体读取读取文件和 notebook
数据是否离开本机可选遥测;Remote 服务中继调用我们读到的 README 中没有记录取决于你的模型提供商和设置

对比 filesystem 服务器

官方服务器是对一组固定文件夹进行读写访问的合适基线。它的 README 说服务器只能触及它的允许目录(以参数传入),并且至少需要一个。它还记录了一条局限,对任何基于路径的防护都是个有用的提醒:检查是基于路径的,所以位于允许目录内、但从别处硬链接过来的文件,可以通过允许目录里的那个名字被修改。它记录了在 Docker 中以只读方式挂载目录的做法。真正重要的对比是能力:我们读到的内容里,filesystem 服务器没有命令执行工具,所以针对它的提示注入可以读取并改写允许文件夹里的文件,却无法通过该服务器启动一个程序。用 Desktop Commander 就可以。

对比 Claude Code

Claude Code 自带 Bash、Read、Edit 和 Write 工具,按 deny、ask、allow 的顺序评估权限规则,在手动模式下会对 Bash、文件编辑和 MCP 工具发出提示。它的沙箱默认关闭,启用后会用操作系统层面的机制对 shell 命令及其子进程的文件和网络访问进行强制约束。这里最要紧的是沙箱文档里的一条:沙箱只覆盖 shell 命令,本地 MCP 服务器、hooks 和其他辅助进程都在沙箱之外,以你的完整权限运行。所以加到 Claude Code 里的 Desktop Commander 不在 Claude Code 的沙箱之内,它在受沙箱约束的 Bash 工具旁边,给了模型第二条 shell 路径。同一份文档还警告说,Bash 的 deny 规则匹配的是命令文本,所以 Bash(rm *) 拦不住 /bin/rm 或 bash -c;项目自己的黑名单有同样的结构性弱点,这就是为什么两种情况下的答案都是操作系统级隔离。

如果你在 Claude Code 里保留 Desktop Commander,可以用权限规则收窄它。MCP 工具名的形式是 mcp__server__tool,所以对于以 desktop-commander 添加的服务器,用户设置里的 deny 列表可以写成下面这样(规则语法依据 Claude Code 的权限页面;请在 /mcp 中核对你所用版本的工具名):

{
  "permissions": {
    "deny": [
      "mcp__desktop-commander__start_process",
      "mcp__desktop-commander__interact_with_process",
      "mcp__desktop-commander__kill_process",
      "mcp__desktop-commander__force_terminate",
      "mcp__desktop-commander__set_config_value"
    ]
  }
}

这样会保留文件和搜索工具,去掉终端和自我配置工具。Claude Code 的文档指出,含有括号的 MCP 规则会被跳过,所以请写完整的工具名或服务器通配符。到这一步,你得到的是一个更重的 filesystem 服务器,而对于单纯的文件访问,官方那个更简单。关于另一个工具里更安全的代理配置,请参阅Antigravity 危险命令与文件安全。

威胁模型

四种场景涵盖了大部分现实的暴露面。它们源自项目的文档;排序是我们的判断。

  • 通过助手读取的内容进行提示注入。网页、仓库文件、邮件或 PDF 含有指令,助手用 Desktop Commander 的工具照做。SECURITY.md 说这个工具无法区分注入与真实请求。爆炸半径就是你的用户账号能做的一切。
  • 被攻陷的 AI 账号或会话。这对 Remote MCP 最重要,因为网页账号就是已配对电脑的控制平面。该账号上的多因素认证是第一道防线。
  • 助手削弱自己的限制。因为配置是一个工具,助手可以放宽 allowedDirectories 或缩减黑名单,正如 README 所警告的。在客户端中拒绝该工具,或只在单独的聊天里修改配置。
  • 供应链与自动更新。@latest 模式会在重启时运行注册表当时提供的任何内容。最新元数据里该包声明了 34 个依赖。在持有凭据的机器上请固定版本。

普通的失误同样算数。README 自己收录的用户评价里就有一条建议:在让助手改动代码库之前,先暂存并提交,这无论护栏如何都是好习惯:使用版本控制,在分支上工作,把无法替代的文件放在允许文件夹之外。

加固清单

  1. 先决定是否真的需要 shell。如果任务只是读取和编辑文件,请使用 filesystem MCP 服务器或你的代理的内置工具。
  2. 先选边界。对不可信内容或无人值守的运行,使用 Docker 安装、开发容器或虚拟机,并且只挂载项目目录。SECURITY.md 把 Docker 和虚拟机隔离列为仅有的两种属于安全边界的控制。
  3. 设置明确的 allowedDirectories 并验证,在单独的聊天里用 get_config 检查。永远不要让列表留空。
  4. 把 blockedCommands 当作安全带。加入你不想被意外运行的破坏性命令,不要指望它挡住有决心的提示。
  5. 使用客户端侧的审批。对终端工具保持手动审批,在 Claude Code 中可以考虑拒绝 set_config_value 和进程工具。
  6. 固定 npm 版本,在任何持有生产凭据的机器上都如此,阅读发布说明后再更新。
  7. 让机密远离它。在没有云凭据和 SSH 密钥的账号下运行,或者使用专用机器。
  8. 对于 Remote MCP:为 AI 账号启用多因素认证,只配对你愿意暴露的机器,用完按 Ctrl+C,在共享机器上使用 --no-persist-session,淘汰电脑时在控制台撤销设备,因为单靠 --logout 不会撤销。
  9. 清理日志。检查 ~/.claude-server-commander/,删除轮转后的日志,并决定是否关闭遥测。
  10. 为撤销做准备。在会话之前提交,并对助手可写入的一切保留备份。

什么任务选什么配置

场景合理的起点原因
在 Claude Desktop 中编辑一个项目里的文件只设一个允许目录的 filesystem MCP 服务器没有 shell,爆炸半径最小
在 Claude Desktop 中运行构建、脚本和服务器在 Docker 中运行 Desktop Commander,并挂载项目获得终端工具,同时有真正的边界
在聊天中分析本地电子表格和 PDF本地运行 Desktop Commander,或在 Docker 中挂载数据文件夹Excel、PDF 和 DOCX 支持是独特的功能
用 Claude Code 或 Codex 写代码内置工具加沙箱已经有 shell、文件和权限规则
从 ChatGPT 或手机控制你自己的机器Remote MCP,开启多因素认证,共享硬件上不持久化会话产品的主要远程用例;要知道这个账号就是控制平面
无人值守或处理不可信内容的工作流虚拟机或专用工作站,不放个人凭据只有操作系统级隔离能约束恶意提示
存放生产机密的机器不要装在那里护栏拦不住终端对你主目录的访问

结论与证据对照表

结论来源状态
npm latest 是 0.3.1,发布于 2026 年 10 月 22 日npm 注册表 JSON;GitHub 发布记录2026 年 10 月 30 日已确认
MIT 许可证npm 元数据;README已确认
护栏不是沙箱SECURITY.md;README项目声明,两者一致
allowedDirectories 不限制终端命令README 配置警告项目声明;本文未测试
Docker 提供完全隔离README厂商说法;取决于你挂载什么
远程命令以你的用户权限在本地执行Remote README;README 安全说明项目声明;本文未测试
终端调用记录约一分钟后被清理README;Remote README项目声明;仅适用于终端记录
遥测不包含路径、文件内容和命令参数PRIVACY.md;README项目声明;未经独立审计
每周下载量 325k+产品页面厂商自报;未与 npm 统计核对
Node 18+ 与 Node 22.12+Remote README 和产品页面,对比 npm engines 字段来源不一致;未解决
Claude Code 沙箱不覆盖本地 MCP 服务器Claude Code 沙箱文档一手文档

局限

  • 我们没有安装或运行 Desktop Commander、Remote Device 或文中描述的任何设置。每一种行为都以 2026 年 10 月 30 日的文档为准,而项目发布频繁,所以依赖某个细节前请先查看 README。
  • 我们没有审计源码中 allowedDirectories、黑名单或路径校验是如何实现的,也没有尝试绕过。关于绕过的说法都是项目自己的。
  • 我们没有审查 Remote MCP 服务的基础设施,没有审查托管服务在 README 所述之外的隐私条款,也没有审查 Remote MCP 的任何定价。我们读到的页面里没有说明价格。
  • 配置文件的位置在 README 与 PRIVACY.md 之间不同,Node 版本要求在 npm 元数据与 README 之间不同。两者都未解决。
  • README 的 FAQ 说这个工具可以搭配 Claude Pro 订阅使用,而不必用 API 额度。我们没有核实 Claude、ChatGPT 或其他宿主客户端当前的套餐条款。
  • Claude Code 的对比使用 Anthropic 已发布的文档来说明规则行为,具体的 MCP 工具名取决于你安装的版本。

结论

Desktop Commander 做到了它所说的,而且项目对代价异常坦率。它是一个有特权的工具,它的设置只是参考性的,它认可的唯一边界,是你用 Docker 或虚拟机在它外面搭起来的那一层。这种坦率很有用,因为它告诉你力气该花在哪里:设置减少意外,隔离减少损害。

当你希望聊天应用运行真实的命令、处理电子表格和 PDF,或者远程操作你自己的电脑,并且接受已连接的 AI 账号被信任可以操作那台机器时,就用它。对任何无人值守的场景,请在容器中运行,只配对你愿意暴露的机器,固定版本,并把本地日志读一遍。当只读或限定文件夹的服务器就能完成任务时,就不要用它;在存放着你承受不起损失的凭据的电脑上,也不要用它。如果你在搭建更广泛的 MCP 工具集,可以拿它与我们的热门 MCP 服务器榜单里的选择对比,并阅读Antigravity 安全指南,了解代理式 IDE 中同样的取舍。

常见问题

Desktop Commander MCP 是什么?

Desktop Commander 是一个开源 MCP 服务器,以 @wonderwhy-er/desktop-commander 的名字发布在 npm 上,采用 MIT 许可证,让 AI 客户端可以在你的电脑上读写文件、搜索代码、运行终端命令和长时间运行的进程。截至 2026 年 10 月 30 日,npm 的 latest 标签是 0.3.1,发布于 2026 年 10 月 22 日。它既可以在 Claude Desktop、Cursor、Codex 等客户端中本地运行,也可以通过 Remote Device 供 ChatGPT 和 Claude 网页版等网页客户端使用。

Desktop Commander 用起来安全吗?

它的安全程度只取决于你对驱动它的 AI 客户端和账号有多信任。项目自己的 SECURITY.md 把它称为有特权的本地自动化工具,并说它的允许目录设置、命令黑名单和符号链接检查是防止意外的护栏,不是抵御恶意或被攻陷的客户端、提示注入的沙箱。需要更强的隔离时,项目建议用 Docker、虚拟机、开发容器或单独的工作站。

allowedDirectories 能阻止终端命令读取其他文件夹吗?

不能。README 写明 allowedDirectories 目前只限制文件系统操作,终端命令仍然可以访问允许目录之外的文件。它还警告说,空列表会让文件操作可以访问整个文件系统,而黑名单和目录限制可以通过符号链接、命令替换、绝对路径或其他解释器绕过。

如何在 ChatGPT 或 Claude 网页版中使用 Desktop Commander?

在你想控制的电脑上运行 npx @wonderwhy-er/desktop-commander@latest remote,完成基于浏览器的 OAuth 设备授权,然后在 mcp.desktopcommander.app 连接你的 AI 客户端。命令仍然在本地以你的用户账号执行,而且只有 Remote Device 进程运行期间才能到达这台机器。请求路径是 AI 客户端、Desktop Commander Remote MCP 服务、你的设备。

Remote MCP 会在服务器上存储我的命令和文件吗?

Remote MCP 服务会把工具参数和结果临时存放在名为 mcp_remote_calls 的表里,以便路由并完成调用。文档说终端调用的记录在完成后很快会被清理,一分钟后即可删除,另有一小时的兜底。我们没有找到非终端调用的保留期限说明,所以请把通过远程读取返回的文件内容视为经过了该服务。

Desktop Commander 与官方 filesystem MCP 服务器有什么不同?

参考实现的 filesystem 服务器只提供文件工具,范围限于你以命令行参数传入的目录,我们读到的工具列表里没有命令执行工具。Desktop Commander 建立在它之上,增加了终端执行、进程控制、Excel、PDF 和 DOCX 处理以及 Remote MCP。如果你只需要文件访问,filesystem 服务器的爆炸半径小得多。

我已经在用 Claude Code,还需要 Desktop Commander 吗?

写代码通常不需要。Claude Code 本身就有 Bash、Read、Edit 和 Write 工具以及权限系统,还有可选的、针对 shell 命令的操作系统级沙箱。这个沙箱不覆盖本地 MCP 服务器,所以加上 Desktop Commander 就多出一条沙箱管不到的 shell 路径。如果确实要加,请用 mcp__desktop-commander__ 规则拒绝你不想要的工具。

如何关闭遥测、退出登录和卸载?

遥测默认开启;在配置中把 telemetryEnabled 设为 false,或让助手帮你关闭。运行 remote --logout 可删除已保存的设备凭据,并在 Remote MCP 控制台撤销该设备,因为仅仅登出并不会撤销。运行 npx @wonderwhy-er/desktop-commander@latest remove 可从 Claude Desktop 配置中移除该服务器。

来源

来源核查于 2026 年 10 月 30 日。

相关阅读:热门 MCP 服务器、Claude Code 最佳 MCP 服务器(英文)、Claude Code Remote Control 指南、OpenAI 安全 MCP 隧道和Antigravity 安全指南。