mcp-smbmap exposes 12 SMB enumeration and exploitation tools with basic naming and schemas, but suffers from critical gaps in descriptions, parameter documentation, and error handling. Tool names follow verb_noun convention (connect, list_shares, exec_command), which is good. However, most parameter descriptions are minimal (10-30 chars), and many lack context about constraints, formats, or dependencies. Output schemas are not documented. Error handling is absent, no guidance on recovery, retryability, or actionable error messages. The server targets a security/penetration testing domain where precision is critical, yet descriptions are vague enough that an LLM could misuse tools (e.g., exec_command without understanding the irreversible consequences). No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels assigned.
Check if the current user has admin rights on the host.
Check if host has SMB signing disabled, enabled, or required.
Connect to an SMB host.
Delete a remote file.
Disconnect from an SMB host.
Download a file from the remote system.
Execute a command on the remote host.
No output schemas documented. Tools return unstructured results; LLMs cannot plan downstream calls or extract required fields (e.g., does list_shares return share names, permissions, sizes?). Violates pattern:tool and pattern:response-shaper.
Destructive/irreversible tools (exec_command, delete_file, upload_file) lack confirmation or dry-run support. No tool annotations (destructiveHint) to warn LLMs. Agents can execute arbitrary commands or delete files without safeguards. Violates pattern:confirmation-request and pattern:tool-annotation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Get OS version of the remote host.
List all drives on the target host.
List contents of a share path.
List all shares on the target host.
Upload a file to the remote system.
Parameter descriptions are minimal (10-30 chars) and lack format/constraint guidance. E.g., 'password' says 'Password or NTLM hash (format: LMHASH:NTHASH)' but doesn't explain when to use which. 'path' in list_path says 'Path to list (default: root /)' but doesn't clarify Windows path format (backslash vs forward slash). Violates pattern:tool-description and review:param-validation-rules.
No error handling or recovery guidance. Tools fail silently or return raw exceptions. E.g., if connect fails due to invalid credentials, does the tool return a specific error? Can the LLM retry with different auth? No guidance. Violates pattern:recovery-guide and pattern:error-classification.
Tool descriptions do not explain when to use each tool or dependencies between them. E.g., must connect() be called before list_shares()? Can list_path() be called without a prior connect()? No guidance. Violates pattern:tool-description and review:incomplete-docstrings.