🎉 重构完成: 版本1.0.0代表了一次彻底的重写,极大地简化了一切。我们移除了所有复杂的缓存、抽象和“企业级”模式。因为有时候少即是多,而多只是炫耀。
🚀 异步更新: 版本1.0.1迁移到了FastMCP 2.x,带来了现代的异步体验。因为谁不喜欢在所有地方都加上
await呢?
🚨 不需要Nix/NixOS! 这个工具可以在任何系统上运行——Windows、macOS、Linux。你只是在查询Web API。
{
"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"]
}
}
}

就这样。你的AI助手现在可以访问真实的NixOS数据,而不是编造东西。不客气。
MCP-NixOS是一个模型上下文协议服务器,它为你的AI助手提供准确、实时的信息,包括:
nixos_search(query, type, channel) - 搜索包、选项或程序nixos_info(name, type, channel) - 获取包/选项的详细信息nixos_stats(channel) - 包和选项的数量统计nixos_channels() - 列出所有可用的频道nixos_flakes_search(query) - 搜索社区Flakesnixos_flakes_stats() - Flake生态系统统计nixhub_package_versions(package, limit) - 获取带有提交哈希的版本历史nixhub_find_version(package, version) - 智能搜索特定版本home_manager_search(query) - 搜索用户配置选项home_manager_info(name) - 获取选项详细信息(带建议!)home_manager_stats() - 查看可用的选项home_manager_list_options() - 浏览所有131个类别home_manager_options_by_prefix(prefix) - 按前缀探索选项darwin_search(query) - 搜索macOS选项darwin_info(name) - 获取选项详细信息darwin_stats() - macOS配置统计darwin_list_options() - 浏览所有21个类别darwin_options_by_prefix(prefix) - 探索macOS选项记住:你不需要安装Nix/NixOS! 这个工具可以在任何运行Python的地方运行。
# 直接用uvx运行(无需安装)
uvx mcp-nixos
# 或者全局安装
pip install mcp-nixos
uv pip install mcp-nixos

# 不安装直接运行
nix run github:utensils/mcp-nixos
# 安装到profile
nix profile install github:utensils/mcp-nixos

awaitstable始终指向当前稳定版想在Claude Code或其他MCP客户端中测试你的更改吗?在项目目录中创建一个.mcp.json文件:
{
"mcpServers": {
"nixos": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/home/hackerman/Projects/mcp-nixos",
"mcp-nixos"
]
}
}
}

将/home/hackerman/Projects/mcp-nixos替换为你的实际项目路径(是的,即使是Windows用户,用你的C:\Users\CoolDev\...路径)。
这个.mcp.json文件:
nix develop
menu # 显示所有可用命令
# 常见任务
run # 启动服务器(现在有FastMCP!)
run-tests # 运行所有测试(现在异步!)
lint # 格式化并检查代码(ruff取代了black/flake8)
typecheck # 检查类型(mypy仍然在评判你)
build # 构建包
publish # 上传到PyPI(需要凭证)

# 安装开发依赖
uv pip install -e ".[dev]" # 或者 pip install -e ".[dev]"
# 本地运行服务器
uv run mcp-nixos # 或者 python -m mcp_nixos.server
# 开发命令
pytest tests/ # 现在有asyncio的好处
ruff format mcp_nixos/ # black已经是2023年的东西了
ruff check mcp_nixos/ # flake8是给老古董用的
mypy mcp_nixos/ # 仍然一如既往的挑剔
# 构建和发布
python -m build # 构建发行版
twine upload dist/* # 上传到PyPI

只有一个。我们现在是极简主义者:
| 变量 | 描述 | 默认值 |
|---|---|---|
ELASTICSEARCH_URL |
NixOS API端点 | https://search.nixos.org/backend |
如果你在通过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'
解决方案: 使用宽松沙盒模式运行:
nix run --option sandbox relaxed github:utensils/mcp-nixos --
为什么会出现这个问题: watchfiles包(通过MCP传递的依赖项)需要自定义沙盒权限来进行文件系统监控。这只有在Nix的沙盒模式为'relaxed'而不是默认的'strict'模式时才被允许。
永久修复: 添加到你的/etc/nix/nix.conf:
sandbox = relaxed
这个项目查询了来自几个出色服务的数据:
注意:这些服务并未认可此工具。我们只是感激的API消费者。
MIT - 因为分享是关心,即使代码让人痛苦。
由James Brink创建,并由享受Nix和async/await模式的受虐狂维护。
特别感谢NixOS项目,他们创造了一个既是最好的也是最糟糕的操作系统。