DesktopCommanderMCP
为 Claude 等 AI 客户端提供终端控制、文件搜索与编辑能力的 MCP 服务器,让 AI 能直接执行命令、管理进程、读写 Excel/PDF/DOCX 等文件。亮点在于支持远程 AI 控制、Docker 隔离运行、文件预览 UI 和自动更新,安装简单且兼容多种 MCP 客户端(Cursor、VS Code、Windsurf 等),可替代部分 IDE 内的 AI 功能。注意:安全配置存在已知局限,生产环境建议使用 Docker 隔离。
README
Desktop Commander MCP
使用 AI 搜索、更新、管理文件并运行终端命令
处理代码和文本、运行进程、自动化任务,远超其他 AI 编辑器——同时使用宿主客户端订阅,无需 API token 费用。
🖥️ 试用 Desktop Commander App(Beta)
想要更好的体验? Desktop Commander App 提供 MCP server 的全部功能,外加:
- 使用任意 AI 模型 — Claude、GPT-4.5、Gemini 2.5,或任何你偏好的模型
- 实时查看文件变化 — AI 编辑文件时提供可视化文件预览
- 添加自定义 MCP 和上下文 — 扩展你自己的工具,无需配置文件
- 即将推出 — 技能系统、语音输入、后台定时任务等
👉 下载 App(macOS & Windows)
下面的 MCP server 仍然能完美配合 Claude Desktop 和其他 MCP 客户端——App 是为那些希望获得专用、精致体验的用户准备的。
目录
所有 AI 开发工具汇聚一处。 Desktop Commander 将所有开发工具整合到一个聊天中。 在您的计算机上执行长时间运行的终端命令,并通过 Model Context Protocol(MCP,模型上下文协议)管理进程。基于 MCP Filesystem Server 构建,提供额外的搜索和替换文件编辑能力。
功能特性
- 远程 AI 控制 — 通过 Remote MCP 在 ChatGPT、Claude web 及其他 AI 服务中使用 Desktop Commander
- 文件预览 UI — 在 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、数据库、开发服务器)
- 执行终端命令并流式输出
- 支持命令超时和后台执行
- 进程管理(列出和终止进程)
- 长时间运行命令的会话管理
- 进程输出分页 — 使用 offset/length 控制读取终端输出,防止上下文溢出
- 服务器配置管理:
- 获取/设置配置值
- 一次更新多个设置
- 无需重启服务器即可动态更改配置
- 完整的文件系统操作:
- 读/写文件(文本、Excel、PDF、DOCX)
- 创建/列出目录
- 递归目录列表,支持可配置深度和大文件夹上下文溢出保护
- 移动文件/目录
- 搜索文件和内容(包括 Excel 内容)
- 获取文件元数据
- 负偏移读取文件:使用负偏移值从文件末尾读取(类似 Unix tail 命令)
- 代码编辑能力:
- 精确文本替换,适用于小改动
- 完整文件重写,适用于大改动
- 多文件支持
- 基于模式的替换
- 基于 vscode-ripgrep 的递归代码或文本在文件夹中搜索
- 全面的审计日志:
- 自动记录所有工具调用
- 日志轮转,上限 10MB
- 详细的时间戳和参数
- 安全强化:
- 文件操作中防止符号链接遍历
- 命令黑名单及绕过保护
- Docker 隔离 实现完全沙箱
- 详见 SECURITY.md
如何安装
在 Claude Desktop 中安装
Desktop Commander 为 Claude Desktop 提供多种安装方式。
选项 1:通过 npx 安装 ⭐ 自动更新(需要 Node.js)📋 更新与卸载信息: 选项 1、2、3、4 和 6 支持自动更新。选项 5 需要手动更新。详见下文。
只需在终端中运行:
npx @wonderwhy-er/desktop-commander@latest setup
调试模式(允许 Node.js 检查器连接):
npx @wonderwhy-er/desktop-commander@latest setup --debug
安装过程中的命令行选项:
--debug:启用 Node.js 检查器调试模式--no-onboarding:为新用户禁用入门提示
如果 Claude 正在运行,请重启。
✅ 自动更新: 是——重启 Claude 时自动更新
🔄 手动更新: 再次运行 setup 命令
🗑️ 卸载: 运行 npx @wonderwhy-er/desktop-commander@latest remove
curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bash
此脚本会自动处理所有依赖和配置。
✅ 自动更新: 是
🔄 手动更新: 重新运行上面的 bash 安装器命令
🗑️ 卸载: 运行 npx @wonderwhy-er/desktop-commander@latest remove
- 访问: https://smithery.ai/server/@wonderwhy-er/desktop-commander
- 登录 Smithery(如果尚未登录)
- 选择你的客户端(Claude Desktop)右侧
- 使用提供的密钥安装,该密钥在选择客户端后显示
- 重启 Claude Desktop
✅ 自动更新: 是——重启 Claude 时自动更新
🔄 手动更新: 访问 Smithery 页面并重新安装
将此条目添加到你的 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 时自动更新
🔄 手动更新: 再次运行 setup 命令
🗑️ 卸载: 运行 npx @wonderwhy-er/desktop-commander@latest remove 或从 claude_desktop_config.json 中移除该条目
git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git
cd DesktopCommanderMCP
npm run setup
如果 Claude 正在运行,请重启。
setup 命令会安装依赖、构建服务器并配置 Claude 的桌面应用。
❌ 自动更新: 否——需要手动 git 更新
🔄 手动更新: cd DesktopCommanderMCP && git pull && npm run setup
🗑️ 卸载: 运行 npx @wonderwhy-er/desktop-commander@latest remove 或删除克隆的目录和 Claude 配置中的 MCP 服务器条目
适合想要隔离环境或没有安装 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:
# 检查状态
bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --status
# 重置所有持久化数据
bash <(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --reset
Windows PowerShell:
# 检查状态
$script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Status
# 重置所有数据
$script = (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1'); & ([ScriptBlock]::Create("$script")) -Reset
# 显示帮助
$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 配置文件中,对应位置如下:
Cursor或手动添加到 ~/.cursor/mcp.json(全局)或项目文件夹中的 .cursor/mcp.json(项目特定)。
更多信息请参阅 Cursor MCP 文档。
Windsurf添加到 ~/.codeium/windsurf/mcp_config.json。更多信息请参阅 Windsurf MCP 文档。
添加到项目中的 .vscode/mcp.json 或 VS Code 用户设置(JSON)。确保在 Chat > MCP 下启用 MCP。在 Agent 模式下工作。
更多信息请参阅 VS Code MCP 文档。
Cline通过 VS Code 中 Cline 扩展设置进行配置。打开 Cline 侧边栏,点击 MCP Servers 图标,添加上面的 JSON 配置。更多信息请参阅 Cline MCP 文档。
Roo Code添加到你的 Roo Code MCP 配置文件。更多信息请参阅 Roo Code MCP 文档。
Claude Codeclaude mcp add --scope user desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
移除 --scope user 以仅安装到当前项目。更多信息请参阅 Claude Code MCP 文档。
使用“手动添加”功能,粘贴上面的 JSON 配置。更多信息请参阅 Trae MCP 文档。
Kiro导航至 Kiro > MCP Servers,点击 + Add,粘贴上面的 JSON 配置。更多信息请参阅 Kiro MCP 文档。
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),点击 + 添加,选择 As JSON,然后粘贴上面的 JSON 配置。更多信息请参阅 JetBrains MCP 文档。
添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": ["-y", "@wonderwhy-er/desktop-commander@latest"]
}
}
}
更多信息请参阅 Gemini CLI 文档。
Augment Code按下 Cmd/Ctrl+Shift+P,打开 Augment 面板,添加一个名为 desktop-commander 的新 MCP 服务器,并粘贴上面的 JSON 配置。更多信息请参阅 Augment Code MCP 文档。
运行以下命令添加 Desktop Commander:
qwen mcp add desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
或添加到 .qwen/settings.json(项目)或 ~/.qwen/settings.json(全局)。更多信息请参阅 Qwen Code MCP 文档。
通过 Remote MCP 在 ChatGPT、Claude web 及其他 AI 服务中使用 Desktop Commander——无需桌面应用。
👉 在 mcp.desktopcommander.app 开始使用
工作原理:
- 你在计算机上运行一个轻量级 Remote Device
- 它安全地连接到云端的 Remote MCP 服务
- 你的 AI 通过云端向你的设备发送命令
- 命令在本地执行,结果返回给你的 AI
- 你始终掌控——随时按
Ctrl+C停止
安全性
- ✅ 设备仅在你启动时运行
- ✅ 命令以你的用户权限执行
- ✅ 安全的 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 次),Claude 会在你成功使用 Desktop Commander 后自动提供有用的入门指导和实用教程。
随时请求帮助: 你可以随时通过简单的表述请求入门帮助:
- "帮助我开始使用 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 |
获取文件和目录的详细递归列表(支持 depth 参数,默认 depth=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 团队提供反馈 |
快速示例
数据分析:
"分析 sales.csv 并展示顶级客户" → Claude 在内存中运行 Python 代码
远程访问:
"SSH 到我的服务器并检查磁盘空间" → Claude 维持 SSH 会话
开发:
"启动 Node.js 并测试此 API" → Claude 运行交互式 Node 会话
工具使用示例
搜索/替换块格式:
filepath.ext
<<<<<<< SEARCH
要查找的内容
=======
新内容
>>>>>>> REPLACE
示例:
src/main.js
<<<<<<< SEARCH
console.log("旧消息");
=======
console.log("新消息");
>>>>>>> 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参数读取网络资源 - 处理来自远程源的文本和图像内容
- 图像(本地或来自 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 按钮将文件预览扩展为全屏
- 编辑器在全屏模式下自动激活
- 编辑你的内容,带有实时预览切换、复制、撤销和保存控制
- 更改会保存回磁盘;折叠以返回内联视图
编辑器功能:
- 实时 编辑/预览切换——在原始 Mark