MCP server that recommends AI models based on Graphify knowledge graph analysis
Three tools with basic descriptions and partial schemas. All tools have descriptions (10-20 chars baseline met), but parameter descriptions are minimal or absent. Input schemas present but lack depth: analyze_task and analyze_diff have optional parameters with minimal type info; list_models has empty input. Output is JSON strings, not structured schemas. No error handling guidance, no parameter constraints (enums, ranges), no idempotency hints. Naming is verb-forward (analyze_*, list_*) but generic. No tool annotations (readOnlyHint, etc.). Composition is reasonable (three distinct concerns), but parameter design forces LLM to guess graphify_path semantics.
Analyze git diff and recommend the best AI model + effort level for review. Maps changed files to the Graphify knowledge graph to calculate blast radius.
Analyze a task prompt and recommend the best AI model + effort level. Uses the project's Graphify knowledge graph to calculate blast radius, affected files/communities, and complexity score.
List all available AI models with their metadata, costs, and effort levels.
Parameter descriptions missing or trivial. 'graphify_path' appears in two tools with only 'Optional path to Graphify knowledge graph', no guidance on format, default behavior, or error recovery if missing.
Output schema not documented. All three tools return JSON strings, but the structure (fields, types, nesting) is not declared. LLMs cannot plan downstream calls or extract data reliably.
No error handling guidance. If graphify_path is invalid or missing, the code raises FileNotFoundError with a message, but the tool description does not explain recovery steps (e.g., 'Run graphify first' or 'Check config.yaml').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No parameter constraints. 'diff_target' accepts any string; no enum, pattern, or range. LLMs may pass invalid git refs. 'graphify_path' has no validation hint (must be absolute? relative? must exist?).
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint. All three tools are read-only, but this is not declared in the schema, forcing LLMs to infer safety.