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:

  1. 使用 pip 安装:

    pip install mcp-nixos
  2. 使用 uv 安装:

    uv pip install mcp-nixos
  3. 直接使用 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 文件获取更详细的资源和工具使用示例。

信息

分类

开发者工具