关于 Desktop Commander
Desktop Commander 是一个 MCP 服务,让 AI 客户端操作本地文件、运行终端命令并管理进程。它在文件系统访问基础上加入搜索与替换编辑,也支持文档、表格、数据分析和远程客户端。
主要功能
- 01读取、写入、搜索和移动文件
- 02运行命令并管理进程
- 03搜索并替换代码或文本
- 04处理 Excel、PDF 和 DOCX 文件
- 05分析 CSV、JSON 和 Excel 数据
- 06本地工具调用历史与审计日志
适用场景
- 01通过 AI 客户端搜索和编辑项目文件
- 02运行长时间开发命令并查看输出
- 03读取或修改表格与文档文件
- 04分析本地 CSV 或 JSON 数据
MCP 相关
向 MCP 客户端提供终端、进程、文件系统、编辑和文档处理工具。支持本地客户端和远程 MCP 访问。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Desktop Commander MCP
使用 AI 搜索、更新和管理文件,并运行终端命令
处理代码和文本、运行进程并自动化任务,功能远超其他 AI 编辑器,同时使用宿主客户端订阅,而非支付 API 令牌费用。
目录
所有 AI 开发工具,尽在一处。 Desktop Commander 将所有开发工具整合到一个聊天中。 通过模型上下文协议(MCP)在你的计算机上执行长时间运行的终端命令并管理进程。它基于 MCP Filesystem Server 构建,提供额外的文件搜索和替换编辑功能。
功能
- 远程 AI 控制 - 通过 Remote MCP,在 ChatGPT、Claude 网页版和其他 AI 服务中使用 Desktop Commander
- 文件预览界面 - 在 Claude Desktop 中直观预览文件,支持渲染后的 Markdown、内嵌图片、可展开内容、内置 Markdown 编辑器,以及快速“在文件夹中打开”功能
- 增强的终端命令,支持交互式进程控制
- 在内存中执行代码(Python、Node.js、R),无需保存文件
- 即时数据分析 - 只需询问即可分析 CSV/JSON/Excel 文件
- 原生 Excel 文件支持 - 无需外部工具即可读取、写入、编辑和搜索 Excel 文件(.xlsx、.xls、.xlsm)
- PDF 支持 - 读取 PDF、从 Markdown 创建新 PDF、修改现有 PDF
- DOCX 支持 - 读取、创建、编辑和搜索 Word 文档(.docx),支持精确 XML 编辑和 Markdown 转 DOCX
- 与正在运行的进程交互(SSH、数据库、开发服务器)
- 执行终端命令并流式输出结果
- 支持命令超时和后台执行
- 进程管理(列出和终止进程)
- 长时间运行命令的会话管理
- 进程输出分页 - 通过偏移量/长度控制读取终端输出,防止上下文溢出
- 服务配置管理:
- 获取/设置配置值
- 一次更新多项设置
- 无需重启服务即可动态更改配置
- 完整的文件系统操作:
- 读取/写入文件(文本、Excel、PDF、DOCX)
- 创建/列出目录
- 递归列出目录,可配置深度,并防止大型文件夹导致上下文溢出
- 移动文件/目录
- 搜索文件和内容(包括 Excel 内容)
- 获取文件元数据
- 负偏移量读取文件:使用负偏移量从文件末尾读取(类似 Unix tail)
- 代码编辑功能:
- 对小幅更改进行精准文本替换
- 对重大更改进行完整文件重写
- 支持多个文件
- 基于模式的替换
- 基于 vscode-ripgrep,在文件夹中递归搜索代码或文本
- 本地工具调用历史记录和审计日志:
- 在运行 Desktop Commander 的机器上本地记录工具调用及其参数
- 可通过
get_recent_tool_calls查看带有长度限制的输出预览及近期调用历史 - 基于大小的轮转/裁剪可限制活动历史文件的大小
- 安全防护(并非沙箱 — 请参阅 SECURITY.md):
- 防止文件操作遍历符号链接
- 防止意外执行的命令阻止列表
- 通过 Docker 隔离实现完全隔离
安装方法
对于 ChatGPT、Claude 网页版和其他远程客户端,请参阅远程设备启动器。如果缺少 Node.js,启动器会自动安装,并在 macOS、Linux 或 Windows 上运行 Desktop Commander Remote。
在 Claude Desktop 中安装
Desktop Commander 为 Claude Desktop 提供多种安装方式。
**📋 更新与卸载信息:**选项 1、2、3、4 和 6 支持自动更新。选项 5 需要手动更新。详情见下文。
选项 1:通过 npx 安装 ⭐ 自动更新(需要 Node.js)
在终端中运行:
npx @wonderwhy-er/desktop-commander@latest setup
调试模式(允许 Node.js 检查器连接):
npx @wonderwhy-er/desktop-commander@latest setup --debug
安装时的命令行选项:
--debug:启用 Node.js 检查器调试模式--no-onboarding:为新用户禁用引导提示
如果 Claude 正在运行,请重启。
**✅ 自动更新:**支持 - 重启 Claude 时自动更新
**🔄 手动更新:**再次运行安装命令
**🗑️ 卸载:**运行 npx @wonderwhy-er/desktop-commander@latest remove
选项 2:使用 bash 脚本安装程序(macOS)⭐ 自动更新(需要时会安装 Node.js)
curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bash
此脚本会自动处理所有依赖项和配置。
✅ 自动更新: 是
🔄 手动更新: 重新运行上面的 bash 安装命令
🗑️ 卸载: 运行 npx @wonderwhy-er/desktop-commander@latest remove
选项 3:通过 Smithery 安装 ⭐ 自动更新(需要 Node.js)
- 访问: https://smithery.ai/server/@wonderwhy-er/desktop-commander
- 登录 Smithery(如果尚未登录)
- 在右侧选择客户端(Claude Desktop)
- 使用选择客户端后显示的密钥进行安装
- 重启 Claude Desktop
✅ 自动更新: 是 — 重启 Claude 时会自动更新
🔄 手动更新: 访问 Smithery 页面并重新安装
选项 4:手动添加到 claude_desktop_config ⭐ 自动更新(需要 Node.js)
将此条目添加到 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@latest"
]
}
}
}
如果 Claude 正在运行,请将其重启。
✅ 自动更新: 是 — 重启 Claude 时会自动更新
🔄 手动更新: 再次运行设置命令
🗑️ 卸载: 运行 npx @wonderwhy-er/desktop-commander@latest remove,或从 claude_desktop_config.json 中移除该条目
选项 5:本地检出 ❌ 手动更新(需要 Node.js)
git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git
cd DesktopCommanderMCP
npm run setup
如果 Claude 正在运行,请将其重启。
设置命令会安装依赖项、构建服务,并配置 Claude 桌面应用。
❌ 自动更新: 否 — 需要手动更新 git
🔄 手动更新: cd DesktopCommanderMCP && git pull && npm run setup
🗑️ 卸载: 运行 npx @wonderwhy-er/desktop-commander@latest remove,或移除克隆的目录以及 Claude 配置中的 MCP 服务条目
选项 6:Docker 安装 🐳 ⭐ 自动更新(无需 Node.js)
适合希望隔离运行,或未安装 Node.js 的用户。它会在带有持久化工作环境的沙盒 Docker 容器中运行。
前提条件: 已安装并正在运行 Docker Desktop,并已安装 Claude Desktop 应用。
macOS/Linux:
bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh)
Windows PowerShell:
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'))
安装程序会检查 Docker、拉取镜像、提示挂载文件夹,并配置 Claude Desktop。
Docker 持久化: 您的工具、配置、工作文件和软件包缓存都会在重启后保留。
Docker 手动配置
基本设置(无文件访问权限):
{
"mcpServers": {
"desktop-commander-in-docker": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/desktop-commander:latest"]
}
}
}
挂载文件夹:
{
"mcpServers": {
"desktop-commander-in-docker": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/Users/username/Desktop:/mnt/desktop",
"-v", "/Users/username/Documents:/mnt/documents",
"mcp/desktop-commander:latest"
]
}
}
}
高级文件夹挂载:
{
"mcpServers": {
"desktop-commander-in-docker": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "dc-system:/usr",
"-v", "dc-home:/root",
"-v", "dc-workspace:/workspace",
"-v", "dc-packages:/var",
"-v", "/Users/username/Projects:/mnt/Projects",
"-v", "/Users/username/Downloads:/mnt/Downloads",
"mcp/desktop-commander:latest"
]
}
}
}
Docker 管理命令
macOS/Linux:
# Check status
bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --status
# Reset all persistent data
bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --reset
Windows PowerShell:
# Check status
$script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Status
# Reset all data
$script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Reset
# Show help
$script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Help
故障排除: 从头重置并重新安装:
bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --reset && bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh)
✅ 自动更新: 是 — latest 标签会自动获取较新版本
🔄 手动更新: 运行 docker pull mcp/desktop-commander:latest,然后重启 Claude
在其他客户端中安装
Desktop Commander 适用于任何兼容 MCP 的客户端。标准 JSON 配置如下:
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": ["-y", "@wonderwhy-er/desktop-commander@latest"]
}
}
}
将此配置添加到以下位置的客户端 MCP 配置文件中:
Windsurf
添加到 `~/.codeium/windsurf/mcp_config.json`。更多信息请参阅 [Windsurf MCP 文档](https://docs.windsurf.com/windsurf/cascade/mcp)。VS Code / GitHub Copilot
添加到项目中的 .vscode/mcp.json 或 VS Code 用户设置(JSON)中。请确保在“聊天”>“MCP”下启用 MCP。支持 Agent 模式。
更多信息请参阅 VS Code MCP 文档。
Cline
通过 VS Code 中的 Cline 扩展设置进行配置。打开 Cline 侧边栏,点击 MCP 服务图标,然后添加上方的 JSON 配置。更多信息请参阅 Cline MCP 文档。
Roo Code
添加到 Roo Code MCP 配置文件中。更多信息请参阅 Roo Code MCP 文档。
Claude Code
claude mcp add --scope user desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
移除 --scope user,即可仅为当前项目安装。更多信息请参阅 Claude Code MCP 文档。
Trae
使用“手动添加”功能并粘贴上方的 JSON 配置。更多信息请参阅 Trae MCP 文档。
Kiro
进入 Kiro > MCP Servers,点击 + Add,然后粘贴上方的 JSON 配置。更多信息请参阅 Kiro MCP 文档。
Codex (OpenAI)
Codex 使用 TOML 配置。运行此命令以添加 Desktop Commander:
codex mcp add desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
或者手动添加到 ~/.codex/config.toml:
[mcp_servers.desktop-commander]
command = "npx"
args = ["-y", "@wonderwhy-er/desktop-commander@latest"]
更多信息请参阅 Codex MCP 文档。
JetBrains (AI Assistant)
在 JetBrains IDE 中,前往 Settings → Tools → AI Assistant → Model Context Protocol (MCP),点击 + Add,选择 As JSON,然后粘贴上方的 JSON 配置。更多信息请参阅 JetBrains MCP 文档。
Gemini CLI
添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": ["-y", "@wonderwhy-er/desktop-commander@latest"]
}
}
}
更多信息请参阅 Gemini CLI 文档。
Augment Code
按下 Cmd/Ctrl+Shift+P,打开 Augment 面板,并使用上方的 JSON 配置添加名为 desktop-commander 的 MCP 服务。更多信息请参阅 Augment Code MCP 文档。
Qwen Code
运行此命令以添加 Desktop Commander:
qwen mcp add desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
或者添加到 .qwen/settings.json(项目级)或 ~/.qwen/settings.json(全局)。更多信息请参阅 Qwen Code MCP 文档。
ChatGPT / Claude Web (Remote MCP)
使用 Desktop Commander,通过 ChatGPT、Claude web 和其他 AI 服务执行命令,同时让命令仍在你的电脑上运行。
启动远程设备:
npx @wonderwhy-er/desktop-commander@latest remote
首次运行时,请完成浏览器身份验证,然后在 mcp.desktopcommander.app 连接你的 AI。
- 使用
Ctrl+C暂时停止本地设备 - 使用
npx @wonderwhy-er/desktop-commander@latest remote --help查看可用的 CLI 选项 - 查看 远程 MCP 设置、注销/撤销、CLI 参考和故障排除
安全性
- ✅ 远程设备仅在运行时接受命令
- ✅ 命令将在本地以你的用户权限执行
- ✅ 安全的 OAuth 身份验证和加密通信通道
更新和卸载 Desktop Commander
自动更新(选项 1、2、3、4 和 6)
选项 1(npx)、选项 2(bash 安装程序)、选项 3(Smithery)、选项 4(手动配置)和选项 6(Docker) 会在你重启 Claude 时自动更新到最新版本。无需手动操作。
手动更新(选项 5)
- 选项 5(本地检出):
cd DesktopCommanderMCP && git pull && npm run setup
卸载 Desktop Commander
🤖 自动卸载(推荐)
彻底移除 Desktop Commander 的最简单方法:
npx @wonderwhy-er/desktop-commander@latest remove
此自动卸载程序将:
- ✅ 从 Claude 的 MCP 服务配置中移除 Desktop Commander
- ✅ 在进行更改前备份 Claude 配置
- ✅ 提供彻底移除软件包的指导
- ✅ 如果出现问题,从备份恢复
🔧 手动卸载
如果自动卸载程序无法运行,或你更倾向于手动移除:
从 Claude 配置中移除
- 找到 Claude Desktop 配置文件:
- macOS:
~/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"条目 - 保存文件
示例 - 移除此部分:
{
"desktop-commander": {
"command": "npx",
"args": ["@wonderwhy-er/desktop-commander@latest"]
}
}
关闭并重启 Claude Desktop,以完成移除。
🆘 故障排除
如果自动卸载失败:
- 使用手动卸载作为备用方案
如果卸载后 Claude 无法启动:
- 恢复卸载程序创建的备份配置文件
- 或手动修复 claude_desktop_config.json 中的 JSON 语法
需要帮助?
- 加入我们的 Discord 社区:https://discord.com/invite/kQ27sNnZr7
开始使用
安装 Desktop Commander 并重启 Claude Desktop 后,即可开始全面提升 Claude 的使用体验!
🚀 新用户入门
Desktop Commander 提供智能入门引导,帮助你探索各种可能性:
**对于新用户:**刚开始使用时(成功执行的命令少于 10 条),在你成功使用 Desktop Commander 后,Claude 会自动提供实用的入门指南和教程。
**随时请求帮助:**只需说出以下内容,即可随时请求入门帮助:
- “帮助我开始使用 Desktop Commander”
- “展示 Desktop Commander 示例”
- “我可以用 Desktop Commander 做什么?”
Claude 随后会展示适合初学者的教程和示例,包括:
- 📁 自动整理 Downloads 文件夹
- 📊 使用 Python 分析 CSV/Excel 文件
- ⚙️ 设置 GitHub Actions CI/CD
- 🔍 浏览并理解代码库
- 🤖 运行交互式开发环境
用法
该服务提供了一套全面的工具,分为多个类别:
可用工具
| 类别 | 工具 | 描述 |
|---|---|---|
| 配置 | get_config | 获取完整的服务配置(JSON 格式,包含 blockedCommands、defaultShell、allowedDirectories、fileReadLineLimit、fileWriteLineLimit、telemetryEnabled) |
set_config_value | 按键设置特定配置值。可用设置: • blockedCommands:无法执行的 Shell 命令数组• defaultShell:用于执行命令的 Shell(例如 bash、zsh、powershell)• allowedDirectories:服务可访问以执行文件操作的文件系统路径数组(⚠️ 终端命令仍可访问这些目录之外的文件)• fileReadLineLimit:一次读取的最大行数(默认值:1000)• fileWriteLineLimit:一次写入的最大行数(默认值:50)• telemetryEnabled:启用/禁用遥测(布尔值) | |
| 终端 | start_process | 启动程序,并智能检测程序何时准备好接收输入 |
interact_with_process | 向正在运行的程序发送命令并获取响应 | |
read_process_output | 读取正在运行的进程的输出 | |
force_terminate | 强制终止正在运行的终端会话 | |
list_sessions | 列出所有活动的终端会话 | |
list_processes | 列出所有正在运行的进程及其详细信息 | |
kill_process | 按 PID 终止正在运行的进程 | |
| 文件系统 | read_file | 从本地文件系统、URL、Excel 文件(.xlsx、.xls、.xlsm)和 PDF 读取内容,并支持按行/页分页 |
read_multiple_files | 同时读取多个文件 | |
write_file | 写入文件内容,可选择覆盖或追加模式。支持 Excel 文件(JSON 二维数组格式)。对于 PDF,请使用 write_pdf | |
write_pdf | 根据 Markdown 创建新的 PDF 文件,或修改现有 PDF(插入/删除页面)。支持 HTML/CSS 样式和 SVG 图形 | |
create_directory | 创建新目录或确保目录存在 | |
list_directory | 获取文件和目录的详细递归列表(支持深度参数,默认深度为 2) | |
move_file | 移动或重命名文件和目录 | |
start_search | 启动流式搜索,按名称或内容模式查找文件(搜索文本文件和 Excel 内容) | |
get_more_search_results | 获取活动搜索的分页结果,支持偏移量 | |
stop_search | 正常停止活动搜索 | |
list_searches | 列出所有活动的搜索会话 | |
get_file_info | 获取文件或目录的详细元数据(包含 Excel 文件的工作表信息) | |
| 文本编辑 | edit_block | 对文本文件应用定向文本替换,或对 Excel 文件执行基于范围的单元格更新 |
| 分析 | get_usage_stats | 获取使用情况统计信息,供你自行参考 |
get_recent_tool_calls | 获取近期工具调用历史记录,包括参数和输出,以便调试和恢复上下文 | |
give_feedback_to_desktop_commander | 在浏览器中打开反馈表单,向 Desktop Commander Team 提供反馈 |
快速示例
数据分析:
"Analyze sales.csv and show top customers" → Claude runs Python code in memory
远程访问:
"SSH to my server and check disk space" → Claude maintains SSH session
开发:
"Start Node.js and test this API" → Claude runs interactive Node session
工具使用示例
搜索/替换区块格式:
filepath.ext
<<<<<<< SEARCH
content to find
=======
new content
>>>>>>> REPLACE
示例:
src/main.js
<<<<<<< SEARCH
console.log("old message");
=======
console.log("new message");
>>>>>>> REPLACE
增强的编辑块功能
edit_block 工具经过多项增强,可靠性更高:
- 改进提示:工具描述现在会强调进行多次小幅、聚焦的编辑,而不是一次性进行大幅修改
- 模糊搜索回退:精确匹配失败时,会执行模糊搜索并提供详细反馈
- 字符级差异:使用
{-removed-}{+added+}格式准确显示差异 - 支持多个匹配项:可使用
expected_replacements参数替换多个实例 - 全面记录日志:所有模糊搜索都会记录下来,以便分析和调试
搜索失败时,你会看到最接近匹配项的详细信息,包括相似度百分比、执行时间和字符差异。所有这些详细信息都会自动记录下来,以便之后使用模糊搜索日志工具进行分析。
Docker 支持
🐳 在隔离环境中使用
Desktop Commander 可在 Docker 容器中运行,与主机系统完全隔离,从而为你的计算机提供零风险的使用环境。这非常适合测试、开发,或需要完全沙盒隔离的场景。
安装说明
-
安装适用于 Windows/Mac 的 Docker
- 从 docker.com 下载并安装 Docker Desktop
-
获取 Desktop Commander Docker 配置
- 访问:https://hub.docker.com/mcp/server/desktop-commander/manual
- **选项 A:**使用提供的终端命令自动完成设置
- **选项 B:**点击“Standalone”获取配置 JSON,然后手动将其添加到 Claude Desktop 配置中

-
挂载本机文件夹(即将推出)
- 即将提供将本地目录挂载到 Docker 容器中的说明
- 这样你就可以在保持完全隔离的同时使用自己的文件
使用 Docker 的优势
- 与主机系统完全隔离
- 在不同计算机上使用一致的环境
- 轻松清理——完成后只需移除容器
- 非常适合测试新功能或配置
URL 支持
read_file现在可以从本地文件和 URL 获取内容- 示例:使用
isUrl: true参数调用read_file,以读取网络资源 - 支持处理来自远程来源的文本和图像内容
- 图像(本地或来自 URL)会以可视形式显示在 Claude 界面中,而不是显示为文本
- Claude 可以查看并分析图像的实际内容
- URL 请求的默认超时时间为 30 秒
文件预览 UI 和 Markdown 编辑器
Desktop Commander 在 Claude Desktop 中提供了功能丰富的文件预览组件,可在 AI 处理文件时以可视形式呈现文件。
支持的文件类型
- Markdown——渲染预览,内置编辑器
- 图像——内嵌显示(PNG、JPEG、GIF、WebP 等)
- 代码文件——带语法高亮的源代码视图
- HTML——渲染预览,可切换到源代码视图
- 目录——可交互的树形视图,支持展开、折叠和延迟加载
- PDF、Excel、DOCX——原生内容提取与显示
Markdown 编辑器
在 Claude Desktop 中查看 .md 文件时,你可以直接在预览面板中编辑,无需打开单独的应用。
使用方法:
- 让 Claude 读取或创建一个 markdown 文件
- 使用 ⤢ Expand 按钮将文件预览展开至全屏
- 编辑器会在全屏模式下自动启用
- 编辑内容,并使用实时预览切换、复制、撤销和保存控件
- 更改会保存回磁盘;收起后即可返回内嵌视图
编辑器功能:
- 实时编辑 / 预览切换——在原始 markdown 和渲染后的输出之间切换
- 自动保存到磁盘,并显示保存状态
- 支持撤销,可还原尚未保存的更改
- 复制按钮,可复制完整的 markdown 源码
- 在编辑器中打开——直接从面板启动默认的 markdown 应用
- 部分文件识别——如果文件只读取了部分内容,会加载并合并周围的行
- 文本选择上下文——在预览模式下选择文本,AI 即可参考所选内容
目录浏览器
Claude 运行 list_directory 时,结果会以交互式文件树的形式显示在预览面板中,而不只是原始文本输出。
功能:
- 可展开的树形视图——点击即可展开或收起文件夹;立即显示顶层内容
- 延迟加载——按需加载子文件夹,确保初始视图快速显示
- 大型目录处理——包含大量项目的目录会显示
⚠ click to load all按钮,避免视图内容过多 - 在 Finder/Explorer 中打开——每个文件夹都有快速打开按钮,可在文件管理器中显示该文件夹
- 点击以预览——点击树中的任何文件,即可直接在文件预览面板中打开
- 返回导航——从树中打开文件后,点击 ← Back 按钮即可返回目录视图
其他预览功能
- 展开 / 收起——在紧凑摘要行和完整面板之间切换
- 在文件夹中打开——单击即可在 Finder/Explorer 中显示该文件
- 加载更多行——逐步加载部分读取窗口上方或下方的内容
- 文本选择——在任意预览中突出显示文本;AI 可以查看并参考所选内容
模糊搜索日志分析(npm scripts)
模糊搜索日志系统提供了方便的 npm 脚本,可在 MCP 环境之外分析日志:
# View recent fuzzy search logs
npm run logs:view -- --count 20
# Analyze patterns and performance
npm run logs:analyze -- --threshold 0.8
# Export logs to CSV or JSON
npm run logs:export -- --format json --output analysis.json
# Clear all logs (with confirmation)
npm run logs:clear
有关这些脚本的详细文档,请参阅 scripts/README.md。
模糊搜索日志
Desktop Commander 会全面记录 edit_block 工具中的模糊搜索操作。未找到精确匹配项时,系统会执行模糊搜索并记录详细信息以供分析。
记录内容
每次模糊搜索操作都会记录:
- 搜索文本和找到的文本:你要查找的文本与实际找到的文本
- 相似度分数:匹配程度(0-100%)
- 执行时间:搜索耗时
- 字符差异:详细差异对比,准确显示不同之处
- 文件元数据:扩展名、搜索文本和找到的文本长度
- 字符编码:导致差异的具体字符编码
日志位置
日志会自动保存到:
- macOS/Linux:
~/.claude-server-commander-logs/fuzzy-search.log - Windows:
%USERPROFILE%\.claude-server-commander-logs\fuzzy-search.log
你将了解到
模糊搜索日志可帮助你了解:
- 精确匹配失败的原因:空白差异、行尾或字符编码等常见问题
- 性能模式:搜索复杂度如何影响执行时间
- 文件类型问题:哪些文件扩展名常见匹配问题
- 字符编码问题:导致差异的具体字符编码
本地工具历史记录和审计日志
Desktop Commander 会将工具调用记录保存在运行 MCP 服务的机器本地。这些本地文件与可选遥测数据相互独立,并非服务端历史审计日志。
claude_tool_call.log — 本地参数日志
本地 MCP 服务处理的每次工具调用都会追加为一行文本,其中包含 ISO 时间戳、工具名称和以 JSON 序列化的参数。参数在写入此本地文件前不会经过脱敏或清理,因此文件中可能包含传递给工具的命令文本、文件路径或其他敏感值。工具输出不会写入此文件。
活动日志文件达到 10 MB 时会进行轮换。上一个文件会使用时间戳重命名,例如 claude_tool_call_2026-09-07_14-32-10.log,并创建新的 claude_tool_call.log。日志记录器不会自动删除轮换后的文件。
位置:
- macOS/Linux:
~/.claude-server-commander/claude_tool_call.log - Windows:
%USERPROFILE%\.claude-server-commander\claude_tool_call.log
tool-history.jsonl — 最近的工具调用历史
Desktop Commander 还会保留 JSON Lines 格式的历史记录,供 get_recent_tool_calls 使用。每条记录包含时间戳、工具名称、参数、耗时和返回结果。启动时会从磁盘加载此历史记录,因此 MCP 服务重启后仍可保留最近的历史记录。
为限制此历史记录的大小:
- 内存中最多保留最近 1,000 次调用。
- 每条记录的存储输出上限为 4 KiB;更大的输出会替换为省略标记。
- 磁盘文件超过 5 MiB 时会进行裁剪,保留大约最新的 4 MiB。
- 启动时,如果历史记录超过 2,000 条,会重写为最近的 1,000 条。
get_recent_tool_calls和track_ui_event不会写入此 JSONL 历史记录。
位置:
- macOS/Linux:
~/.claude-server-commander/tool-history.jsonl - Windows:
%USERPROFILE%\.claude-server-commander\tool-history.jsonl
远程调用和服务端保留
通过 Remote Desktop Commander 执行的调用仍由本地 MCP 服务处理,并使用上述相同的本地历史文件。Remote Desktop Commander 服务会在 mcp_remote_calls 中临时存储工具参数和结果,以便路由并完成调用。终端记录会在完成后不久自动清理(完成一分钟后即可删除,并设有一小时的创建时间兜底期限),因此不会作为长期服务端审计跟踪保留。
这些本地历史文件也与 Desktop Commander 的可选遥测相互独立。文件本身不会作为遥测数据上传。遥测详情请参阅 数据收集与隐私 和 PRIVACY.md。
处理长时间运行的命令
对于可能需要较长时间的命令:
配置管理
⚠️ 重要安全警告
有关全面的安全信息和漏洞报告:请参阅 SECURITY.md
-
已知安全限制:目录限制和命令拦截可能通过多种方式绕过,包括符号链接、命令替换、绝对路径或代码执行。
-
务必在单独的聊天窗口中更改配置,不要在进行实际工作的聊天窗口中更改。Claude 有时可能会在遇到文件系统访问限制时尝试修改配置设置(例如
allowedDirectories)。 -
allowedDirectories设置目前仅限制文件系统操作,不限制终端命令。终端命令仍可访问允许目录以外的文件。 -
生产环境安全:请使用 Docker 安装,它可以与主机系统完全隔离。
配置工具
你可以使用提供的工具管理服务配置:
// 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,并在服务重启后继续保留。
了解 fileWriteLineLimit
fileWriteLineLimit 设置控制单次 write_file 操作最多可以写入多少行(默认值:50 行)。设置此限制有几个重要原因:
设置此限制的原因:
- AI 会浪费 Token:AI 可能不会只对文件进行两处小修改,而是选择重写整个文件。我们试图促使 AI 进行较小的修改,以节省时间和 Token
- Claude 的用户体验消息限制:单条消息有长度限制,点击“继续”并不能真正解决问题。我们希望 AI 分批完成较小的工作,这样达到限制时,多个分块已经完成,工作不会丢失——只需从上一个分块重新开始
设置限制:
// You can set it to thousands if you want
set_config_value({ "key": "fileWriteLineLimit", "value": 1000 })
// Or keep it smaller to force more efficient behavior
set_config_value({ "key": "fileWriteLineLimit", "value": 25 })
最大值:你可以根据需要设置为数千;没有技术限制。
最佳实践:
- 保持默认值(50),以鼓励 AI 高效工作并避免浪费 Token
- 超出限制时,系统会自动建议分块处理
- 较小的分块意味着 Claude 达到消息限制时丢失的工作更少
最佳实践
-
为配置更改创建专用聊天:在一个聊天中完成所有配置更改,然后开启新聊天来处理实际工作。
-
谨慎设置空的
allowedDirectories:将其设置为空数组([])会授予文件操作对整个文件系统的访问权限。 -
使用具体路径:不要使用
/这样的宽泛路径,而应指定你想要访问的确切目录。 -
更改后始终验证配置:使用
get_config({})确认更改已正确应用。
命令行选项
Desktop Commander 支持多个命令行选项,可用于自定义行为:
禁用引导
默认情况下,Desktop Commander 会向新用户(工具调用少于 10 次的用户)显示实用的引导提示。你可以禁用此行为:
# Disable onboarding for this session
node dist/index.js --no-onboarding
# Or if using npm scripts
npm run start:no-onboarding
# For npx installations, modify your claude_desktop_config.json:
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest",
"--no-onboarding"
]
}
}
}
以下情况下会自动禁用引导:
- MCP 客户端名称设置为 "desktop-commander" 时
- 使用
--no-onboarding标志时 - 用户使用过引导提示或进行了 10 次或更多工具调用后
调试信息:
禁用引导时,服务会记录日志:"Onboarding disabled via --no-onboarding flag"
使用不同的 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 的功能,或在不同命令之间保持环境一致。
execute_command超时后会返回初始输出- 命令会在后台继续运行
- 使用 PID 调用
read_output获取新输出 - 需要时使用
force_terminate停止命令
调试
如果需要调试服务,可以在调试模式下安装:
# Using npx
npx @wonderwhy-er/desktop-commander@latest setup --debug
# Or if installed locally
npm run setup:debug
这将:
- 配置 Claude 使用单独的 "desktop-commander" 服务
- 通过
--inspect-brk=9229标志启用 Node.js 检查器协议 - 在启动时暂停执行,直到调试器连接
- 启用其他调试环境变量
连接调试器:
- 在 Chrome 中访问
chrome://inspect,查找 Node.js 实例 - 在 VS Code 中,使用 "Attach to Node Process" 调试配置
- 其他 IDE/工具可能也有类似的 Node.js 调试“附加”选项
重要调试说明:
- 服务启动后会暂停,直到调试器连接(这是
--inspect-brk标志导致的) - 如果调试期间看不到活动,请确保已连接到正确的 Node.js 进程
- 可能会有多个 Node 进程在运行;请连接到端口 9229 上的进程
- 在 Claude 的 MCP 服务列表中,调试服务标识为 "desktop-commander-debug"
故障排除:
- 如果 Claude 在尝试使用调试服务时超时,可能是调试器未正确连接
- 正确连接后,进程会在命中第一个断点后继续执行
- 连接后,你可以在 IDE 中添加其他断点
Model Context Protocol 集成
此项目扩展了 MCP Filesystem Server,以支持:
- 在 Claude Desktop 中支持本地服务
- 完整的系统命令执行
- 进程管理
- 文件操作
- 使用搜索/替换代码块编辑代码
作为探索 Claude MCP 的一部分创建:https://youtube.com/live/TlbjFDbl5Us
支持 Desktop Commander
📢 支持此项目
Desktop Commander MCP 免费且开源,但需要您的支持才能持续发展!
我们的理念很简单:如果您没有取得成功,就不需要为此付费。但如果 Desktop Commander 助您取得了成功,请考虑支持我们。
支持方式:
- 🌟 GitHub Sponsors - 定期支持
- ☕ Buy Me A Coffee - 一次性捐助
- 💖 Patreon - 成为赞助人,每月支持我们
- ⭐ 在 GitHub 上点星 - 帮助更多人发现此项目
❤️ 支持者名人堂
慷慨的支持者将在此展示。感谢您帮助我们实现这个项目!
为什么您的支持很重要
您的支持让我们能够:
- 持续积极开发和维护
- 添加新功能和集成
- 提升跨平台兼容性
- 提供更完善的文档和示例
- 围绕此项目构建更强大的社区
网站
访问我们的官方网站 https://desktopcommander.app/,获取最新信息、文档和更新。
媒体
通过以下资源进一步了解此项目:
文章
Claude with MCPs replaced Cursor & Windsurf. How did that happen? - 详细探讨 Claude 如何借助 Model Context Protocol 能力改变开发者工作流。
视频
Claude Desktop Commander Video Tutorial - 观看如何设置并有效使用 Commander。
AnalyticsIndiaMag 上的报道
This Developer Ditched Windsurf, Cursor Using Claude with MCPs
社区
加入我们的 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 上点个 ⭐ Star!这能帮助更多人发现这个项目,也能鼓励后续开发。
我们欢迎社区贡献!无论你发现了 Bug、有功能需求,还是想贡献代码,都可以通过以下方式提供帮助:
- 发现了 bug? 请在 github.com/wonderwhy-er/DesktopCommanderMCP/issues 提交 issue
- 有功能创意? 请在 issue 区提交功能请求
- 想贡献代码? 请 Fork 仓库、创建分支并提交 pull request
- 有问题或想参与讨论? 请在 GitHub Discussions 标签页发起讨论
无论贡献大小,我们都非常感谢!
如果您觉得这个工具对工作流有帮助,请考虑支持该项目。
常见问题
以下是一些常见问题的解答。要查看更全面的常见问题解答,请参阅我们的详细常见问题解答文档。
Desktop Commander 是什么?
它是一款 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,并详细说明问题。
如何报告安全漏洞?
请针对您发现的任何安全漏洞创建 GitHub Issue,并提供详细信息。有关负责任披露的完整指南,请参阅我们的安全政策。
数据收集与隐私
Desktop Commander 会收集有限的匿名遥测数据以改进工具。我们不会将文件内容、文件路径或命令参数作为遥测数据收集。
这与本地工具历史记录和审计日志不同;后者保存在运行 Desktop Commander 的设备上,可能包含工具参数和有限长度的结果预览。
选择退出: 请让 Claude“禁用 Desktop Commander 遥测”,或在配置中设置 "telemetryEnabled": false。
完整详情请参阅我们的隐私政策。
验证
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。