by utensils
Provides real-time NixOS package, configuration option, Home Manager, and nix-darwin data to AI assistants via the Model Context Protocol, eliminating hallucinated answers.
Mcp Nixos delivers accurate, up‑to‑date information about the NixOS ecosystem—including over 130 000 packages, 22 000 configuration options, Home Manager settings, and macOS (nix‑darwin) options—through an MCP server. AI assistants can query this server to obtain concrete package details, version histories, and configuration suggestions without needing a local Nix/NixOS installation.
uvx mcp-nixos
pip install mcp-nixos && mcp-nixos
nix run github:utensils/mcp-nixos
docker run --rm -i ghcr.io/utensils/mcp-nixos
.mcp.json
pointing to the local server.nixos_search
, nixos_info
, home_manager_search
, or nixhub_package_versions
to retrieve data.stable
always points to the current stable channel.uvx mcp-nixos
requires no setup. Pip works if you prefer a traditional installation.nixos_channels()
method to list available channels and pass the desired channel name to other functions.search.nixos.org
and NixHub.io
). Private indexes would require a custom implementation.ELASTICSEARCH_URL
can be overridden; it defaults to https://search.nixos.org/backend
.--option sandbox relaxed
or set sandbox = relaxed
in /etc/nix/nix.conf
.🎉 REFACTORED: Version 1.0.0 represents a complete rewrite that drastically simplified everything. We removed all the complex caching, abstractions, and "enterprise" patterns. Because sometimes less is more, and more is just showing off.
🚀 ASYNC UPDATE: Version 1.0.1 migrated to FastMCP 2.x for modern async goodness. Because who doesn't love adding
await
to everything?
🚨 No Nix/NixOS Required! This tool works on any system - Windows, macOS, Linux. You're just querying web APIs.
{
"mcpServers": {
"nixos": {
"command": "uvx",
"args": ["mcp-nixos"]
}
}
}
{
"mcpServers": {
"nixos": {
"command": "nix",
"args": ["run", "github:utensils/mcp-nixos", "--"]
}
}
}
{
"mcpServers": {
"nixos": {
"command": "docker",
"args": ["run", "--rm", "-i", "ghcr.io/utensils/mcp-nixos"]
}
}
}
That's it. Your AI assistant now has access to real NixOS data instead of making things up. You're welcome.
MCP-NixOS is a Model Context Protocol server that gives your AI assistant accurate, real-time information about:
nixos_search(query, type, channel)
- Search packages, options, or programsnixos_info(name, type, channel)
- Get detailed info about packages/optionsnixos_stats(channel)
- Package and option countsnixos_channels()
- List all available channelsnixos_flakes_search(query)
- Search community flakesnixos_flakes_stats()
- Flake ecosystem statisticsnixhub_package_versions(package, limit)
- Get version history with commit hashesnixhub_find_version(package, version)
- Smart search for specific versionshome_manager_search(query)
- Search user config optionshome_manager_info(name)
- Get option details (with suggestions!)home_manager_stats()
- See what's availablehome_manager_list_options()
- Browse all 131 categorieshome_manager_options_by_prefix(prefix)
- Explore options by prefixdarwin_search(query)
- Search macOS optionsdarwin_info(name)
- Get option detailsdarwin_stats()
- macOS configuration statisticsdarwin_list_options()
- Browse all 21 categoriesdarwin_options_by_prefix(prefix)
- Explore macOS optionsRemember: You DON'T need Nix/NixOS installed! This tool runs anywhere Python runs.
# Run directly with uvx (no installation needed)
uvx mcp-nixos
# Or install globally
pip install mcp-nixos
uv pip install mcp-nixos
# Run without installing
nix run github:utensils/mcp-nixos
# Install to profile
nix profile install github:utensils/mcp-nixos
await
stable
always points to current stableWant to test your changes in Claude Code or another MCP client? Create a .mcp.json
file in your project directory:
{
"mcpServers": {
"nixos": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/home/hackerman/Projects/mcp-nixos",
"mcp-nixos"
]
}
}
}
Replace /home/hackerman/Projects/mcp-nixos
with your actual project path (yes, even you, Windows users with your C:\Users\CoolDev\...
paths).
This .mcp.json
file:
nix develop
menu # Shows all available commands
# Common tasks
run # Start the server (now with FastMCP!)
run-tests # Run all tests (now async!)
lint # Format and check code (ruff replaced black/flake8)
typecheck # Check types (mypy still judges you)
build # Build the package
publish # Upload to PyPI (requires credentials)
# Install development dependencies
uv pip install -e ".[dev]" # or pip install -e ".[dev]"
# Run the server locally
uv run mcp-nixos # or python -m mcp_nixos.server
# Development commands
pytest tests/ # Now with asyncio goodness
ruff format mcp_nixos/ # black is so 2023
ruff check mcp_nixos/ # flake8 is for boomers
mypy mcp_nixos/ # Still pedantic as ever
# Build and publish
python -m build # Build distributions
twine upload dist/* # Upload to PyPI
Just one. We're minimalists now:
Variable | Description | Default |
---|---|---|
ELASTICSEARCH_URL |
NixOS API endpoint | https://search.nixos.org/backend |
If you encounter this error when running via Nix:
error: derivation '/nix/store/...-python3.11-watchfiles-1.0.4.drv' specifies a sandbox profile,
but this is only allowed when 'sandbox' is 'relaxed'
Solution: Run with relaxed sandbox mode:
nix run --option sandbox relaxed github:utensils/mcp-nixos --
Why this happens: The watchfiles
package (a transitive dependency via MCP) requires custom sandbox permissions for file system monitoring. This is only allowed when Nix's sandbox is in 'relaxed' mode instead of the default 'strict' mode.
Permanent fix: Add to your /etc/nix/nix.conf
:
sandbox = relaxed
This project queries data from several amazing services:
Note: These services have not endorsed this tool. We're just grateful API consumers.
MIT - Because sharing is caring, even if the code hurts.
Created by James Brink and maintained by masochists who enjoy Nix and async/await patterns.
Special thanks to the NixOS project for creating an OS that's simultaneously the best and worst thing ever.
Please log in to share your review and rating for this MCP.
Discover more MCP servers with similar functionality and use cases
by zed-industries
Provides real-time collaborative editing powered by Rust, enabling developers to edit code instantly across machines with a responsive, GPU-accelerated UI.
by cline
Provides autonomous coding assistance directly in the IDE, enabling file creation, editing, terminal command execution, browser interactions, and tool extension with user approval at each step.
by continuedev
Provides continuous AI assistance across IDEs, terminals, and CI pipelines, offering agents, chat, inline editing, and autocomplete to accelerate software development.
by github
Enables AI agents, assistants, and chatbots to interact with GitHub via natural‑language commands, providing read‑write access to repositories, issues, pull requests, workflows, security data and team activity.
by block
Automates engineering tasks by installing, executing, editing, and testing code using any large language model, providing end‑to‑end project building, debugging, workflow orchestration, and external API interaction.
by RooCodeInc
An autonomous coding agent that lives inside VS Code, capable of generating, refactoring, debugging code, managing files, running terminal commands, controlling a browser, and adapting its behavior through custom modes and instructions.
by lastmile-ai
A lightweight, composable framework for building AI agents using Model Context Protocol and simple workflow patterns.
by firebase
Provides a command‑line interface to manage, test, and deploy Firebase projects, covering hosting, databases, authentication, cloud functions, extensions, and CI/CD workflows.
by gptme
Empowers large language models to act as personal AI assistants directly inside the terminal, providing capabilities such as code execution, file manipulation, web browsing, vision, and interactive tool usage.