Stateless Naver Dictionary MCP server for one-click Vercel deployment
Single-tool server with well-structured schema, clear naming, and good parameter validation. Tool name 'search_words' follows verb_noun convention. Input schema properly defines a constrained array (min 1, max 10 items) and enum-constrained dict_type parameter. Description is present and action-focused. Output schema (SearchResponse) is documented via return type annotation. However, description lacks depth about when to use the tool, what prerequisites exist, and what the response structure contains, falls short of LLM-optimized guidance. No error handling documentation visible. Parameter descriptions are minimal (generic phrases like 'List of Korean words'). Schema is well-formed but sparse on narrative guidance.
查询 1 至 10 个韩语词条,支持韩中和韩英辞典。
Tool description lacks actionable context for LLM selection. Missing: when to use vs alternatives, prerequisites (e.g., character encoding for Korean input), what SearchResponse structure contains, whether calls are retryable, rate limits.
Parameter descriptions are generic and do not specify constraints/formats. 'List of Korean words to search' does not explain: valid character sets, word length limits, whether duplicates are allowed, case sensitivity, romanization handling.
Output schema (SearchResponse) is not visible in the provided code. Return type is declared in the function signature but the Pydantic model definition (src/models.py) is not shown. Cannot verify field naming, required vs optional, nested structure, or whether response follows response-chaining-ids pattern.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No visible error handling or recovery guidance. Code has no documented exception types, error messages, or recovery paths. LLM cannot know: what to do if a word is not found, if API is down, if input is malformed, or if rate limits are exceeded.
Tool does not declare permissions or scope (e.g., 'read:naver-dictionary'). Audit trail is minimal, logging only emits success metrics, not who called the tool or from where.