MCP-NixOS 使用说明
项目简介
MCP-NixOS 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为 AI 助手提供关于 NixOS、Home Manager 和 nix-darwin 的准确信息,防止其在这些领域产生“幻觉”。它通过标准化的 MCP 协议,向 LLM 客户端提供访问 NixOS 包、系统选项、Home Manager 配置以及 nix-darwin macOS 配置的能力。
主要功能点
- NixOS 资源访问: 提供 NixOS 软件包和系统选项的实时访问,支持不稳定版、稳定版和特定版本通道。
- Home Manager 支持: 允许 LLM 查询 Home Manager 用户配置选项,包括程序、服务和设置。
- nix-darwin 支持: 为 macOS 用户提供 nix-darwin 配置选项的访问能力。
- 智能缓存: 内置缓存系统,减少网络请求,提高响应速度,并支持离线访问缓存数据。
- 丰富的搜索功能: 支持快速查找 NixOS 软件包、系统选项以及 Home Manager 和 nix-darwin 的配置选项。
安装步骤
您可以使用以下任一方式安装 MCP-NixOS:
-
使用 pip 安装:
pip install mcp-nixos -
使用 uv 安装:
uv pip install mcp-nixos -
直接使用 uvx 运行: (推荐)
uvx --install-deps mcp-nixos
服务器配置
为了让 MCP 客户端(如 Claude)连接到 MCP-NixOS 服务器,您需要在客户端的配置文件(例如 '~/.config/claude/config.json')中添加 MCP 服务器的配置信息。以下是一个 JSON 格式的配置示例,您可以根据需要进行调整:
{ "mcpServers": { "nixos": { // 服务器名称,可以自定义 "command": "uvx", // 运行服务器的命令,这里假设 uvx 可用 "args": ["mcp-nixos"] // 传递给命令的参数,这里是 mcp-nixos 服务器程序名 // "env": { ... } // (可选) 环境变量配置 } } }
- server name (服务器名称): 'nixos' - 您可以自定义服务器名称,例如 'nixos-server',客户端将使用此名称引用服务器。
- command: 'uvx' 或 'python' - 运行 MCP-NixOS 服务器的命令。如果您使用 'uvx' 安装,则可以使用 'uvx mcp-nixos' 直接运行;如果使用 'pip' 或 'uv pip' 安装,则可能需要使用 'python -m mcp_nixos.main' 或 'uv run -m mcp_nixos.main'。建议使用 'uvx mcp-nixos' 以简化配置。
- args: '["mcp-nixos"]' 或 '["-m", "mcp_nixos.main"]' - 传递给 'command' 的参数,用于指定要运行的 MCP-NixOS 服务器程序。
- env: '{}' (可选) - 如果您需要设置额外的环境变量,可以在这里配置。例如,如果您需要修改日志级别,可以添加 '"env": { "LOG_LEVEL": "DEBUG" }'。
基本使用方法
配置完成后,您可以在支持 MCP 协议的 LLM 应用中使用以下格式访问 NixOS、Home Manager 和 nix-darwin 的资源和工具:
-
NixOS 资源:
- '~nixos://package/{name}' - 获取软件包信息
- '~nixos://option/{name}' - 获取系统选项信息
- '~nixos://search/packages/{query}' - 搜索软件包
- '~nixos://search/options/{query}' - 搜索系统选项
- '~nixos://search/programs/{name}' - 搜索提供特定程序的软件包
- '~nixos://packages/stats' - 获取软件包统计信息
-
Home Manager 资源:
- '~home-manager://search/options/{query}' - 搜索 Home Manager 选项
- '~home-manager://option/{name}' - 获取 Home Manager 选项信息
- '~home-manager://options/prefix/{prefix}' - 获取特定前缀下的 Home Manager 选项
- '~home-manager://options/{category}' - 获取特定类别的 Home Manager 选项
- '~home-manager://options/list' - 列出 Home Manager 选项类别
- '~home-manager://options/stats' - 获取 Home Manager 选项统计信息
-
nix-darwin 资源:
- '~darwin://search/options/{query}' - 搜索 nix-darwin 选项
- '~darwin://option/{name}' - 获取 nix-darwin 选项信息
- '~darwin://options/prefix/{prefix}' - 获取特定前缀下的 nix-darwin 选项
- '~darwin://options/{category}' - 获取特定类别的 nix-darwin 选项
- '~darwin://options/categories' - 列出 nix-darwin 选项类别
- '~darwin://options/stats' - 获取 nix-darwin 选项统计信息
-
NixOS 工具:
- '~nixos_search(query, type, channel)' - 搜索 NixOS 资源 (软件包、选项、程序)
- '~nixos_info(name, type, channel)' - 获取 NixOS 资源的详细信息
- '~nixos_stats(channel)' - 获取 NixOS 统计信息
-
Home Manager 工具:
- '~home_manager_search(query)' - 搜索 Home Manager 配置选项
- '~home_manager_info(name)' - 获取 Home Manager 配置选项的详细信息
- '~home_manager_options_by_prefix(option_prefix)' - 按前缀列出 Home Manager 选项
- '~home_manager_list_options()' - 列出 Home Manager 选项类别
-
nix-darwin 工具:
- '~darwin_search(query)' - 搜索 nix-darwin 配置选项
- '~darwin_info(name)' - 获取 nix-darwin 配置选项的详细信息
- '~darwin_options_by_prefix(option_prefix)' - 按前缀列出 nix-darwin 选项
- '~darwin_list_options()' - 列出 nix-darwin 选项类别
- '~darwin_stats()' - 获取 nix-darwin 统计信息
请参考 README.md 文件获取更详细的资源和工具使用示例。
信息
分类
开发者工具