Claude Desktop Commander MCP

by wonderwhy-er
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

桌面指挥官 MCP

使用 AI 搜索、更新、管理文件并运行终端命令

简短版本。四个关键点:终端命令、基于 diff 的文件编辑、基于 ripgrep 的文件夹文本搜索、从 URL 读取文件的能力

目录

这是允许 Claude 桌面应用程序在您的计算机上执行长时间运行的终端命令并通过模型上下文协议 (MCP) 管理进程的服务器 + 建立在MCP 文件系统服务器之上,以提供额外的搜索和替换文件编辑功能。

特征

  • 使用输出流执行终端命令
  • 命令超时和后台执行支持
  • 进程管理(列出和终止进程)
  • 长时间运行命令的会话管理
  • 服务器配置管理:
    • 获取/设置配置值
    • 一次更新多个设置
    • 无需重启服务器即可动态更改配置
  • 完整的文件系统操作:
    • 读/写文件
    • 创建/列出目录
    • 移动文件/目录
    • 搜索文件
    • 获取文件元数据
    • 代码编辑功能:
    • 外科手术文本替换的小改动
    • 针对重大变更进行完整文件重写
    • 多文件支持
    • 基于模式的替换
    • 基于 vscode-ripgrep 的文件夹中的递归代码或文本搜索

安装

首先,确保您已经下载并安装了Claude Desktop 应用程序,并且已经安装了 npm

选项 1:通过 npx 安装

只需在终端中运行此命令

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

对于调试模式(允许 Node.js 检查器连接):

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

如果正在运行,请重新启动 Claude

选项 2:使用 bash 脚本安装程序(macOS)

对于 macOS 用户,您可以使用我们的自动 bash 安装程序,它将检查您的 Node.js 版本,根据需要安装它,并自动配置 Desktop Commander:

curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bash

该脚本自动处理所有依赖项和配置,以实现无缝的安装体验。

选项 3:通过 Smithery 安装

要通过Smithery自动为 Claude Desktop 安装 Desktop Commander:

npx -y @smithery/cli install @wonderwhy-er/desktop-commander --client claude

选项 4:手动添加到 claude_desktop_config

将此条目添加到您的 claude_desktop_config.json:

  • 在 Mac 上: ~/Library/Application\ Support/Claude/claude_desktop_config.json
  • 在 Windows 上: %APPDATA%\Claude\claude_desktop_config.json
  • 在 Linux 上: ~/.config/Claude/claude_desktop_config.json
{ "mcpServers": { "desktop-commander": { "command": "npx", "args": [ "-y", "@wonderwhy-er/desktop-commander" ] } } }

如果正在运行,请重新启动 Claude

选项 5:本地结账

  1. 克隆并构建:
git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git cd DesktopCommanderMCP npm run setup

如果正在运行,请重新启动 Claude

安装命令将:

  • 安装依赖项
  • 构建服务器
  • 配置 Claude 的桌面应用程序
  • 如果需要,将 MCP 服务器添加到 Claude 的配置中

更新桌面指挥官

通过 npx(选项 1)或 Smithery(选项 2)安装后,Desktop Commander 会在您重启 Claude 时自动更新到最新版本。无需手动更新。

对于手动安装,您可以通过再次运行安装命令进行更新。

用法

该服务器提供了一套全面的工具,分为以下几类:

可用工具

类别工具描述
配置get_config获取完整的服务器配置 JSON(包括 blockedCommands、defaultShell、allowedDirectories)
set_config_value通过键设置特定的配置值。可用设置:• blockedCommands :无法执行的 Shell 命令数组 • defaultShell :用于执行命令的 Shell(例如,bash、zsh、powershell) • allowedDirectories :服务器可以访问的文件系统路径数组(⚠️ 终端命令仍然可以访问这些目录之外的文件)
终端execute_command执行具有可配置超时和 shell 选择的终端命令
read_output从正在运行的终端会话中读取新输出
force_terminate强制终止正在运行的终端会话
list_sessions列出所有活动的终端会话
list_processes列出所有正在运行的进程及其详细信息
kill_process通过PID终止正在运行的进程
文件系统read_file从本地文件系统或 URL 读取内容(支持文本和图像)
read_multiple_files同时读取多个文件
write_file完全替换文件内容(最适合大更改)
create_directory创建新目录或确保其存在
list_directory获取文件和目录的详细列表
move_file移动或重命名文件和目录
search_files使用不区分大小写的子字符串匹配按名称查找文件
search_code使用 ripgrep 在文件内容中搜索文本/代码模式
get_file_info检索有关文件或目录的详细元数据
文本编辑edit_block应用外科文本替换(最适合文件大小<20%的更改)

工具使用示例

搜索/替换块格式:

filepath.ext <<<<<<< SEARCH content to find ======= new content >>>>>>> REPLACE

例子:

src/main.js <<<<<<< SEARCH console.log("old message"); ======= console.log("new message"); >>>>>>> REPLACE

URL 支持

  • read_file现在可以从本地文件和 URL 获取内容
  • 示例:使用isUrl: true参数的read_file从 Web 资源读取
  • 处理来自远程源的文本和图像内容
  • 图像(本地或来自 URL)在 Claude 的界面中以视觉方式显示,而不是以文本形式显示
  • 克劳德可以看到并分析实际图像内容
  • URL 请求的默认超时时间为 30 秒

处理长时间运行的命令

对于可能需要一段时间的命令:

配置管理

⚠️ 重要安全警告

  1. 请务必在与实际工作不同的聊天窗口中更改配置。如果 Claude 在运行过程中遇到文件系统访问限制,它有时可能会尝试修改配置设置(例如allowedDirectories )。
  2. 目前, allowedDirectories设置仅限制文件系统操作,而不限制终端命令。终端命令仍然可以访问允许目录之外的文件。完整的终端沙盒功能正在规划中。

配置工具

您可以使用提供的工具管理服务器配置:

// Get the entire config get_config({}) // Set a specific config value set_config_value({ "key": "defaultShell", "value": "/bin/zsh" }) // Set multiple config values using separate calls set_config_value({ "key": "defaultShell", "value": "/bin/bash" }) set_config_value({ "key": "allowedDirectories", "value": ["/Users/username/projects"] })

配置保存到服务器工作目录中的config.json ,并在服务器重启后仍然存在。

最佳实践

  1. 为配置更改创建专用聊天:在一次聊天中进行所有配置更改,然后为实际工作开始新的聊天。
  2. 小心使用空的allowedDirectories :将其设置为空数组( [] )将授予对整个文件系统的文件操作访问权限。
  3. 使用特定路径:不要使用像/这样的宽路径,而是指定您想要访问的确切目录。
  4. 更改后始终验证配置:使用get_config({})确认您的更改已正确应用。

使用不同的 Shell

您可以指定使用哪个 shell 来执行命令:

// Using default shell (bash or system default) execute_command({ "command": "echo $SHELL" }) // Using zsh specifically execute_command({ "command": "echo $SHELL", "shell": "/bin/zsh" }) // Using bash specifically execute_command({ "command": "echo $SHELL", "shell": "/bin/bash" })

这使得您可以使用特定于 shell 的功能或在命令之间保持一致的环境。

  1. 超时后, execute_command返回初始输出
  2. 命令在后台继续
  3. 使用read_output和 PID 来获取新的输出
  4. 如果需要,使用force_terminate停止

调试

如果需要调试服务器,可以以调试模式安装:

# Using npx npx @wonderwhy-er/desktop-commander@latest setup --debug # Or if installed locally npm run setup:debug

这将:

  1. 配置 Claude 使用单独的“desktop-commander”服务器
  2. 使用--inspect-brk=9229标志启用 Node.js 检查器协议
  3. 在开始时暂停执行,直到调试器连接
  4. 启用额外的调试环境变量

连接调试器:

  • 在 Chrome 中,访问chrome://inspect并查找 Node.js 实例
  • 在 VS Code 中,使用“附加到节点进程”调试配置
  • 其他 IDE/工具可能有类似的用于 Node.js 调试的“附加”选项

重要调试说明:

  • 服务器将在启动时暂停,直到调试器连接(由于--inspect-brk标志)
  • 如果在调试期间没有看到活动,请确保您连接到正确的 Node.js 进程
  • 可能有多个 Node 进程正在运行;连接到端口 9229 上的进程
  • 在 Claude 的 MCP 服务器列表中,调试服务器被标识为“desktop-commander-debug”

故障排除:

  • 如果 Claude 在尝试使用调试服务器时超时,则您的调试器可能未正确连接
  • 正确连接后,进程将在到达第一个断点后继续执行
  • 连接后,您可以在 IDE 中添加其他断点

模型上下文协议集成

该项目扩展了 MCP 文件系统服务器以实现:

  • Claude Desktop 中的本地服务器支持
  • 完整系统命令执行
  • 流程管理
  • 文件操作
  • 使用搜索/替换块进行代码编辑

作为探索 Claude MCP 的一部分而创建: https://youtube.com/live/TlbjFDbl5Us

完毕

  • 2025 年 4 月 16 日 更好的配置- 改进了允许的路径、命令和 shell 环境的设置
  • 2025 年 4 月 14 日 Windows 环境修复- 解决了特定于 Windows 平台的问题
  • 2025 年 4 月 14 日 Linux 改进- 增强与各种 Linux 发行版的兼容性
  • 2025 年 12 月 4 日 更完善的允许目录和阻止命令- 改进了文件读写和终端命令限制的安全性和路径验证。终端仍然可以访问文件,而无需考虑允许的目录。
  • 2025 年 11 月 4 日 Shell 配置- 增加了配置用于命令执行的首选 Shell 的功能
  • 2025 年 7 月 4 日添加了 URL 支持- read_file命令现在可以从 URL 获取内容
  • 2025 年 3 月 28 日修复了“Watching /” JSON 错误- 实现了自定义 stdio 传输来处理非 JSON 消息并防止服务器崩溃
  • 2025 年 3 月 25 日 更好的代码搜索已合并) - 通过上下文感知结果增强代码探索

正在进行的工作和待办事项

目前正在探索以下功能:

  • 支持 WSL - Windows Subsystem for Linux 集成
  • 支持 SSH - 远程服务器命令执行
  • 更好的文件支持,例如 csv/pdf
  • 为 Mac/Linux/Windows 提供终端沙盒以提高安全性
  • 文件读取模式- 例如允许将 html 读取为纯文本或 markdown

网站

访问我们的官方网站https://desktopcommander.app/获取最新信息、文档和更新。

媒体

通过以下资源了解有关该项目的更多信息:

文章

带有 MCP 的 Claude 取代了 Cursor 和 Windsurf。这是怎么发生的? ——详细探讨了带有模型上下文协议功能的 Claude 如何改变开发人员的工作流程。

视频

Claude Desktop Commander 视频教程- 观看如何有效设置和使用 Commander。

AnalyticsIndiaMag 上发表的论文

这位开发人员放弃了 Windsurf 和 Cursor,转而使用 Claude 和 MCP

社区

加入我们的Discord 服务器以获取帮助、分享反馈并与其他用户联系。

评价

https://www.youtube.com/watch?v=ly3bed99Dy8&lc=UgyyBt6_ShdDX_rIOad4AaABAg

https://www.youtube.com/watch?v=ly3bed99Dy8&lc=UgztdHvDMqTb9jiqnf54AaABAg

https://www.youtube.com/watch?v=ly3bed99Dy8&lc=UgyQFTmYLJ4VBwIlmql4AaABAg

https://www.youtube.com/watch?v=ly3bed99Dy8&lc=Ugy4-exy166_Ma7TH-h4AaABAg

https://medium.com/@pharmx/you-sir-are-my-hero-62cff5836a3e

贡献

如果您觉得这个项目有用,请考虑在 GitHub 上点个⭐!这有助于其他人发现这个项目,并鼓励进一步开发。

我们欢迎社区的贡献!无论您是发现了错误、提出了功能请求,还是想贡献代码,都可以通过以下方式提供帮助:

  • **发现 bug 了?**请在github.com/wonderwhy-er/DesktopCommanderMCP/issues提交问题
  • **有功能创意?**请在问题版块提交功能请求
  • **想要贡献代码?**分叉代码库,创建分支,然后提交拉取请求
  • **有问题或想讨论?**请在 GitHub 讨论选项卡中发起讨论

所有的贡献,无论大小,都非常感谢!

如果您发现此工具对您的工作流程有价值,请考虑支持该项目

常见问题

以下是一些常见问题的解答。如需更全面的常见问题解答,请参阅我们详细的常见问题解答文档

什么是 DesktopCommanderMCP?

它是一个 MCP 工具,使 Claude Desktop 能够访问您的文件系统和终端,将 Claude 变成一个多功能的编码、自动化、代码库探索等助手。

这与 Cursor/Windsurf 有何不同?

与专注于 IDE 的工具不同,Claude Desktop Commander 提供了一种以解决方案为中心的方法,它兼容整个操作系统,而不仅仅是在编码环境中。Claude 会完整读取文件,而不是将其分块,可以同时处理多个项目,并且可以一次性执行更改,而无需不断进行审查。

我需要支付 API 积分吗?

不。此工具与 Claude Desktop 的标准 Pro 订阅(每月 20 美元)兼容,而不是与 API 调用兼容,因此您不会产生订阅费以外的额外费用。

Desktop Commander 会自动更新吗?

是的,通过 npx 或 Smithery 安装后,Desktop Commander 会在您重启 Claude 时自动更新到最新版本。无需手动更新。

最常见的用例有哪些?

  • 探索和理解复杂的代码库
  • 生成图表和文档
  • 在整个系统中自动执行任务
  • 同时处理多个项目
  • 通过精确控制进行手术代码更改

我在安装或使用该工具时遇到了问题。我该如何获得帮助?

加入我们的Discord 服务器获取社区支持,查看GitHub Issues了解已知问题,或查看完整的常见问题解答获取故障排除技巧。您还可以访问我们网站的常见问题解答部分,获得更便捷的用户体验。如果您遇到新问题,请考虑创建 GitHub Issue并详细说明您的问题。

数据收集

在安装和设置过程中,Desktop Commander 会收集匿名使用数据,以帮助改进该工具。这些数据包括:

  • 操作系统信息
  • Node.js 和 NPM 版本
  • 安装方法和shell环境
  • 错误消息(如果在安装过程中出现)

这些数据由 Google Analytics(分析)收集,并与机器生成的唯一 ID 关联。不会收集任何个人信息。这有助于我们了解该工具的使用情况并识别常见问题。

我们目前正在努力在即将发布的版本中添加内置的退出选项,以阻止此类数据收集。目前,如果您希望退出,可以在防火墙设置中阻止与google-analytics.com的网络连接。

执照

麻省理工学院

ID: zempur9oh4