🎉 重构完成: 版本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() - flakes生态系统统计数据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的沙箱处于‘放松’模式而不是默认的‘严格’模式时才被允许。
永久修复:在你的/etc/nix/nix.conf中添加:
sandbox = relaxed
该项目查询来自多个令人惊叹的服务的数据:
注意:这些服务并未认可此工具。我们只是感激的API消费者。
MIT - 因为分享是关爱,即使代码会痛。
由James Brink创建,并由享受Nix和async/await模式的受虐狂维护。
特别感谢NixOS项目,因为它同时是最棒和最糟糕的东西。