Model Context Protocol server for NixOS, Home Manager, and nix-darwin resources
Single tool 'nix' with complex, overloaded parameter set. Tool name lacks action verb (should be 'search_nix' or 'query_nix'). Description is adequate (95 chars) but parameters are poorly organized. Schema present but parameters lack individual descriptions, only brief hints in the 'description' field. No output schema documented. Parameter 'action' uses free-form string instead of enum despite listing fixed options (search|info|stats|options|channels|flake-inputs|cache). Many parameters are context-dependent with undocumented relationships (e.g., 'source' validity depends on 'action'). No error handling guidance visible. Tool attempts to do too much (search, info, stats, options, channels, flake-inputs, cache) in one call, violating single-responsibility principle.
Query NixOS, Home Manager, Darwin, flakes, FlakeHub, Nixvim, Wiki, nix.dev, Noogle, NixHub, or flake inputs.
Tool name 'nix' lacks action verb. Should be 'search_nix', 'query_nix', or split into separate tools (search_nix_packages, get_nix_info, etc.). LLMs cannot infer intent from a bare noun.
Parameter 'action' accepts free-form string (search|info|stats|options|channels|flake-inputs|cache) but is not declared as an enum. LLMs will hallucinate invalid actions. Must use enum constraint.
Parameters lack individual descriptions. Only 'action', 'query', 'source', 'type', 'channel', 'limit', 'version', 'system' have brief hints. No explanation of when each is required, what values are valid, or how they interact. Violates pattern:tool-description.
No output schema documented. LLMs cannot plan downstream calls or extract structured data. Must document return type (e.g., list of packages with fields: name, version, description, etc.).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Single tool combines 7 distinct actions (search, info, stats, options, channels, flake-inputs, cache). Violates single-responsibility principle. Should split into search_nix_packages, get_nix_info, get_nix_stats, browse_nix_options, list_nix_channels, list_flake_inputs, check_binary_cache.