Hungarian Postcode Validator — MCP server backed by official Magyar Posta catalog and KSH settlement data
Five well-named, read-only lookup tools with clear descriptions (avg 85 chars) and complete input schemas. All parameters are typed and described. Output schemas are documented in code with structured responses. Error handling is present but generic, errors return text + structuredContent but lack recovery guidance (e.g., 'try lookup_city() first'). Tool names follow verb_noun pattern (lookup_*, validate_*, list_*, budapest_district_lookup). No critical security issues detected. Main gaps: descriptions could be more LLM-optimized (10-20 chars shorter), error messages lack actionable next steps, and no pagination/limits documented despite potential for large result sets.
Return Budapest postcodes for a district (I-XXIII or 1-23).
List all postcodes in a given Hungarian county (vármegye).
Return all postcodes for a Hungarian city/settlement (diacritic-insensitive).
Return settlement(s) and county for a Hungarian postcode.
Validate that postcode and city are a valid Hungarian pairing.
Error messages lack recovery guidance. Errors return text + structuredContent but do not suggest next steps (e.g., 'postcode out of valid HU range (1011-9999): 999' should suggest 'Try lookup_city() to find valid postcodes for a settlement').
No pagination or result-limit documentation. lookup_city and list_postcodes_in_county could return hundreds of rows (e.g., Budapest has 100+ postcodes). Large result sets waste tokens and risk context window exhaustion. Descriptions should state 'Returns up to N results' and offer pagination guidance.
Descriptions could be more concise and LLM-optimized. Current avg ~85 chars; baseline for A+ is 50-200 chars. Descriptions like 'Return settlement(s) and county for a Hungarian postcode' could be tightened to 'Get settlement and county for a 4-digit Hungarian postcode' (saves ~15 chars, improves clarity).
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 82 | 2025-06-18+ | v2 |
Parameter descriptions lack format/constraint hints. E.g., 'postcode' param says '4-digit Hungarian postcode (int or string of digits)' but does not state the valid range (1011-9999). Add explicit range: '4-digit postcode, 1011-9999 (int or string)'.
No error classification (retryable vs user-fixable vs fatal). All errors return the same structure. Distinguish: 'postcode out of range' is user-fixable (LLM should ask user); 'database error' is retryable; 'invalid input format' is user-fixable. Add 'error_type' field to structuredContent.