Server facts
Desktop Commander MCP
Project
- Author
- wonderwhy-er
- Website
- desktopcommander.app/
- License
- MIT
- Category
- Mobile & Desktop Automation
Tech
- Runtime / language
- node
- Transports
- stdio
- Remote available
- No
- Authentication
- Not specified
Activity
- GitHub stars
- 10,075
- 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
npx -y @wonderwhy-er/desktop-commander@latestThis 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.
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.
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.
{
"mcpServers": {
"DesktopCommanderMCP": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest"
],
"env": {}
}
}
}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.
{
"mcpServers": {
"DesktopCommanderMCP": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest"
],
"env": {}
}
}
}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.
{
"servers": {
"DesktopCommanderMCP": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest"
],
"env": {}
}
}
}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.
{
"mcpServers": {
"DesktopCommanderMCP": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest"
],
"env": {}
}
}
}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.
{
"mcpServers": {
"DesktopCommanderMCP": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest"
],
"env": {}
}
}
}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.
| Tool | What it does |
|---|---|
| get_config | Inspect the server's current configuration. |
| set_config_value | Change a configuration key; the tool warns to do this separately from file and execution chats. |
| read_file | Read local files or URLs, including PDF text and image extraction. |
| read_multiple_files | Read several files and associate each result with its path. |
| write_file | Write or append file content; dedicated tools handle PDFs and DOCX edits. |
| write_pdf | Create a PDF or modify an existing PDF document. |
| create_directory | Create nested directories within allowed paths. |
| list_directory | Inspect a directory with separate file and directory entries. |
| move_file | Move or rename files and directories within permitted locations. |
| start_search | Begin a streaming file or content search. |
| get_more_search_results | Retrieve another portion of results from an active search. |
| stop_search | Stop a background search when it is no longer needed. |
| list_searches | Inspect active search IDs, patterns, status, and runtime. |
| get_file_info | Read metadata such as file size, timestamps, permissions, and text line count. |
| edit_block | Apply focused replacements to selected file content. |
| start_process | Launch a terminal process with state detection for command and data workflows. |
| read_process_output | Read a running process's output with offset and length controls. |
| interact_with_process | Send input to a live process and collect its response. |
| force_terminate | Force an active terminal session to stop. |
| list_sessions | Inspect active terminal sessions and their process state. |
| list_processes | List operating-system processes with CPU and memory information. |
| kill_process | Forcefully terminate a process identified by PID. |
| get_usage_stats | Read tool usage, success rates, and performance summaries. |
| get_recent_tool_calls | Inspect recent session tool calls with arguments and outputs. |
| give_feedback_to_desktop_commander | Open the project's feedback form in a browser for manual completion. |
| get_prompts | Retrieve a specific onboarding prompt by identifier. |
Names, permissions, and defaults can change. Check the current upstream documentation before granting access.
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.
Frequently asked questions
Independent listing, not an affiliation or security review. Grant the least access needed and verify the upstream instructions before running code.