MCP Server validation tool - checks protocol compliance, code quality, best practices, and LLM ergonomics
Five tools with clear action verbs and comprehensive descriptions (194 - 280 chars, within baseline 34 - 392). All tools have documented input schemas with typed parameters and descriptions. Output schemas are documented in descriptions. Tool composition is sound: each tool has one responsibility (check, list, get, suggest). Error handling guidance is present in descriptions. Main gaps: no enum constraints on profile/bearer_token parameters, no explicit pagination/limit guidance for list_checks output, and no per-parameter format constraints (e.g., timeout range, protocol_revision format). Security is adequate (no secrets in params), but no explicit permission gates or audit trail documentation.
Check an MCP server for protocol compliance and quality. Validates an MCP server against the MCP specification, checking: - Protocol compliance (JSON-RPC 2.0, handshake, capabilities) - Tool discovery and execution - Error handling
Get available fix packs. Fix packs are grouped suggestions for remediation: - docs_baseline: Documentation improvements - schema_hardening: Tool schema improvements - error_hygiene: Error handling improvements - security_baseline: Security improvements - lifecycle_compliance: MCP lifecycle handling - llm_polish: LLM ergonomics improvements - transport_hardening: Transport layer improvements
Get available validation profiles. Profiles determine how strictly servers are evaluated: - lenient: Minimum viable (50% maturity) - standard: Recommended (70% maturity) - strict: High bar (85% maturity) - paranoid: Maximum quality (95% maturity)
List all available validation checks. Returns all checks organized by category, including: - Check ID and name - Severity level (FAIL/WARN/INFO) - Description of what is checked Use this to understand what validations will be performed.
Suggest fix packs based on validation results. Takes the output from check_server and groups failed/warned checks into actionable fix packs, sorted by impact.
profile parameter lacks enum constraint; accepts 'lenient|standard|strict|paranoid' but no formal enum in schema forces LLM to guess valid values
timeout parameter has no min/max bounds; unbounded float allows LLM to pass absurd values (0, 999999) that break subprocess handling
list_checks and get_fix_packs return unbounded dictionaries with no pagination or limit guidance; large result sets risk context window exhaustion
suggest_fixes accepts validation_result as free-form object with no schema; LLM cannot validate structure before passing, risking silent failures
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
bearer_token parameter accepts secrets as tool input; should use server-side secret injection via environment variables to prevent credential leakage in logs