DesktopCommanderMCP MCP Server

by wonderwhy-er• 10k•• Scanned•Claim this listing•Request removal
Coding Agentsagentaicode analysiscode generationgemini cli extension

This is MCP server for Claude that gives it terminal control, file system search and diff file editing capabilities

DesktopCommanderMCP is an open-source mcp server by wonderwhy-er, written mainly in JavaScript, with 10,187 GitHub stars and the MIT license. Its code was last updated Oct 30, 2026.

Scan summary: scanned Nov 5, 2026 at commit edfc903. Seen able to run shell commands, read or write files, read environment and secrets, connect to the internet. Scan policy

Scanned
Full scan at edfc903 · Nov 5, 2026
Scanned Builds Boots Reproducible
Static code scanwarn
Secrets scanpass
Dependency audit60 known vulnerabilitiesfail
Manifestserver.jsonpass
Buildpass
Boot & handshake25 toolspass
Network egressfail
Reproducible (×3)pass

Findings (45)

  • high
    dependencies issue
    Details are available to the maintainer after claiming this listing.
  • high
    network issue
    Details are available to the maintainer after claiming this listing.
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    scripts/build-mcpb.cjs:27
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    scripts/build-mcpb.cjs:37
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    scripts/build-mcpb.cjs:133
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    scripts/build-mcpb.cjs:179
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    scripts/build-mcpb.cjs:190
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    scripts/download-all-ripgrep.cjs:131
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    scripts/publish-release.cjs:61
  • medium
    Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
    src/remote-device/diagnostics/report.ts:183
  • medium
    body-parser@2.3.0: 1 known vulnerability
    GHSA-27r3-jxmh-p828
    package-lock.json
  • medium
    brace-expansion@1.1.12: 7 known vulnerabilities
    GHSA-3jxr-9vmj-r5cp, GHSA-6j4f-fj2g-mc7p, GHSA-f886-m6hf-6m8v, GHSA-mh99-v99m-4gvg, GHSA-q2hr-2g5m-vwhr +2 more
    package-lock.json
  • medium
    browserslist@4.28.1: 2 known vulnerabilities
    GHSA-73wf-gq98-2v4g, GHSA-c83g-rgw3-j3cx
    package-lock.json
  • medium
    decode-uri-component@0.2.2: 2 known vulnerabilities
    GHSA-qr28-fpjm-wq7f, GHSA-vcc3-ghjq-m6fr
    package-lock.json
  • medium
    fflate@0.8.2: 1 known vulnerability
    GHSA-px8p-9vwx-vf98
    package-lock.json
  • medium
    form-data@4.0.5: 1 known vulnerability
    GHSA-hmw2-7cc7-3qxx
    package-lock.json
  • medium
    http-cache-semantics@3.8.1: 1 known vulnerability
    GHSA-rc47-6667-2j5j
    package-lock.json
  • medium
    lodash@4.17.21: 2 known vulnerabilities
    GHSA-r5fr-rjxr-66jc, GHSA-xxjr-mmjv-4gpg
    package-lock.json
  • medium
    markdown-it@14.3.2: 2 known vulnerabilities
    GHSA-gfr2-rv44-r23c, GHSA-vfgh-jcmw-g37q
    package-lock.json
  • medium
    minimatch@3.1.2: 3 known vulnerabilities
    GHSA-23c5-xmqv-rm74, GHSA-3ppc-4f35-3m26, GHSA-7r86-cg39-jmmj
    package-lock.json
  • medium
    node-forge@1.4.0: 12 known vulnerabilities
    GHSA-4487-j8r4-4g2f, GHSA-4642-5mcj-2rqw, GHSA-525v-9gp9-w22h, GHSA-5cwg-6vw7-rj6p, GHSA-5x38-2vff-x55p +7 more
    package-lock.json
  • medium
    serialize-javascript@6.0.2: 3 known vulnerabilities
    GHSA-5c6j-r48x-rmvq, GHSA-m5mm-p8h7-m29v, GHSA-qj8w-gfj5-8c6v
    package-lock.json
  • medium
    source-map-js@1.2.1: 1 known vulnerability
    GHSA-68fv-2mgg-jv7q
    package-lock.json
  • medium
    tmp@0.0.33: 2 known vulnerabilities
    GHSA-52f5-9888-hmc6, GHSA-ph9p-34f9-6g65
    package-lock.json
  • medium
    uuid@10.0.0: 1 known vulnerability
    GHSA-w5hq-g745-h8pq
    package-lock.json
  • medium
    uuid@8.3.2: 1 known vulnerability
    GHSA-w5hq-g745-h8pq
    package-lock.json
  • medium
    zod@3.25.76: 1 known vulnerability
    GHSA-mrhx-c7xc-m3w5
    package-lock.json
  • medium
    Install contacted hosts other than package registries
    storage.googleapis.com
  • low
    Possible example credential in docs/tests: generic-api-key
    test/test-remote-device-log.js:239
  • low
    Possible example credential in docs/tests: generic-api-key
    test/test-remote-stand-in.js:71
  • low
    Possible example credential in docs/tests: jwt
    test/test-redact.js:26
  • low
    Possible example credential in docs/tests: generic-api-key
    test/test-redact.js:62
  • low
    baseline-browser-mapping@2.9.11: 1 known vulnerability
    GHSA-w5vr-8v7q-w6rv
    package-lock.json
  • low
    diff@4.0.2: 1 known vulnerability
    GHSA-73rr-hh4g-fpgx
    package-lock.json
  • low
    fast-uri@3.1.8: 4 known vulnerabilities
    GHSA-333x-w4r6-6crp, GHSA-w74x-v6f9-j3xg, GHSA-wjr9-j795-jxcr, GHSA-xhq7-xmqj-769h
    package-lock.json
  • low
    glob@10.5.0: 1 known vulnerability
    GHSA-3g3m-2fjr-6pw4
    package-lock.json
  • low
    glob@13.0.6: 1 known vulnerability
    GHSA-3g3m-2fjr-6pw4
    package-lock.json
  • low
    got@8.3.2: 1 known vulnerability
    GHSA-pfrx-2q88-qq97
    package-lock.json
  • low
    ip-address@10.7.3: 1 known vulnerability
    GHSA-rxp7-6hxx-x8q5
    package-lock.json
  • low
    minimatch@10.2.6: 1 known vulnerability
    GHSA-g3hv-75wg-m249
    package-lock.json
  • low
    minimatch@9.0.9: 1 known vulnerability
    GHSA-g3hv-75wg-m249
    package-lock.json
  • low
    qs@6.16.0: 1 known vulnerability
    GHSA-6pq8-jhm2-2vcw
    package-lock.json
  • low
    package.json has a postinstall script
    node dist/track-installation.js && node dist/npm-scripts/verify-ripgrep.js || node -e "process.exit(0)"
    package.json
  • low
    package.json has a prepare script
    npm run build
    package.json
  • low
    Reads environment variables not listed in the manifest
    TERM_PROGRAM, WT_SESSION, SHELL, TERM, PROMPT, WSL_DISTRO_NAME, WSLENV, _, CI, GITHUB_ACTIONS, TRAVIS, CIRCLECI, APPDATA, UV_THREADPOOL_SIZE, MCP_SERVER_URL

Network activity

During install
api.github.comregistry.npmjs.orgrelease-assets.githubusercontent.comstorage.googleapis.com
While running
desktopcommander.appgooglechromelabs.github.iostorage.googleapis.comtelemetry.desktopcommander.app

Tools exposed (25)

  • get_config

    Get the complete server configuration as JSON. Config includes fields for: - blockedCommands (array of blocked shell commands) - defaultShell (shell to use for commands) - allowedDirectories (paths the s

  • set_config_value

    Set a specific configuration value by key. Security note: configuration changes affect later file and command behavior. Isolating them from untrusted file or command content reduces the chance that exte

  • read_file

    Read contents from files and URLs. Read PDF files and extract content as markdown and images. Suitable for reading authorized local files directly without starting a shell command.

  • read_multiple_files

    Read the contents of multiple files simultaneously. Each file's content is returned with its path as a reference. Handles text files normally and renders images as viewable content.

  • write_file

    Write or append to file contents. PDF creation is handled by the dedicated write_pdf tool. Existing DOCX content can be edited with edit_block. New DOCX files can be created here; markdown headings (#, ##, ###) are converted t

  • write_pdf

    Create a new PDF file or modify an existing one. Dedicated PDF creation and modification tool. OUTPUT FILES: - Creating a PDF requires 'outputPath' with a new filename (e.g., "result_01.pdf", "analysis

  • create_directory

    Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. Only works within allowed directories. Abso

  • list_directory

    Get a detailed listing of all files and directories in a specified path. Returns a structured directory listing without starting a shell command. Results distinguish between files and directories with [

  • move_file

    Move or rename files and directories. Can move files between directories and rename them in a single operation. Both source and destination must be within allowed directories.

  • start_search

    Start a streaming search that can return results progressively. SEARCH STRATEGY GUIDE: Choose the right search type based on what the user is looking for:

  • get_more_search_results

    Get more results from an active search with offset-based pagination. Supports partial result reading with: - 'offset' (start result index, default: 0) * Positive: Start from re

  • stop_search

    Stop an active search. Stops the background search process gracefully. Use this when you've found what you need or if a search is taking too long. Similar to force_terminate for

  • list_searches

    List all active searches. Shows search IDs, search types, patterns, status, and runtime. Similar to list_sessions for terminal processes. Useful for managing multiple concurrent

  • get_file_info

    Retrieve detailed metadata about a file or directory including: - size - creation time - last modified time - permissions - type -

  • edit_block

    Apply surgical edits to files. Small, focused edits are easier to verify than large multi-purpose replacements. old_string can include enough surrounding context to uniquely identify the intended text.

  • start_process

    Start a terminal process on the authorized device with intelligent state detection. Suitable for shell commands, interactive REPL sessions, data-processing scripts, programmatic file analysis, and other

  • read_process_output

    Read output from a running process with file-like pagination support. Supports partial output reading with offset and length parameters (like read_file): - 'offset' (start line, default: 0)

  • interact_with_process

    Send input to an existing terminal or REPL process and return newly available output. Useful for interactive shells, Python/Node/R/Julia REPLs, database consoles, and long-running commands started with

  • force_terminate

    Force terminate a running terminal session. This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.

  • list_sessions

    List all active terminal sessions. Shows session status including: - PID: Process identifier - Blocked: Whether session is waiting for input - Runtime:

  • list_processes

    List all running processes. Returns process information including PID, command name, CPU usage, and memory usage. This command can be referenced as "DC: ..." or "use Desktop Com

  • kill_process

    Terminate a running process by PID. For a PID that start_process returned, it ends the whole command: the shell and every process the command started, as force_terminate does. Any other PID ends that process only. Sessions started with node:local hav

  • get_usage_stats

    Get usage statistics for debugging and analysis. Returns summary of tool usage, success/failure rates, and performance metrics. This command can be referenced as "DC: ..." or "u

  • get_recent_tool_calls

    Get recent local tool call history with arguments and outputs. Returns a chronological list of recent calls loaded from the local history file. Useful for: - Onboarding new chats

  • give_feedback_to_desktop_commander

    Open feedback form in browser to provide feedback about Desktop Commander. The form itself collects survey answers; this tool does not accept survey responses or pre-fill them. It automatically includes

Automated result for the commit shown. See our scan policy. View the scan log

Maintainers can claim the listing to rescan, or dispute a result.

DesktopCommanderMCP alternatives

View more →

Similar mcp servers in Coding Agents, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.

NameStarsLicenceLast updatedScan
DesktopCommanderMCP (this page)
wonderwhy-er
10kMITOct 30, 2026Scanned, no flagged issues
Context Mode
mksglu
33kNone foundNov 1, 2026Not scanned yet
Serena
oraios
31kNone foundOct 28, 2026Not scanned yet
Fastmcp
PrefectHQ
28kApache-2.0Nov 1, 2026Scanned, no flagged issues
Nuclear
nukeop
19kAGPL-3.0Nov 1, 2026Scanned, no flagged issues
MCP For Beginners
microsoft
18kMITOct 30, 2026Scanned, no flagged issues