Desktop Commander MCP

Desktop Commander MCP Server

Desktop Commander MCP gives assistants local file, document, terminal, and process-management tools. It supports interactive and long-running commands alongside search, focused edits, and workflows involving spreadsheets, PDFs, and Word files.

Server facts

Desktop Commander MCP

Tech

Runtime / language
node
Transports
stdio
Remote available
No
Authentication
Not specified

Activity

GitHub stars
10,092
Last commit
Data as of

Tags

  • Data Analysis
  • Document Editing
  • File Management
  • Process Control
  • Terminal Automation

Overview

Desktop Commander MCP connects an assistant to file and terminal workflows on a computer. It extends the MCP filesystem approach with focused text editing, recursive searches, interactive processes, and background command handling. The README describes reading and editing text, Excel, PDF, and DOCX content, as well as running Python, Node.js, or R code in memory for data work. Terminal sessions can remain active while an assistant reads output in portions or sends additional input. File previews and a markdown editor are described for Claude Desktop, while the MCP server can also be configured in other compatible clients.

Installation options include npx setup, manual client configuration, a local checkout, and Docker. The npm route requires Node.js, while Docker offers isolation and can preserve tools, configuration, caches, and work files across restarts. Mounted folders control which host files are available in a container. Documented safeguards include filesystem symlink traversal prevention, command blocklists, and audit logs for tool calls. The supplied configuration tool description also warns that changing settings should happen in a separate chat from file operations and command execution. Because the server can write files and control processes, its configuration is part of choosing the intended scope of automation. It is suited to assistants doing practical local work rather than only generating code snippets or analyzing pasted text.

Install & configure

Requirements

  • Node.js for the npm configuration
  • An MCP-compatible client
Documented launch / install command
npx -y @wonderwhy-er/desktop-commander@latest

This is the README's manual MCP configuration. The setup command npx @wonderwhy-er/desktop-commander@latest setup can configure Claude Desktop instead. Restart the client afterward. Docker is documented as an alternative without local Node.js.

Config file · macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

Use Settings → Developer → Edit Config when available. Do not assume a Linux configuration path; check the client documentation for your platform. Remote servers use the app’s connector flow when supported, not the local stdio file shown here. Merge this example with existing settings; do not overwrite unrelated servers.

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

Read the Claude Desktop setup guide

Config file · Project: .cursor/mcp.json

User: ~/.cursor/mcp.json

The project path is relative to the workspace root. The tilde denotes your user home directory. Use Cursor’s MCP settings to confirm which configuration and scope your installed version is reading. Merge this example with existing settings; do not overwrite unrelated servers.

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

Read the Cursor setup guide

Config file · Workspace: .vscode/mcp.json

For user scope, use the “MCP: Open User Configuration” command if available. Do not guess a user configuration path across operating systems, profiles, containers, or remote workspaces; check the client documentation. Merge this example with existing settings; do not overwrite unrelated servers.

VS Code configuration
{
  "servers": {
    "DesktopCommanderMCP": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@wonderwhy-er/desktop-commander@latest"
      ],
      "env": {}
    }
  }
}

Read the VS Code setup guide

Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json

Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

Open the MCP configuration through Windsurf’s settings when possible to confirm the active file. Paths can differ in managed or future releases; check the client documentation if this location is not present. Merge this example with existing settings; do not overwrite unrelated servers.

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

Read the Windsurf setup guide

Config file · Project scope: .mcp.json at the repository root

The project file uses mcpServers. For user scope, use claude mcp add --scope user rather than assuming .mcp.json in your home directory is the user configuration. Check the client documentation for managed settings and storage details. Merge this example with existing settings; do not overwrite unrelated servers.

Claude Code configuration
{
  "mcpServers": {
    "DesktopCommanderMCP": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@wonderwhy-er/desktop-commander@latest"
      ],
      "env": {}
    }
  }
}

Read the Claude Code setup guide

Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.

Tools

Source: repository tool metadata. Tool descriptions are a documented snapshot, not a live capability check.

ToolWhat it does
get_configInspect the server's current configuration.
set_config_valueChange a configuration key; the tool warns to do this separately from file and execution chats.
read_fileRead local files or URLs, including PDF text and image extraction.
read_multiple_filesRead several files and associate each result with its path.
write_fileWrite or append file content; dedicated tools handle PDFs and DOCX edits.
write_pdfCreate a PDF or modify an existing PDF document.
create_directoryCreate nested directories within allowed paths.
list_directoryInspect a directory with separate file and directory entries.
move_fileMove or rename files and directories within permitted locations.
start_searchBegin a streaming file or content search.
get_more_search_resultsRetrieve another portion of results from an active search.
stop_searchStop a background search when it is no longer needed.
list_searchesInspect active search IDs, patterns, status, and runtime.
get_file_infoRead metadata such as file size, timestamps, permissions, and text line count.
edit_blockApply focused replacements to selected file content.
start_processLaunch a terminal process with state detection for command and data workflows.
read_process_outputRead a running process's output with offset and length controls.
interact_with_processSend input to a live process and collect its response.
force_terminateForce an active terminal session to stop.
list_sessionsInspect active terminal sessions and their process state.
list_processesList operating-system processes with CPU and memory information.
kill_processForcefully terminate a process identified by PID.
get_usage_statsRead tool usage, success rates, and performance summaries.
get_recent_tool_callsInspect recent session tool calls with arguments and outputs.
give_feedback_to_desktop_commanderOpen the project's feedback form in a browser for manual completion.
get_promptsRetrieve a specific onboarding prompt by identifier.

Use cases

  • Analyze local CSV, JSON, or spreadsheet files through interactive processes.
  • Search directories and apply focused edits to documents or code.
  • Run long-lived development commands and inspect output incrementally.
  • Read and create PDFs or work with Excel and Word documents.
  • Manage active terminal sessions and operating-system processes.

Strengths

  • Combines file operations, document support, and interactive terminal sessions.
  • Paginates process output to reduce context overflow.
  • Provides Docker isolation and persistent work environments.
  • Documents audit logging and command and filesystem safeguards.

Limitations

  • The npm installation route requires Node.js.
  • Docker needs explicit folder mounts to access host files.
  • Configuration changes carry a documented warning to separate them from execution and file-work chats.

Desktop Commander MCP setup notes

  • Desktop Commander MCP's stdio example needs a client that launches local processes.

Frequently asked questions

Yes. It can start a process, read output incrementally, send input, and manage the resulting session.

The README covers text files, native Excel support, PDFs, and DOCX documents.

No. The basic Docker configuration has no host file access; folder mounts are shown for making chosen directories available.

No. The README says the MCP server remains usable with Claude Desktop and other compatible clients; the app is a separate beta experience.

Related MCP servers