Minimal MCP server: search iconfont.cn by a keyword and return SVG list
Single tool with clear naming (search_icons) and reasonable description (127 chars, within 10-1024 range). Input schema present with proper types and descriptions for both parameters. However, output schema is NOT documented, the tool returns structured data (page, pageSize, total, totalPages, count, icons array with id/name/svg fields) but this is only visible in implementation code, not in the tool definition. No error handling guidance for LLMs (e.g., what to do if keyword is empty or API fails). Missing output schema documentation is a critical gap per pattern:tool and pattern:response-shaper.
Search icons from iconfont.cn by a single keyword. Returns 10 icons per page with their SVG markup; use the page parameter to fetch more.
Output schema not documented. Tool returns {page, pageSize, total, totalPages, count, icons: [{id, name, svg}]} but this structure is invisible to LLMs, only visible in implementation. LLMs cannot plan downstream operations or extract fields reliably.
No error handling guidance. When keyword is empty, API fails, or timeout occurs, the tool throws generic errors. LLMs receive no recovery hints (e.g., 'Try a different keyword' or 'API temporarily unavailable, retry in 30s'). Per pattern:recovery-guide, errors must guide next steps.
Parameter 'page' lacks minimum/maximum constraints. Unbounded page numbers could cause excessive API calls or timeouts. Should specify page range (e.g., 1-1000) in description and schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Result limit not enforced or documented. Tool returns 10 icons per page but no guidance on maximum total results or when to stop paginating. Per mxe:enforce-result-limits, should cap results and offer pagination guidance.
Deprecated protocol version. Server reports protocolVersion '2024-11-05' but current spec is 2026-07-28. Should update to current version and adopt stateless request handling with per-request _meta.