tool:
  schema_version: 1.0
  id: desktop-commander
  type: mcp
  name: Desktop Commander
  version: 1.0.0
  description: Powerful file system operations, process management, and system command execution
  knowledge_strategy: declarative

  capabilities:
    - Read and write files with intelligent chunking
    - Search files and content using Grep-like patterns
    - Execute shell commands and manage processes
    - Directory listing and file metadata
    - Move, copy, and delete files
    - Process management and monitoring

  use_cases:
    - file_operations: "Read, write, edit files in the project"
    - code_search: "Search for code patterns across files"
    - command_execution: "Run npm scripts, git commands, build tools"
    - process_monitoring: "Monitor running processes and resources"
    - bulk_operations: "Batch file operations"

  mcp_specific:
    server_command: "npx -y @wonderwhy-er/desktop-commander"
    transport: stdio
    environment_variables: []
    health_check:
      method: tool_call
      command: read_file
      expected_response: "File content returned"
      timeout_ms: 5000

  tools:
    - id: read_file
      description: "Read file contents with optional offset and length"
      parameters:
        - path: "Absolute path to file"
        - offset: "Start line (default: 0)"
        - length: "Max lines to read (default: 1000)"
        - isUrl: "Whether path is a URL (default: false)"

    - id: write_file
      description: "Write or append to file"
      parameters:
        - path: "Absolute path to file"
        - content: "Content to write"
        - mode: "Write mode: 'rewrite' or 'append' (default: 'rewrite')"

    - id: read_multiple_files
      description: "Read multiple files simultaneously"
      parameters:
        - paths: "Array of absolute file paths"

    - id: list_directory
      description: "List directory contents recursively"
      parameters:
        - path: "Directory path"
        - depth: "Recursion depth (default: 2)"

    - id: create_directory
      description: "Create new directory"
      parameters:
        - path: "Directory path to create"

    - id: move_file
      description: "Move or rename files"
      parameters:
        - source: "Source file path"
        - destination: "Destination path"

    - id: get_file_info
      description: "Get file metadata"
      parameters:
        - path: "File or directory path"

    - id: edit_block
      description: "Replace text in file surgically"
      parameters:
        - file_path: "File to edit"
        - old_string: "Text to replace"
        - new_string: "Replacement text"
        - expected_replacements: "Number of expected matches (default: 1)"

    - id: start_search
      description: "Start streaming file/content search"
      parameters:
        - path: "Search root directory"
        - pattern: "Search pattern"
        - searchType: "Type: 'files' or 'content' (default: 'files')"
        - filePattern: "Optional file filter (e.g., '*.js')"
        - literalSearch: "Exact string matching (default: false)"

    - id: get_more_search_results
      description: "Get more results from active search"
      parameters:
        - sessionId: "Search session ID"
        - offset: "Result offset (default: 0)"
        - length: "Max results (default: 100)"

    - id: stop_search
      description: "Stop active search"
      parameters:
        - sessionId: "Search session ID"

    - id: list_searches
      description: "List all active searches"
      parameters: []

    - id: start_process
      description: "Start terminal process with intelligent state detection"
      parameters:
        - command: "Command to execute"
        - timeout_ms: "Max execution time"
        - shell: "Optional shell (cmd, powershell, bash)"

    - id: read_process_output
      description: "Read output from running process"
      parameters:
        - pid: "Process ID"
        - timeout_ms: "Optional timeout"

    - id: interact_with_process
      description: "Send input to running process"
      parameters:
        - pid: "Process ID"
        - input: "Input to send"
        - timeout_ms: "Optional timeout (default: 8000)"
        - wait_for_prompt: "Wait for response (default: true)"

    - id: force_terminate
      description: "Force terminate process"
      parameters:
        - pid: "Process ID"

    - id: list_sessions
      description: "List all active terminal sessions"
      parameters: []

    - id: list_processes
      description: "List all running processes"
      parameters: []

    - id: kill_process
      description: "Terminate process by PID"
      parameters:
        - pid: "Process ID"

  workflow:
    typical_usage:
      - step: 1
        action: "Read project files to understand structure"
        example: "read_file({ path: '/project/package.json' })"
      - step: 2
        action: "Search for specific code patterns"
        example: "start_search({ path: '/project/src', pattern: 'function.*export', searchType: 'content' })"
      - step: 3
        action: "Execute build or test commands"
        example: "start_process({ command: 'npm test', timeout_ms: 60000 })"

  best_practices:
    - "Always use absolute paths for file operations"
    - "Use chunking for large file writes (25-30 lines per write)"
    - "Prefer edit_block for surgical edits over full rewrites"
    - "Use streaming search for large codebases"
    - "Terminate processes when done to free resources"
    - "Monitor process output for errors and failures"

  security_considerations:
    - "Validate user input before executing shell commands"
    - "Be cautious with file deletions"
    - "Avoid exposing sensitive file contents"
    - "Check file permissions before operations"

  limitations:
    - "Requires file system access permissions"
    - "Command execution limited by system security policies"
    - "Process management may vary by operating system"
    - "Some operations blocked by antivirus software"
