Desktop Commander provides 19 tools with reasonable naming conventions (verb_noun pattern) and descriptions. However, significant gaps exist: parameter descriptions are minimal or absent in several tools, output schemas are not documented anywhere in the visible source, and error handling patterns are undocumented. The server addresses a legitimate domain (process + file management) but lacks the rigor expected of production-grade tools. STDIO transport limits remote accessibility. Parameter validation constraints (enums, ranges) are largely absent from visible schemas. Tool composition is reasonable but could better support common multi-step workflows.
Tools (19)
convert_file_formatwrite50/100
Convert between different file formats (PDF, Excel, Markdown, etc.)
copy_filewrite50/100
Copy a file or directory
create_directorywrite50/100
Create a new directory
delete_filedestructive50/100
Delete a file or directory
edit_filewrite50/100
Edit file using structured block operations
force_terminateirreversible50/100
Force terminate a running process
get_file_propertiesread only50/100
Get file properties like size, modification time, permissions
Output schemas not documented. No visible indication of what fields tools return, their types, or structure. LLMs cannot predict downstream data extraction or chain tools reliably without this information.
Parameter descriptions are minimal or generic. 'Path', 'Timeout in milliseconds', 'Input to send to process' lack guidance on constraints, formats, or error conditions. LLMs cannot infer valid ranges, required vs optional, or expected behavior.
Add explicit output schemas for all 19 tools. Document the structure (fields, types) of each return value. Use JSON Schema format in the tool definition.
Expand parameter descriptions to include constraints. For every numeric parameter (timeout_ms, offset, length), specify min/max ranges (e.g., 'timeout_ms: 100 - 60000'). For enums (mode, type, format), list valid values and suggest the default.
Implement error handling and recovery guidance. Document which errors are retryable (network timeouts, rate limits) vs fatal (permission denied, file not found). For destructive tools (delete_file, force_terminate, write_file), add a 'confirm' parameter or require explicit confirmation in the prompt.
Add validation constraints as JSON Schema enums. Update write_file 'mode' to enum: ['create', 'append', 'overwrite']. Update search_files 'type' to enum: ['regex', 'glob']. Update convert_file_format 'output_format' to enum: ['pdf', 'excel', 'markdown', ...]. Update give_feedback_to_desktop_commander 'type' to enum: ['bug', 'feature_request', 'other'].
Document pagination and result limits. For list_directory, search_files, get_recent_tool_calls: state max returned items (e.g., 'up to 50 results'). Accept offset/limit or cursor parameters. Return total_count or next_cursor to enable agent-driven pagination.
Consolidate closely-related tools to reduce cognitive load. Consider merging list_directory + read_file into a single browsing flow, or offer a 'search_and_read' composite that takes a pattern and returns matching file contents.
Score history
Overall score trend
↑ 21 points across a rubric change (v1 → v2)
55/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
D
55
2026-07-28+
v2
2026-03-09
F
34
1.9.0+
v1
Get recent tool calls from history with optional filtering
No error handling or recovery guidance in tool descriptions. Tools that perform destructive operations (delete_file, force_terminate) do not document how errors are classified (retryable vs fatal), what to do on failure, or confirmation patterns.
No enum constraints on string parameters. Tools like 'write_file' accept 'mode' (create, append, overwrite, etc.) and 'search_files' accepts 'type' (regex, glob, etc.) but do not declare valid values as enums. LLMs may invent invalid modes.
No documented pagination or result limits. Tools like 'list_directory', 'search_files', and 'get_recent_tool_calls' do not state what happens if results exceed context limits or how to handle large datasets.
Tool composition gaps. No composite tools for common multi-step workflows (e.g., 'create_and_edit_file', 'search_and_read_matching_files'). Agents must chain multiple calls where a single higher-level tool would be more efficient.
STDIO-only transport. Server cannot be accessed by hosted MCP clients or remote agents. Limits deployment flexibility and testing.
Migrate from STDIO to Streamable HTTP transport. STDIO is not remotely accessible. HTTP enables hosted clients, remote agents, and better testing infrastructure. See https://modelcontextprotocol.io/docs/concepts/architecture.
Add tool annotations for destructive operations. Mark delete_file, force_terminate, write_file with destructiveHint: true so clients can warn users or require confirmation.
Include chaining IDs in responses. If create_directory succeeds, return the path so agents can immediately call write_file without another lookup. If search_files returns file paths, include both absolute and relative paths for downstream tool compatibility.
Document natural identifiers. For process tools, state whether pid must be numeric or if process names are also accepted. For file tools, clarify whether paths are absolute, relative, or support ~ expansion.