Quick Start (Because You Want to Use It NOW)π 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.
Option 1: Using uvx (Recommended for most users){ "mcpServers": { "nixos": { "command": "uvx", "args": ["mcp-nixos"] } } }Option 2: Using Nix (For Nix users)
{ "mcpServers": { "nixos": { "command": "nix", "args": ["run", "github:utensils/mcp-nixos", "--"] } } }Option 3: Using Docker (Container lovers unite)
{ "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.
For Regular Humans (Windows/Mac/Linux)# Run directly with uvx (no installation needed) uvx mcp-nixos # Or install globally pip install mcp-nixos uv pip install mcp-nixosFor Nix Users (You Know Who You Are)
# Run without installing nix run github:utensils/mcp-nixos # Install to profile nix profile install github:utensils/mcp-nixosFeatures Worth Mentioning π Version 1.0.1: The Async Revolution (After The Great Simplification)
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)Without Nix (The Path of Pain)
# 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:
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
:
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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4