MCP server for the RAE (Real Academia Española) API providing access to Spanish dictionary and word information
This RAE MCP server has three tools for Spanish dictionary lookups. Tool naming is clear and action-oriented (get_word_info, get_daily_word, get_random_word), following verb_noun convention. However, the server has critical gaps in schema completeness, parameter descriptions, and output documentation. Descriptions are present but generic. Most critically, parameter descriptions are missing or minimal, the 'min_length' and 'max_length' parameters in get_random_word lack descriptions in the visible schema. The server logs tool calls via zerolog but provides no structured error recovery guidance. Input validation exists (type checking, nil guards) but error messages are generic. Output formatting is present (formatWordInfo, formatDailyWord) but the output schemas themselves are not documented in tool definitions, only string JSON dumps are returned, making it impossible for LLMs to know what fields to expect. The codebase shows reasonable engineering (error propagation, logging), but from an MCP tool definition standpoint, the definition quality is below production baseline.
Get the word of the day from RAE dictionary
Get a random word from RAE dictionary
Get detailed information about a word from RAE API
Parameter descriptions missing or incomplete. The 'min_length' and 'max_length' parameters for get_random_word are typed as 'number' but lack descriptions explaining their range, units, or constraints (e.g., minimum value 1, maximum value 100). Parameter schema shows type but no description field in the JSON Schema.
Output schemas not documented. All three tools return text (mcp.NewToolResultText()), but the structure and fields of that text output are not specified in the tool definition. LLMs cannot know what JSON fields to expect from get_word_info results, preventing structured downstream processing.
Error messages are generic and do not guide recovery. Example: 'RAE API search error: %v' provides no actionable guidance. Should include: 'Word not found. Try get_daily_word() for inspiration, or check spelling.' Error classification (retryable vs. fatal) is absent.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 9 | - | v1 |
Tool description for get_word_info mentions a 'lang' parameter ('Default to Spanish') in the code but does not declare it in the input schema shown in the prompt. Schema shows only 'word' parameter. Either the schema is incomplete in the provided snapshot, or the 'lang' parameter is undeclared in the actual tool definition.
No pagination or result limits documented. If get_word_info returns large definitions, there is no documented limit or pagination mechanism. Tool description does not state max result size or offer pagination parameters.