Skip to main content
Glama
JEFF7712

nix-agent

by JEFF7712

A local MCP server that gives AI agents composable NixOS / Home Manager operations: build, diff, switch, and generations for the operational core, plus eval, locate, and check for config introspection.

It pairs with mcp-nixos. nix-agent operates on your actual configuration, mcp-nixos handles package and option discovery. Optional local usage logging (NIX_AGENT_USAGE_LOG=1) records per-call byte accounting; run nix-agent usage to summarize.

The documented default is high trust: unprompted switch / generations and passwordless sudo narrowed to this machine's flake. Lower trust (host prompts, a sudo password) is an opt-down.

Experimental and a work in progress. Feedback and contributions welcome.

Install

Paste this to a coding agent (Codex, Claude Code, opencode, ...) and it does the install:

Read https://raw.githubusercontent.com/JEFF7712/nix-agent/main/docs/agent-install.md and follow every step to install nix-agent on this NixOS system, install the companion skills, and register nix-agent in my MCP settings for this machine.

Or do it by hand, see docs/usage.md.

Related MCP server: Terminal MCP Server

Docs

The published documentation pages are generated directly from these Markdown files.


The nix-agent logo adapts the Nix snowflake from NixOS/nixos-artwork, licensed CC-BY 4.0.

Available Tools

7 tools
buildA

Start a persistent background build of the system/HM closure, without activation. Returns job_id promptly. Poll build(job_id=...) for bounded live log tails and status: running, ok, failed, or interrupted. Pass the previous poll's log_offset to receive only new stderr. Jobs survive MCP disconnects and server restarts; repeated starts for the same running target reuse its job. On success returns store_path; successful output is a short tail with log_truncated and full local log_paths. on build failure includes failed_derivation{drv, log_tail} when available.

NameRequiredDescriptionDefault
modeNonixos
job_idNo
flake_uriNo
log_offsetNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so well: jobs survive MCP disconnects and server restarts, polling returns bounded log tails, success includes store_path and truncated log details, and failures include failed_derivation when available. These are concrete operational traits beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well front-loaded, starting with the core action and then describing polling and return behavior. It is longer than ideal, but most sentences carry useful operational detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation tool with an output schema, the description covers the important lifecycle and return behavior: job_id, polling statuses, persistence, log offsets, success store_path, and failure derivation data. The main gap is that mode and flake_uri are not explained, which matters because schema coverage is 0%.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all four parameters. It explains job_id and log_offset behavior clearly, but does not explain mode or flake_uri semantics, leaving half the parameters underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: start a persistent background build of the system/HM closure. It also scopes the operation by stating 'without activation,' which implicitly distinguishes it from the activation-oriented sibling switch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the start-then-poll workflow, including passing job_id to build and using the previous poll's log_offset. It also states that repeated starts for the same running target reuse the job, but it does not explicitly name when to use sibling tools like check or switch instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkA

Validation ladder for the configuration, fast to slow: level='lint' (statix+deadnix; returns a structured findings list), 'dry-build' (evaluate and plan the closure build), 'dry-activate' (NixOS only, shows what activation would change). Successful output is a short tail with log_truncated and full local log_paths; failures retain their capped diagnostics.

NameRequiredDescriptionDefault
modeNonixos
levelYes
flake_uriNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden and does disclose real behavior: which linters run, that lint returns a structured findings list, that dry-build/dry-activate are non-mutating previews, the tail-with-log_truncated plus local log_paths on success, and capped diagnostics on failure. It omits any mention of permissions or how long a dry-build may take, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph that leads with the tool's core purpose and then ordered level detail; every sentence adds information. It is somewhat long but not padded, and the output-behavior sentence earns its place given absent annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, level semantics, platform restriction, and success/failure output shape for a three-parameter tool with no annotations. The main gap is the silent treatment of 'mode' and 'flake_uri'; the output schema existing means return values need not be elaborated, so the added output note is a bonus rather than a necessity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are no enums, yet the description supplies the critical semantics for 'level' by naming and explaining each of its three values. It says nothing about 'mode' (which defaults to nixos) or 'flake_uri', leaving two of three parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (validation of the configuration) and enumerates the three levels with concrete meaning: lint runs statix+deadnix, dry-build evaluates/plans the closure, dry-activate shows activation changes. It distinguishes the levels clearly but does not distinguish this tool from siblings like build or eval_config, which overlap in scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'fast to slow' ladder framing gives clear guidance on choosing a level (lint for quick checks, dry-build for closure evaluation, dry-activate for NixOS activation preview). However, there is no explicit statement of when to prefer this tool over siblings such as build, switch, or eval_config, and the NixOS-only restriction on dry-activate is only implied for the other levels.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diffA

Build the new closure and diff it against the running system (nvd, falling back to nix store diff-closures): package additions, removals, version changes as structured packages plus closure_size; the raw diff text only when it does not parse. Include the changeset in the reply and switch unless the user asked only to preview or check. For hosts requiring coordinated fleet deployment, use the repository's deployment orchestrator.

NameRequiredDescriptionDefault
modeNonixos
flake_uriNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and discloses the key side effect: it switches by default unless the user asked only to preview or check. It also explains the fallback diff mechanism (nvd, then nix store diff-closures) and when raw diff text is returned instead of structured packages.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and output shape, then covers default switching and the fleet alternative. It is dense but every sentence carries operational information; the parenthetical fallback detail is useful rather than redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values, and it does explain side effects and fallback output behavior. However, for a tool with two undocumented parameters at 0% schema coverage, the description leaves a meaningful gap about how mode and flake_uri control the closure being built and diffed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description never mentions the two parameters, mode or flake_uri, nor explains how they affect the build or diff. Because parameter coverage is low, the description should compensate, but here it adds no parameter meaning beyond the schema's bare property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: build the new closure and diff it against the running system, with structured package changes and closure_size. It also distinguishes the tool from preview/check behavior and fleet deployment via the orchestrator, so an agent can identify its role among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit default behavior ('Include the changeset in the reply and switch unless the user asked only to preview or check') and names the alternative for coordinated fleet deployment. This covers when to use it, when to avoid switching, and when to use a different orchestration path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eval_configA

Evaluate the final merged value of an attribute in the user's actual NixOS/Home Manager configuration via nix eval (e.g. attr='services.openssh.enable'). flake_uri and mode auto-resolve when omitted. Pass a list of attrs to batch several evals into one call, returning per-attr results and failed_count / succeeded_count. Mixed results have status='partial', all failed have status='failed'. Values above the size guard degrade to attr names / length / a head slice (truncated: true). Text fallback and truncation include a hint to request narrower leaf attributes.

NameRequiredDescriptionDefault
attrYes
modeNonixos
flake_uriNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses substantial behavior: flake_uri/mode auto-resolution, batching multiple attrs into one call, per-attr results with failed_count/succeeded_count, status='partial'/'failed' semantics, and truncation via a size guard (truncated: true with a hint). It still omits cost/latency of `nix eval`, and read-only status is only implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and an example, then a compact sequence of behavioral facts (batching, status, truncation). Dense but every sentence adds an actionable detail; no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is optional, yet the description still covers batch result fields, partial/failed status, and truncation — good coverage for a batch-capable eval tool. The remaining gap is the unexplained `mode` parameter and the absence of any guidance about evaluation cost.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does explain that `attr` accepts a single string or a list (batch), and that `flake_uri` and `mode` auto-resolve when omitted, which is meaningful beyond the schema. However, it never says what `mode` values mean (nixos vs. home-manager or similar), leaving one of three parameters semantically opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource: evaluate the final merged value of an attribute in the user's actual NixOS/Home Manager config via `nix eval`, with a concrete example (attr='services.openssh.enable'). This clearly distinguishes it from siblings like `locate_option` (find an option) or `check`/`build`/`switch` (act on the system).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'the user's actual ... configuration' suggests reading real merged state, but there is no explicit when-to-use vs. when-to-use-an-alternative guidance (e.g. use this instead of locate_option to see the resolved value). No exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generationsA

action='list': enumerate system/HM generations with dates and current marker. NixOS entries include path when the profile link exists. action='rollback': revert to the previous generation, or pass generation= to activate that generation. Bare rollback is previous-only. Pass mode='home-manager' for HM generations.

NameRequiredDescriptionDefault
modeNonixos
actionNolist
generationNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It details that list includes dates and current marker, NixOS entries include path when profile link exists, and rollback can target a specific generation or default to previous. This goes beyond a bare function statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, using a single paragraph with action-oriented sentences. Every sentence contributes meaningful information without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the existence of an output schema, the description covers the main use cases adequately. It explains both list and rollback behaviors and parameter options. However, it omits potential edge cases like error handling or destructive consequences, but the core functionality is well documented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It thoroughly explains the meaning and usage of all three parameters: 'action' values, 'generation' as id/path, and 'mode' for home-manager. This fully clarifies the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs two specific actions: listing generations and rolling back to a previous generation. It provides distinct verbs and resources, distinguishing it from sibling tools like build, switch, and diff, which handle other operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by defining the two actions and explaining when to use each (list to enumerate, rollback to revert). However, it does not explicitly compare to sibling tools or state when NOT to use this tool, leaving the selection guidance implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

locate_optionA

Where does this configuration set an option: files declaring it and every file defining it, with each contributed value (e.g. attr='services.openssh.enable'). The bridge from mcp-nixos discovery to editing the right file. For integrated Home Manager, query the NixOS config with attr='home-manager.users..'.

NameRequiredDescriptionDefault
attrYes
modeNonixos
flake_uriNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns files declaring and defining an option with contributed values, which is the primary behavior. It does not mention side effects (none expected) or permissions, but given the read-only nature implied (locating, not modifying), this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences and one parenthetical example. It is front-loaded with the main purpose and provides an example immediately. Every sentence adds value, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, 1 required, and an output schema exists, the description covers the 'attr' parameter and return values implicitly. However, it omits 'mode' and 'flake_uri', which are important for context (e.g., NixOS vs Home Manager mode). The Home Manager mention partially addresses this but not fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add meaning. It only explains the 'attr' parameter with an example and a special Home Manager syntax. The 'mode' and 'flake_uri' parameters are not mentioned, leaving their semantics undocumented. Thus, it only partially compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool locates where a configuration option is set, listing files and contributed values. It uses a specific verb ('locate') and resource ('option'), and the example attr='services.openssh.enable' clarifies the purpose. While it distinguishes itself from siblings like 'build' or 'check', it does not explicitly compare, so it's very clear but not perfect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for discovery and editing ('bridge from mcp-nixos discovery to editing the right file') and provides a special case for Home Manager. However, it does not explicitly state when not to use this tool versus alternatives like eval_config or inspect_flake, nor does it mention prerequisites or error conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

switchA

Activate the configuration (sudo -n nixos-rebuild switch / home-manager switch). Records rollback_generation first. Returns a structured 'summary' (units changed, derivations built, package delta, systemd health, and a bounded warnings list from the captured switch log) plus gen before/after; on success the raw log is trimmed to a tail (pass full_log=True for all of it). Status is 'degraded' when activation succeeded but units newly failed. No implicit validation by default; pass validate=True to gate on check('dry-build') first. On a sudo auth failure returns a 'privilege' diagnosis. Local activation only; hosts requiring cluster cordon/drain and readiness gating must use their fleet orchestrator.

NameRequiredDescriptionDefault
modeNonixos
full_logNo
validateNo
flake_uriNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so richly: it discloses that rollback_generation is recorded first, that the raw log is trimmed to a tail unless full_log=True, that status becomes 'degraded' when units newly fail, and that sudo auth failure yields a 'privilege' diagnosis. These are behaviors an agent could not infer from the schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded — the core action and side effect (rollback generation) come first, then return shape, then the validate/privilege/local-only caveats. It is a single run-on paragraph, but essentially every clause carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, yet the description still helpfully summarizes the return shape (summary fields, gen before/after) and degraded/privilege states. Combined with the mutation side effects and the local-only scope, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate: it explains full_log (default tail vs everything) and validate (gate on dry-build) with meaning beyond the bare types, and the two commands imply mode values. flake_uri is never addressed, leaving one of four parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Activate the configuration' — and names the concrete underlying commands (nixos-rebuild switch / home-manager switch). It also implicitly carves itself out from siblings like check and build by describing what activation does versus dry-run validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to pass validate=True (to gate on check('dry-build')) and when not to (no implicit validation by default), and gives a hard exclusion: hosts requiring cluster cordon/drain and readiness gating must use their fleet orchestrator instead. That is a clear when/when-not/alternative triple.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.14.0
    • Changedbuild1 field changed
      • addedInput schema / properties / log_offset
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
  2. 1 tool updatev0.13.0
    • Changedbuild1 field changed
      • addedInput schema / properties / job_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
  3. 3 tool updatesv0.9.1
    • Removedformat
    • Changedgenerations1 field changed
      • addedInput schema / properties / generation
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Removedinspect_flake
  4. 3 tool updatesv0.7.2
    • Changedeval_config2 fields changed
      • addedInput schema / properties / attr / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / attr / type
        Removed value: -"string"
    • Addedinspect_flake
    • Addedlocate_option
  5. 9 tool updatesv0.5.0
    • Removedapply_patch_set
    • Addedbuild
    • Addedcheck
    • Addeddiff
    • Addedeval_config
    • Addedformat
    • Addedgenerations
    • Removedinspect_state
    • Addedswitch
  6. 2 tool updatesv0.4.0
    • First observedapply_patch_set
    • First observedinspect_state

TDQS

A4/5.0

Scored across 7 tools

Disambiguation4/5

Each tool has a mostly distinct role in the Nix lifecycle: build, check, diff, switch, rollback/list generations, eval_config, and locate_option. Some overlap exists around building/validating closures (build vs. check dry-build vs. diff), but the descriptions clarify when each should be used.

Naming Consistency4/5

Names are all lowercase snake_case and mostly action-oriented verbs, with multi-word tools following a verb_noun pattern. The main deviation is 'generations', a noun, but the overall convention is predictable and readable.

Tool Count5/5

Seven tools is well-scoped for a Nix deployment agent. Each tool covers a meaningful operation, and there is no obvious filler or redundant surface.

Completeness4/5

The surface covers the core lifecycle: validation, build, diff, activation, rollback, generation listing, config evaluation, and option location. Direct config file editing/search is not included, but locate_option plus external discovery/editing tools make that a minor gap rather than a dead end.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Local-first MCP server for repo-scoped development tasks like inspection, testing, documentation, and patching, designed to complement Cline with a structured local execution layer.
    -
  • A
    license
    A
    quality
    A
    maintenance
    A secure, local-first MCP server for read-only inspection and troubleshooting of development environments, exposing narrow, typed, auditable capabilities for repository inspection, log summarization, Docker review, and security scanning without granting unrestricted machine access.
    8
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A security-first MCP server for managing Whatbox slots with structured read-only inspection and approval-gated mutations, including storage, services, website deployment, and torrent control.
    30
    MIT