使用说明
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的操作被发现为不受支持,而不是被执行。
部署
部署始终分为两个阶段:
deploy_plan从显式配置的路径解析部署rs、nixos重建或nixos,PATH,或者项目开发shell并执行一个干式操作。- 该计划记录了适配器、目标、确切命令、锁哈希、完整的跟踪/未跟踪源指纹、到期和警告。
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.
许可证
麻省理工学院