A sample Node.js MCP Server template for AAC (Augmentative and Alternative Communication) systems with tools for pageset conversion and processor lookup.
Three tools with mixed definition quality. Naming follows verb_noun conventions (aac_processor_lookup, aac_pageset_converter, calculate_sum). All tools have descriptions present (10 - 1024 char range). Schemas are visible for all tools with proper JSON Schema structure including types and descriptions. However, several parameters lack actionable constraints (no enums where helpful, no format specifications), and output schemas are not documented. The 'calculate_sum' tool is trivial and lowers overall quality despite being well-formed. No error handling guidance visible in schemas or descriptions.
Convert AAC pagesets between systems and propose custom grid pages (core, alphabet, quick phrases, and fringe).
Filter and inspect AAC processor capabilities for this project.
Add two numbers together
Output schemas not documented. LLMs cannot plan downstream calls or extract results without knowing what fields the tools return.
aac_processor_lookup 'model' and 'manufacturer' parameters accept free-form strings with no enum constraint. Should define valid manufacturers (e.g. 'Tobii', 'PRC-Saltillo', 'Liberator') and model formats to prevent invalid queries.
aac_pageset_converter 'sourceSystem' and 'targetSystem' accept free-form strings. Should be enums listing valid AAC systems (Grid for iPad, TouchChat, Proloquo2Go, TD Snap, etc.) to guide LLM selection and prevent typos.
aac_pageset_converter 'symbolSet' parameter lacks enum constraint. Should list valid options (PCS, SymbolStix, Text-only, Blissymbol, etc.) to prevent hallucinated values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
No error handling guidance in any tool. Descriptions do not explain what errors may occur, when to retry, or what to do next (e.g. 'If system not found, call list_aac_systems() first').
calculate_sum description is minimal ('Add two numbers together'). While technically sufficient, it could note that both 'a' and 'b' are required and provide context when to use this tool (e.g. 'For arithmetic calculations in AAC system bandwidth or capacity planning').
aac_processor_lookup 'minChannels' and 'minBitrateKbps' parameters lack range constraints in descriptions. Should specify min/max bounds (e.g. 'minChannels: 1 - 16', 'minBitrateKbps: 8 - 320') to prevent invalid queries.
aac_pageset_converter 'targetRows' and 'targetColumns' parameters lack range constraints. Should document valid grid dimensions (e.g. '2 - 10 rows', '2 - 15 columns') to prevent invalid overrides.