MCP server for ally - exposes project accessibility patterns to Copilot CLI
Four tools with basic descriptions and Zod schemas, but significant gaps in parameter documentation and output structure. All tools are READ_ONLY and lack error handling guidance. Descriptions are present (avg ~100 chars) but lack actionable context for LLM selection. Parameter descriptions exist but are minimal. No output schemas documented. Tool names follow verb_noun pattern correctly. Telemetry logging present but not part of MCP spec.
Analyze existing ARIA patterns in React/Vue components to ensure consistent accessibility fixes
Extract design tokens (colors, spacing) from CSS/SCSS/Tailwind config for WCAG-compliant fixes
Retrieve previously applied accessibility fixes to maintain consistency
Get a summary of current accessibility issues from the latest scan
No output schemas documented. Tools return text content but LLM cannot infer structure of returned data (e.g., get_component_patterns returns markdown summary, but no schema defines the fields or format). This forces LLMs to parse unstructured text.
Parameter descriptions are minimal (5-15 chars). 'Directory to analyze (defaults to current directory)' is adequate, but 'Filter by issue type' lacks examples of valid values (image-alt, button-name, etc.). LLMs cannot infer valid enum values from vague descriptions.
No error handling guidance. Tools may fail (directory not found, no patterns detected) but responses do not guide LLM on recovery. get_component_patterns returns 'No component patterns found' but does not suggest next steps (e.g., 'Try a different directory' or 'Check if components use a different naming convention').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
get_scan_summary accepts no parameters (empty input schema). This tool cannot be filtered or scoped, it always returns the same summary. LLMs cannot ask for summaries of specific issue types or time ranges, limiting utility.
No pagination or result limits documented. get_component_patterns may return hundreds of components; no limit or cursor mechanism shown. Large unstructured responses waste tokens and risk context window exhaustion.