desktop-commander-overview
Original:🇺🇸 English
Translated
Use for Desktop Commander MCP capabilities — persistent shells and REPLs, long-running processes, filesystem beyond the workspace, structured files (.xlsx, .docx, .pdf, images) and large local data files such as CSVs, ripgrep search at scale, SSH, or cross-turn state.
8installs
Sourcecline/skills
Added on
NPX Install
npx skill4agent add cline/skills desktop-commander-overviewTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Desktop Commander MCP
Desktop Commander gives the agent reach across the user's actual computer — files, folders, terminals, processes, structured documents, and remote machines reachable over SSH. The tools' detailed schemas (parameters, return shapes, format-specific behavior) live in the MCP itself; this skill explains what they enable and how they compose into common workflows.
What this MCP gives the agent
Persistent shell sessions. Desktop Commander keeps a started process or session alive across tool calls. Inside a single long-lived shell, REPL, or SSH session, state carries forward — environment variables, working directory, activated virtualenvs, open connections, REPL variables — so the agent can , activate a venv, then send commands or code into that same session many turns later without re-setup. (Note: separate calls open separate sessions and do not share shell state with each other; persistence is inside one session, not across them.)
cdstart_processLong-running processes. Start a dev server, watcher, build, training run, or test suite in the background and keep working. The MCP returns a process handle the agent can tail, interact with, or terminate across many turns. Long-running commands don't need to block the workflow waiting for a foreground command to exit.
Filesystem reach beyond the IDE workspace. Read, write, move, list, and inspect files anywhere the user has granted scope — Downloads, Documents, project folders outside the IDE, or any other granted folders. Useful for organize-and-clean tasks, batch document work, and any "look at the file my coworker just sent me" request that doesn't fit inside the IDE sandbox.
Surgical edits to existing files. The tool does exact-string find-and-replace with built-in safety: ambiguous matches fail loudly instead of silently overwriting the wrong thing, and an count prevents partial-match disasters. Lower data-loss risk than rewriting whole files based on the slice you happened to read — though a wrong or wrong can still corrupt content, so review the changed content before considering the edit done.
edit_blockexpected_replacementsold_stringexpected_replacementsBinary and structured files handled directly by the MCP. Excel, DOCX, and PDF are first-class — read and modified through format-specific mechanisms rather than text-only approximations: Excel via cell-range JSON, DOCX via raw-XML edits, PDF via page-level operations on a new output file. The result is the real file in its original format, not a regenerated approximation. Images and PDFs return as viewable content for the agent.
Search at scale. Streaming, ripgrep-backed search across whole projects or folder trees. The agent picks between filename search and in-file content search, pages through results progressively without flooding context, and runs multiple concurrent searches when the query is ambiguous.
Remote machines via SSH. A long-lived SSH session inside a persistent shell turns the agent into a real ops tool: connect once, then tail logs, run diagnostics, deploy, or debug across many turns without reconnecting each step.
Process management. List, inspect, tail, and kill accessible processes (subject to OS permissions). Useful for cleaning up stale dev servers from previous sessions and for diagnosing CPU / memory issues.
Example workflows
Each example names the actual tool sequence. Calls below are written in pseudocode shorthand (); the real tools take object-shaped arguments. Tool descriptions and full parameter sets live in the MCP itself.
tool_name("arg", flag=value)"Debug this production issue"
Before running production-impacting SSH commands, explain the intended action and get user confirmation when the risk is non-trivial.
start_process("ssh user@prod.example.com", timeout_ms=...)interact_with_process(pid, "tail -f /var/log/app.log\n")read_process_output(pid, offset=-50)interact_with_process(pid, "...")force_terminate(pid)start_processforce_terminatekill_processlist_processes"Deploy this to staging"
Before deploys, restarts, migrations, or other environment-changing commands, summarize the action and confirm with the user unless they already explicitly asked for that exact operation.
start_processkubectlghread_process_outputinteract_with_process(pid, "yes\n")"Run the dev server and iterate on the API"
start_process("npm run dev", timeout_ms=...)edit_blockread_process_output(pid, offset=-30)start_process("curl -s http://localhost:3000/api/...")"Refactor across this monorepo"
start_search(pattern="oldFunctionName", path=repo_root, searchType="content")get_more_search_results(sessionId)read_multiple_files(paths=[...])edit_block(file_path, old_string, new_string)expected_replacementsstart_searchget_more_search_results(sessionId)"Update the Q3 numbers in this spreadsheet and tweak the summary in the report"
read_file(path="/.../q3.xlsx", sheet="Revenue", range="A1:F50")edit_block(file_path="/.../q3.xlsx", range="Revenue!C12:C24", content=[[12345], ...])read_file(path="/.../report.docx")read_file(path="/.../report.docx", offset=N, length=...)N > 0old_stringedit_block(file_path, old_string, new_string).xlsx.docx"Generate the Q3 report as a PDF"
Compose markdown content (header, table, charts via embedded HTML), then call to render it to a new PDF file. The MCP's tool description specifies the exact parameters and filename rules — follow that.
write_pdfwrite_pdf"Insert a cover page into this PDF"
write_pdfwrite_pdf"Analyze this 200MB CSV"
start_process("python3 -i", timeout_ms=...)interact_with_process(pid, "import pandas as pd; df = pd.read_csv('/abs/path.csv')")df.describe()df.groupby('col').size()"Run a quick Node script"
start_process("node:local", timeout_ms=...)start_processinteract_with_process(pid, "<your JS here>")start_processnode:local"Explain this codebase"
list_directory(path=repo_root, depth=3)start_search(pattern="export ", path=repo_root, searchType="content")read_multiple_files(paths=[entrypoints])"Organize my Downloads folder"
Resolve the path to absolute first (e.g., , not ). Then to see what's there. and similar for other types. for new folders. per item. Preview the move plan before executing destructive ops.
/Users/<user>/Downloads~/Downloadslist_directory(path="/Users/<user>/Downloads", depth=1)start_search(pattern="*.pdf", path="/Users/<user>/Downloads", searchType="files")create_directorymove_file"Onboard me — what was happening last session?"
get_recent_tool_calls(maxResults=200)list_sessionslist_searcheslist_processes"Why isn't the REPL responding?"
list_sessionsBlocked: trueread_process_output(pid, offset=-100)interact_with_process(pid, "<the input it's waiting for>\n")Core tool inventory
Grouped index of the tools an agent reaches for most often. Not exhaustive — the MCP exposes additional config / diagnostics / feedback tools beyond this list. Detailed parameters and return shapes for every tool are in the MCP's own tool descriptions.
- Process / shell: ,
start_process,interact_with_process,read_process_output,list_processes,list_sessions,kill_processforce_terminate - Files (read/write): ,
read_file,read_multiple_files,write_file,edit_blockwrite_pdf - Filesystem: ,
list_directory,get_file_info,move_filecreate_directory - Search: ,
start_search,get_more_search_results,list_searchesstop_search - Diagnostics / config: ,
get_recent_tool_callsget_config
Conventions
Prefer absolute paths. Relative paths may fail depending on the working directory, and tilde paths () may not expand in all contexts. Absolute paths are the most reliable; pass them whenever you can.
~/...Allowed-directory scope. File operations only work inside the user's configured . Expect markers in output and rejections from / when the path is out of scope. Surface the rejected path to the user — don't retry.
allowedDirectories[DENIED]list_directoryread_filewrite_fileWhen running on macOS: default shell is zsh. Use not . Some GNU tools have prefixed names ( for GNU sed). is the typical package manager. opens files / apps from the terminal, is the fastest path to exact-filename search via Spotlight. Detect the host platform via (or by inspecting / from a shell) before assuming any of the above — Windows and Linux hosts behave differently.
python3pythongsedbrewopenmdfindget_configprocess.platformunamePagination. Long outputs (file reads, process output, search results) all support and . Negative offsets read from the end (tail mode). Use these instead of dumping huge results into context.
offsetlength