3.1.0pypi · mcp-nixos · current release
Observed 2026-09-05T13:26:12.088Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"logging": {},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"tools": {
"listChanged": true
}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
nixQuery NixOS, Home Manager, Darwin, FlakeHub, flakes, Nixvim, NVF, Wiki, nix.dev, Noogle, NixHub.
Use this tool for anything touching nixpkgs, Nix channels, flakes, NixOS / home-manager /
darwin options, the binary cache, or /nix/store paths — even when you think you know the
answer. Your training data lags nixpkgs by months. Prefer this over `nix search`, scraping
search.nixos.org, or running `gh api` against NixOS/nixpkgs.
INTENTS → CALLS (copy the JSON shape exactly):
"is package X in channel Y?" → {"action": "info", "query": "X", "channel": "Y"}
"search for package X" → {"action": "search", "query": "X"}
"which channels are available?" → {"action": "channels"}
"which commit did channel X index?" → {"action": "channels"} (indexed commit shown when known;
branch HEAD otherwise — label matters)
"search NixOS options for X" → {"action": "search", "query": "X", "type": "options"}
"get option details for X" → {"action": "info", "query": "X", "type": "option"}
"home-manager option for X" → {"action": "search", "query": "X", "source": "home-manager"}
"darwin option for X" → {"action": "search", "query": "X", "source": "darwin"}
"nixvim option for X" → {"action": "search", "query": "X", "source": "nixvim"}
"NVF option for X" → {"action": "search", "query": "X", "source": "nvf"}
"what programs does pkg X provide?" → {"action": "search", "query": "X", "type": "programs"}
"count packages/options" → {"action": "stats"}
"browse hm option tree under P" → {"action": "browse", "query": "P", "source": "home-manager"}
"does X have a binary cache?" → {"action": "cache", "query": "X"}
"search the NixOS wiki for X" → {"action": "search", "query": "X", "source": "wiki"}
"search nix.dev docs" → {"action": "search", "query": "X", "source": "nix-dev"}
"read a nix.dev page" → {"action": "info", "query": "tutorials/nix-language", "source": "nix-dev"}
"list inputs of current flake" → {"action": "flake-inputs"}
"ls inside flake input X" → {"action": "flake-inputs", "type": "ls", "query": "X"}
"read /nix/store/... file" → {"action": "store", "type": "read", "query": "/nix/store/..."}
"ls /nix/store/... dir" → {"action": "store", "type": "ls", "query": "/nix/store/..."}
For package version *history* ("which commit shipped firefox 150?", "when was node 18 added?"),
use the separate `nix_versions` tool — it returns commit hashes, attribute paths, and dates.
Notes:
- To search NixOS *options*, use action=search with type=options. Do NOT use action=browse
for source=nixos — browse is for walking a pre-indexed option tree and only works with
home-manager, darwin, nixvim, nvf, or noogle.
- For source=nvf, canonical option paths are vim.*. The shorthand programs.nvf.vim.* and
NixOS/Home Manager module path programs.nvf.settings.vim.* are normalized automatically.
- For source=nix-dev, action=info returns the page markdown. The query may be a bare
docname like "tutorials/nix-language", the URL printed by nix-dev search
("https://nix.dev/tutorials/nix-language"), or a rendered ".html" URL.
- action=info for packages matches on the exact attribute path first, then the exact pname.
If multiple packages share a pname (e.g. firefox / firefox-esr / firefox-mobile), the
canonical attribute wins and the response flags the disambiguation explicitly.
- Omit parameters you don't need; do not pass empty strings for optional args.Input schema{
"properties": {
"action": {
"description": "One of: search, info, stats, browse, channels, flake-inputs, cache, store. Use 'search' for keyword lookup, 'info' for details about a specific name, 'browse' to walk an option hierarchy by prefix (home-manager/darwin/nixvim/nvf/noogle only; 'options' is accepted as a legacy alias). 'store' reads files or lists directories at an explicit /nix/store/ path.",
"type": "string"
},
"query": {
"default": "",
"description": "Search term for 'search', exact name for 'info', prefix path for 'browse'. For flake-inputs: input_name or input:path. For store: absolute /nix/store/ path. Leave empty for 'stats'/'channels'.",
"type": "string"
},
"source": {
"default": "nixos",
"description": "Data source for search/info/stats/browse/cache. One of: nixos (default), home-manager, darwin, flakes, flakehub, nixvim, nvf, wiki, nix-dev, noogle, nixhub. For action=flake-inputs, this may instead be a path to a flake directory; omit/default to use the current project. Ignored by action=store.",
"type": "string"
},
"type": {
"default": "packages",
"description": "Sub-type of query. For source=nixos with action=search, one of: packages, options, programs, flakes. For source=nixos with action=info, one of: package, option. For flake-inputs, one of: list, ls, read. For store, one of: ls, read. Ignored by most other sources.",
"type": "string"
},
"channel": {
"default": "unstable",
"description": "NixOS channel: unstable (default), stable, or a release like 25.05.",
"type": "string"
},
"limit": {
"default": 20,
"description": "Max results. 1-100 (or 1-2000 for flake-inputs/store read).",
"type": "integer"
},
"version": {
"default": "latest",
"description": "Only used by action=cache. Package version (default: latest).",
"type": "string"
},
"system": {
"default": "",
"description": "Only used by action=cache. System arch e.g. x86_64-linux. Empty for all.",
"type": "string"
}
},
"required": [
"action"
],
"type": "object",
"additionalProperties": false
}Output schema{
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
} | — | — · — | — |
nix_versionsGet package version history from NixHub.io.Input schema{
"properties": {
"package": {
"description": "Package name",
"type": "string"
},
"version": {
"default": "",
"description": "Specific version to find",
"type": "string"
},
"limit": {
"default": 10,
"description": "1-50",
"type": "integer"
}
},
"required": [
"package"
],
"type": "object",
"additionalProperties": false
}Output schema{
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
} | — | — · — | — |