MCP server for Salesforce CLI integration, making Salesforce CLI commands available to LLM tools like Claude Desktop
The server has 5 tools with clear action-verb naming (sf_cache_clear, sf_cache_refresh, etc.), which is good. However, there are substantial gaps in schema rigor, parameter descriptions, and output documentation. Tool descriptions exist but are brief (10-50 chars), below the 50-200 char baseline for LLM-optimized clarity. Most critically: 3 of 5 tools have EMPTY input schemas ({}), violating the schema requirement for parameterized tools. The 2 tools with schemas (sf_set_project_directory, sf_list_roots) lack comprehensive parameter descriptions, e.g., 'directory' parameter description is adequate, but no validation rules (format, min/max length) are stated. Output schemas are NOT documented anywhere; callers cannot infer what fields to expect. Error handling is minimal, tools return success/failure text but do not guide recovery or classify errors (retryable vs fatal). No security annotations (destructiveHint, readOnlyHint) despite clear risk levels (WRITE vs READ_ONLY). The server relies on utility tools ('roots' pattern) which are deprecated in current MCP spec, this is not penalized here (omitting deprecated patterns is correct), but the tool names themselves (sf_list_roots, sf_set_project_directory) reference a deprecated paradigm.
Clear the cached SF command metadata to force a refresh
Refresh the SF command cache by re-scanning all available commands
Get instructions for setting up Salesforce project directories for command execution
List all configured Salesforce project directories and their metadata
Set a Salesforce project directory for command execution context
3 of 5 tools have empty input schemas ({}).
No output schemas documented for any tool. Callers cannot infer what fields/types to expect. Violates pattern:tool (Document the output schema).
Parameter descriptions lack validation rules (format, min/max, regex). E.g., 'directory' does not state 'absolute path only, must contain sfdx-project.json, min 1 char, max 255 chars'. Violates review:param-validation-rules.
Tool names reference deprecated 'roots' paradigm (sf_list_roots, sf_set_project_directory). Current MCP spec 2026-07-28 moves to file/dir passing via tool parameters or resource URIs. Migration required.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 37 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 40 | - | v1 |
Error handling is text-only, unstructured. Does not classify errors (retryable, user-fixable, fatal) or provide recovery guidance. Violates pattern:error-classification and pattern:recovery-guide.
No security annotations (destructiveHint, readOnlyHint, idempotentHint) on tool definitions. Risk levels are marked (WRITE, READ_ONLY) but not exposed to MCP client. Violates pattern:tool-annotation.
Tool 'sf_detect_project_directory' does NOT detect, it prints instructions. Naming is misleading. LLMs expect 'detect' to return detection results, not static help text. Violates pattern:tool-description (naming must convey actual behavior).