{
  "display_name": "Desktop Commander MCP",
  "license": "MIT",
  "tags": [
    "terminal",
    "file management",
    "code search",
    "AI assistant",
    "command execution",
    "filesystem",
    "process management",
    "text editing",
    "ripgrep",
    "Claude integration"
  ],
  "installations": {
    "npm": {
      "type": "npm",
      "command": "npx",
      "args": [
        "-y",
        "@wonderwhy-er/desktop-commander"
      ],
      "description": "Add to claude_desktop_config by hand"
    },
    "docker": {
      "type": "docker",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp/desktop-commander"
      ]
    }
  },
  "examples": [
    {
      "title": "",
      "description": "",
      "prompt": "Can you help me search for all files containing the word 'config' in my project directory?"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Please create a new JavaScript file called app.js with a basic Express server setup"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Run 'npm install express' and show me the output"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Search through my codebase and find all instances where we're using async/await"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Read the README.md file in my current project and summarize it"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Help me edit the user authentication function in auth.js to add password validation"
    },
    {
      "title": "",
      "description": "",
      "prompt": "List all running processes on my system"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Create a directory structure for a new React project"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Find and replace all instances of 'oldFunction' with 'newFunction' in my JavaScript files"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Read the package.json file and tell me what dependencies are installed"
    }
  ],
  "name": "desktop-commander-mcp",
  "repository": {
    "type": "git",
    "url": "https://github.com/wonderwhy-er/DesktopCommanderMCP"
  },
  "homepage": "https://github.com/wonderwhy-er/DesktopCommanderMCP",
  "author": {
    "name": "wonderwhy-er"
  },
  "description": "Short version. Four key things. Terminal commands, diff based file editing, ripgrep based text search in folders, ability to read files from urls",
  "categories": [
    "System Tools"
  ],
  "tools": [
    {
      "name": "get_config",
      "description": "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 server can access).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "set_config_value",
      "description": "Set a specific configuration value by key. WARNING: Should be used in a separate chat from file operations and command execution to prevent security issues. Config keys include: blockedCommands (array), defaultShell (string), allowedDirectories (array of paths). IMPORTANT: Setting allowedDirectories to an empty array ([]) allows full access to the entire file system, regardless of the operating system.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {}
        },
        "required": [
          "key"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "execute_command",
      "description": "Execute a terminal command with timeout. Command will continue running in background if it doesn't complete within timeout.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "command": {
            "type": "string"
          },
          "timeout_ms": {
            "type": "number"
          },
          "shell": {
            "type": "string"
          }
        },
        "required": [
          "command"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "read_output",
      "description": "Read new output from a running terminal session.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pid": {
            "type": "number"
          }
        },
        "required": [
          "pid"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "force_terminate",
      "description": "Force terminate a running terminal session.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pid": {
            "type": "number"
          }
        },
        "required": [
          "pid"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "list_sessions",
      "description": "List all active terminal sessions.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "list_processes",
      "description": "List all running processes. Returns process information including PID, command name, CPU usage, and memory usage.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "kill_process",
      "description": "Terminate a running process by PID. Use with caution as this will forcefully terminate the specified process.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pid": {
            "type": "number"
          }
        },
        "required": [
          "pid"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "read_file",
      "description": "Read the complete contents of a file from the file system or a URL. When reading from the file system, only works within allowed directories. Can fetch content from URLs when isUrl parameter is set to true. Handles text files normally and image files are returned as viewable images. Recognized image types: PNG, JPEG, GIF, WebP.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "isUrl": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "read_multiple_files",
      "description": "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. Recognized image types: PNG, JPEG, GIF, WebP. Failed reads for individual files won't stop the entire operation. Only works within allowed directories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "paths": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "paths"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "write_file",
      "description": "Completely replace file contents. Best for large changes (>20% of file) or when edit_block fails. Use with caution as it will overwrite existing files. Only works within allowed directories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "content": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "create_directory",
      "description": "Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. Only works within allowed directories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "list_directory",
      "description": "Get a detailed listing of all files and directories in a specified path. Results distinguish between files and directories with [FILE] and [DIR] prefixes. Only works within allowed directories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "move_file",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "destination": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "destination"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "search_files",
      "description": "Finds files by name using a case-insensitive substring matching. Searches through all subdirectories from the starting path. Has a default timeout of 30 seconds which can be customized using the timeoutMs parameter. Only searches within allowed directories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "pattern": {
            "type": "string"
          },
          "timeoutMs": {
            "type": "number"
          }
        },
        "required": [
          "path",
          "pattern"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "search_code",
      "description": "Search for text/code patterns within file contents using ripgrep. Fast and powerful search similar to VS Code search functionality. Supports regular expressions, file pattern filtering, and context lines. Has a default timeout of 30 seconds which can be customized. Only searches within allowed directories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "pattern": {
            "type": "string"
          },
          "filePattern": {
            "type": "string"
          },
          "ignoreCase": {
            "type": "boolean"
          },
          "maxResults": {
            "type": "number"
          },
          "includeHidden": {
            "type": "boolean"
          },
          "contextLines": {
            "type": "number"
          },
          "timeoutMs": {
            "type": "number"
          }
        },
        "required": [
          "path",
          "pattern"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "get_file_info",
      "description": "Retrieve detailed metadata about a file or directory including size, creation time, last modified time, permissions, and type. Only works within allowed directories.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    },
    {
      "name": "edit_block",
      "description": "Apply surgical text replacements to files. Best for small changes (<20% of file size). Call repeatedly to change multiple blocks. Will verify changes after application. Format:\nfilepath\n<<<<<<< SEARCH\ncontent to find\n=======\nnew content\n>>>>>>> REPLACE",
      "inputSchema": {
        "type": "object",
        "properties": {
          "blockContent": {
            "type": "string"
          }
        },
        "required": [
          "blockContent"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
  ],
  "prompts": [],
  "resources": [],
  "is_official": false,
  "docker_url": "https://hub.docker.com/r/mcp/desktop-commander"
}
