Validate MCP (Model Context Protocol) config files for Claude, Cursor, Cline, Windsurf, and Zed. CLI + GitHub Action with SARIF output.
mcpcheck defines 5 tools with clear, domain-specific purposes (linting, rule documentation, config fixing). All tools have descriptions (avg ~80 chars) and input schemas with required fields. However, parameter descriptions are sparse or missing entirely, most params lack guidance on format, constraints, or expected values. Output schemas are undocumented; LLMs cannot predict what fields to extract from responses. Error handling is minimal; no recovery guidance or actionable error messages visible. Tool names are verb-forward and unambiguous, but descriptions could be more LLM-optimized (e.g., 'lint_config' lacks 'when to use' context). No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (fix_config is WRITE, others are READ_ONLY).
Return docs for an mcpcheck rule. Pass "all" to dump every rule.
Apply every available autofix to an MCP config and return the new source.
Lint an MCP config file. Returns every issue (severity, rule id, line, message).
List every rule id mcpcheck knows about.
Inventory summary: server count, transport mix, pinning, env usage.
Parameter descriptions missing or minimal. 'path' param appears in 4 tools with no guidance on format (absolute vs tilde-expanded), constraints, or error cases. 'rule_id' in explain_rule lacks examples or enum values. LLMs cannot infer valid inputs.
Output schemas completely undocumented. lint_config returns 'every issue (severity, rule id, line, message)' but no structured schema. LLMs cannot plan downstream processing or extract specific fields reliably.
No tool annotations despite clear risk profiles. fix_config is destructive (WRITE, modifies disk) but lacks destructiveHint. lint_config, explain_rule, list_rules, stats_config are read-only but lack readOnlyHint. Agents cannot reason about safety without annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error handling absent. No guidance on what errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'If path not found, check tilde expansion'). Agents will stall on failures.
fix_config accepts 'write' boolean (default false) but no confirmation or dry-run pattern. Destructive operations should support confirmation to prevent accidental data loss.