Nix开发管理服务器

一款面向Nix开发、检查、诊断和部署的发现优先、策略感知的MCP服务器,提供丰富的工具集和策略控制。

  • by Digimuoto
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Digimuoto/nix-mcp

使用说明

nix mcp v2

用于Nix开发、检查、诊断和部署的发现优先、策略感知的MCP服务器。版本2暴露了一个面向意图的小表面,而 discover 和 command 覆盖已安装的Nix CLI,而无需为代理提供任意shell。

安装并运行

需要Node.js 20+和Nix 2.18或更高版本。

npx -y nix-mcp@2

或者直接使用Nix运行:

nix run github:Digimuoto/nix-mcp

地方发展:

nix develop
npm ci
npm run verify

MCP客户端配置

食品法典委员会(~/.codex/config.toml):

[mcp_servers.nix]
command = "nix"
args = ["run", "github:Digimuoto/nix-mcp"]
env = { NIX_MCP_ROOTS = "/absolute/workspace/path" }

克劳德桌面:

{
  "mcpServers": {
    "nix": {
      "command": "nix",
      "args": ["run", "github:Digimuoto/nix-mcp"],
      "env": { "NIX_MCP_ROOTS": "/absolute/workspace/path" }
    }
  }
}

OpenCode:

{
  "mcp": {
    "nix": {
      "type": "local",
      "command": ["nix", "run", "github:Digimuoto/nix-mcp"],
      "environment": { "NIX_MCP_ROOTS": "/absolute/workspace/path" }
    }
  }
}

初始化后,MCP客户端根被添加到配置的工作区边界。 NIX_MCP_ROOTS 接受冒号分隔的根,对于不提供根的客户端很有用。

默认工具目录

安全配置文件宣传了14种工具:

工具 使用它
workspace_inspect 检测薄片、输出、Nix版本、系统和部署适配器。
discover 排名第一的工具,并安装了先进的Nix操作,以实现自然语言意图。
build 重点构建、模拟运行、输出路径、覆盖、构建器、日志和跟踪。
check 存储库范围的薄片检查,包括无构建和所有系统验证。
run 使用文字参数数组运行flake应用程序。
develop 在选定的开发shell中运行文字命令数组。
eval 将可安装、表达式或文件作为类型化的原始/JSON输出进行求值。
syntax_check 使用解析Nix文件 nix-instantiate --parse.
search 搜索nixpkgs或其他薄片。
flake_inspect 显示输出、锁定元数据或薄片信息。
derivation_inspect 检查构建器、环境、输入、输出和递归推导图。
closure_inspect 检查大小/引用,解释依赖关系,并比较闭包。
run_inspect 从持久数据库中检索诊断或有界stdout/stderr runId.
command 执行由返回的操作 discover 通过经过验证的位置字段和选项。

使用流程 workspace_inspect → 意图工具→ run_inspect.使用 discover 只有当一级目录不合适时。每个进程结果都包含一个稳定的信封,其中包含运行ID、状态、编辑命令、退出代码、持续时间、输出、诊断、流元数据、摘要和有效的下一步操作。

服务器还公开了:

  • 资源: nix://catalog, nix://manual/{tool}, nix://workflow/{name}, nix://workspace/{id}, nix://run/{runId},以及 nix://run/{runId}/{stream}.
  • 提示: inspect-and-build, diagnose-failure, inspect-derivation, update-flake-input,以及 plan-deployment.
  • 用于构建、检查和部署的可选MCP任务。没有任务支持的客户端获得相同的同步结果 runId.

政策

NIX_MCP_PROFILE 控制公告的变异工具和执行权限:

配置文件 添加的工具
safe (默认) 检查、评估、构建、检查、应用程序、开发命令、诊断和策略分类的只读高级命令。
developer format 和 flake_lock.
operator format, flake_lock, deploy_plan,以及 deploy_apply.
v1-compat 已弃用的迁移v1别名;在v3中删除。

其他选择加入仍然是独立的:

变量 权限
NIX_MCP_ALLOW_PROFILE=1 广告和许可 profile_manage.
NIX_MCP_ALLOW_STORE_MAINTENANCE=1 宣传店铺维护,并允许破坏性的店铺运营。
NIX_MCP_ALLOW_SIGNING=1 允许存储签名,但不启用删除、GC、修复或优化。
NIX_MCP_DEPLOY_TARGETS=host1,root@host2 只允许这些部署目标。
NIX_MCP_ALLOW_PROVISIONING=1 根据运营商策略,允许nixos在任何地方应用。

command 使用相同的操作效果图,不能绕过策略。不支持的交互式命令,例如 nix repl、编辑器、守护进程和仅支持TTY的操作被发现为不受支持,而不是被执行。

部署

部署始终分为两个阶段:

  1. deploy_plan 从显式配置的路径解析部署rs、nixos重建或nixos, PATH,或者项目开发shell并执行一个干式操作。
  2. 该计划记录了适配器、目标、确切命令、锁哈希、完整的跟踪/未跟踪源指纹、到期和警告。
  3. deploy_apply 仅接受 planId 并拒绝失败/过期/过时的计划、被拒绝的目标或对同一工作区和目标的并发部署。

没有隐式获取部署工具。集 NIX_MCP_DEPLOY_PATH, NIX_MCP_NIXOS_REBUILD_PATH,或 NIX_MCP_NIXOS_ANYWHERE_PATH 显式固定可执行文件。

版本意识和安全

启动时,nix-mcp检测到 nix --version 并消费 nix __dump-cli 只有当它的形状通过验证时。一张已登记的精选快照涵盖了Nix 2.18-2.34。未知版本保留了一流工具的可用性,并明确地保留了表面目录的不确定性。

进程由带有参数数组的固定可执行文件名生成 shell: false。工作目录必须保留在MCP根目录内。输出将保留在私有临时运行目录中,最多可运行50次,256 MiB或24小时,最旧的第一次驱逐。取消将SIGTERM发送到进程组,并在有限的宽限期后升级为SIGKILL。

验证

npm run verify
nix flake check

测试套件涵盖了模式、精确参数处理、根策略、编校、取消/超时、保留、MCP初始化/资源/提示/任务、真正的Nix评估、部署计划/应用/过时/目标/并发/配置策略以及发现路由。目前,已登记的发现语料库的前5名召回率≥95%,MRR≥0.85,干扰物拒绝率≥95%。

看 MIGRATION.md 和 更改日志.md.

许可证

麻省理工学院