Budget-aware MCP server that builds minimal Context Packs for AI coding assistants — dependency graph, token budget, local SQLite, no paid APIs.
Two tools with clear verb-noun naming (get_context_pack, get_file_summary) and reasonable descriptions (194 and 47 chars respectively). Input schemas are present and use Zod with type definitions. However, parameter descriptions are sparse or missing context about constraints, ranges, and error conditions. Output schema is not documented, LLMs cannot predict response structure. Error handling is minimal (only get_file_summary returns isError flag). No tool annotations (readOnlyHint, idempotentHint). Composition is sound (single responsibility), but descriptions lack the depth needed for reliable LLM selection and parameter reasoning.
Generate a budget-aware context pack for a coding task. Returns relevant files, dependency graph context, relevance score, and token metrics.
Get minimal structured summary for a single file
Output schema not documented. LLMs cannot predict response structure (fields, types, pagination). Breaks downstream tool chaining and forces agents to guess at response shape.
Parameter descriptions lack constraint details. 'budget_tokens' has no range (min/max). 'mode' enum is documented but no guidance on when to use each. 'task' description is generic ('Task description, e.g. fix login bug'), does not explain what constitutes a valid task or how specificity affects results.
get_file_summary description is too short (47 chars) and lacks context. Does not explain when to call it vs get_context_pack, what 'summary' means (token count? imports? size?), or what happens if file is not found.
No tool annotations. Both tools are read-only (no state mutation), but readOnlyHint is not declared. Agents cannot infer safety/idempotency without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error handling is minimal. get_file_summary returns isError=true for missing files, but error message is JSON-wrapped ('error: File not found: <path>') rather than a structured error response. No recovery guidance (e.g., 'Try get_context_pack to discover available files').