Nix configuration fails in confusing ways when an attribute is nearly right, and a model trained on an older nixpkgs is a reliable source of nearly-right. Two tools cover eleven sources deliberately — the whole surface is small enough to keep loaded, and the names it returns come from the live channels rather than memory.
Two tools against the Nix ecosystem's own sources: one queries NixOS, Home Manager, nix-darwin, flakes, FlakeHub, Nixvim, NVF, the Wiki, nix.dev, Noogle and NixHub; the other returns a package's version history from NixHub. It queries public APIs, so the machine running it does not need Nix installed.
- Packages, options and programs searched across NixOS, Home Manager and nix-darwin, scoped by channel, type and result count
- One package or option read in detail, rather than skimmed from a search result
- Option trees browsed by prefix — Home Manager, Darwin, Nixvim, NVF and Noogle — which is how you find the setting whose exact name you do not know
- Community flakes and the FlakeHub registry searched from the same call
- Nix function signatures from Noogle, wiki articles from wiki.nixos.org, and the official guides on nix.dev
- The available NixOS channels listed, and counts and categories when you want to know how big a search space is
- Binary cache status from cache.nixos.org, with download sizes, so you know whether a package will be fetched or built
- Local flake inputs read out of the Nix store, for the one case that does need Nix on the machine
- A package's version history from NixHub, with the commit hash behind each version, filterable to the one version you care about
Python 3.11 or newer with uv — no account and no key, and no NixOS: it works on Windows and macOS too, because everything is a query against public APIs. A Nix flake and a container image are published as alternatives, and MCP_NIXOS_TRANSPORT=http turns it into a remote server on a host and port you choose. MIT licensed.
One command — uvx mcp-nixos
