Desktop Commander MCP is a server that allows Claude to interact with your file system and terminal, enabling tasks like running commands, searching files, and editing code without API token costs.
Desktop Commander offers several installation methods to suit different needs:
npx @wonderwhy-er/desktop-commander@latest setup
For debugging mode:
npx @wonderwhy-er/desktop-commander@latest setup --debug
curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bash
Add this entry to your claude_desktop_config.json:
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander@latest"
]
}
}
}
git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git
cd DesktopCommanderMCP
npm run setup
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'))
The easiest way to completely remove Desktop Commander:
npx @wonderwhy-er/desktop-commander@latest remove
Desktop Commander provides several tools organized into categories:
start_process
: Start programs with smart detection of when they're ready for inputinteract_with_process
: Send commands to running programs and get responsesread_process_output
: Read output from running processesforce_terminate
: Force terminate a running terminal sessionlist_sessions
: List all active terminal sessionslist_processes
: List all running processes with detailed informationkill_process
: Terminate a running process by PIDread_file
: Read contents from local filesystem or URLs with paginationread_multiple_files
: Read multiple files simultaneouslywrite_file
: Write file contents with options for rewrite or append modecreate_directory
: Create a new directory or ensure it existslist_directory
: Get detailed listing of files and directoriesmove_file
: Move or rename files and directoriesstart_search
: Start streaming search for files by name or content patternsget_more_search_results
: Get paginated results from active search with offset supportstop_search
: Stop an active search gracefullylist_searches
: List all active search sessionsget_file_info
: Retrieve detailed metadata about a file or directoryedit_block
: Apply targeted text replacements with enhanced promptingget_config
: Get the complete server configuration as JSONset_config_value
: Set a specific configuration value by keySearch/Replace Block Format:
filepath.ext
<<<<<<< SEARCH
content to find
=======
new content
>>>>>>> REPLACE
Example:
src/main.js
<<<<<<< SEARCH
console.log("old message");
=======
console.log("new message");
>>>>>>> REPLACE
You can manage server configuration using these tools:
// Get the entire config
get_config({})
// Set a specific config value
set_config_value({ "key": "defaultShell", "value": "/bin/zsh" })
Important config settings include:
blockedCommands
: Array of shell commands that cannot be executeddefaultShell
: Shell to use for commandsallowedDirectories
: Array of filesystem paths the server can accessfileReadLineLimit
: Maximum lines to read at once (default: 1000)fileWriteLineLimit
: Maximum lines to write at once (default: 50)telemetryEnabled
: Enable/disable telemetry (boolean)For commands that may take a while:
read_output
with PID to get new outputforce_terminate
to stop if neededFor better security:
allowedDirectories
setting only restricts filesystem operations, not terminal commandsTo add this MCP server to Claude Code, run this command in your terminal:
claude mcp add-json "desktop-commander" '{"command":"npx","args":["-y","@wonderwhy-er/desktop-commander"]}'
See the official Claude Code MCP documentation for more details.
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander"
]
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.
To add this MCP server to Claude Desktop:
1. Find your configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
2. Add this to your configuration file:
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander"
]
}
}
}
3. Restart Claude Desktop for the changes to take effect