{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github_mcp-utensils-mcp-nixos","slug":"mcp-utensils-mcp-nixos","name":"mcp-nixos","type":"mcp","url":"https://github.com/utensils/mcp-nixos","page_url":"https://unfragile.ai/mcp-utensils-mcp-nixos","categories":["mcp-servers"],"tags":["ai-assistant","ai-integration","ai-tools","anthropic","claude","developer-tools","devops-tools","fastmcp","llm-tools","mcp","model-context-protocol","nix","nix-options","nix-packages","nix-search","nixos","package-search","python","sre-tools"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github_mcp-utensils-mcp-nixos__cap_0","uri":"capability://search.retrieval.unified.nix.package.search.across.multiple.sources","name":"unified-nix-package-search-across-multiple-sources","description":"Executes package searches across 6 distinct NixOS ecosystem data sources (nixos, home-manager, darwin, flakes, flakehub, nixvim) through a single consolidated 'search' action on the nix() tool. Internally routes queries to Elasticsearch for nixos/home-manager/darwin packages, FlakeHub API for flake discovery, and NixHub.io for nixvim programs, aggregating results into a unified response format that prevents LLM hallucination of non-existent package names.","intents":["Find the exact package name for a tool across NixOS, Home Manager, or nix-darwin without guessing","Discover flakes and community packages that provide functionality not in nixpkgs","Search for Nixvim plugins and programs by name or functionality","Verify package availability before writing Nix configuration"],"best_for":["NixOS users integrating with Claude Desktop or other MCP clients","DevOps teams automating Nix configuration generation","Developers building tools that need authoritative NixOS package metadata"],"limitations":["Search results depend on upstream data source freshness; Elasticsearch indices may lag package releases by hours","FlakeHub API rate limiting may throttle bulk searches; no built-in request queuing","Nixvim search requires paginated loading (50 results per page) for large result sets, adding latency for comprehensive queries"],"requires":["MCP client compatible with stdio/JSON-RPC (Claude Desktop, Cline, etc.)","Python 3.9+","Network access to Elasticsearch, FlakeHub API, and NixHub.io"],"input_types":["text query string (package name, partial match, or keyword)"],"output_types":["structured JSON with package metadata (name, version, description, maintainers, source)"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_1","uri":"capability://memory.knowledge.hierarchical.nix.options.browsing.with.source.filtering","name":"hierarchical-nix-options-browsing-with-source-filtering","description":"Implements a hierarchical options action that traverses configuration option trees for home-manager, nix-darwin, and nixvim by parsing HTML documentation and building in-memory option hierarchies. Supports drilling down from top-level option categories (e.g., 'programs.neovim') to leaf options with type information, defaults, and descriptions, enabling LLMs to explore configuration spaces without hallucinating invalid option paths.","intents":["Browse available Home Manager options without consulting external documentation","Discover nix-darwin system configuration options and their valid values","Explore Nixvim plugin configuration options hierarchically","Validate option paths before generating Nix configuration code"],"best_for":["Users generating Home Manager or nix-darwin configurations via Claude","Teams automating declarative system configuration","Developers building Nix configuration generators that need option validation"],"limitations":["HTML documentation parsing is fragile; upstream documentation format changes may break option extraction","Hierarchical traversal requires multiple API calls for deep option trees, adding ~100-200ms per level","Options action only available for home-manager, darwin, and nixvim; not for nixos core options (use 'info' action instead)"],"requires":["MCP client with tool-calling support","Python 3.9+","Network access to NixHub.io and HTML documentation sources"],"input_types":["text option path (e.g., 'programs.neovim' or 'home.packages')"],"output_types":["structured JSON with option hierarchy, type signatures, defaults, and descriptions"],"categories":["memory-knowledge","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_10","uri":"capability://search.retrieval.nixvim.plugin.search.with.paginated.option.loading","name":"nixvim-plugin-search-with-paginated-option-loading","description":"Integrates with NixHub.io to search Nixvim plugins and retrieve plugin metadata. Implements NixvimCache class (lines 159-199 in server.py) that handles paginated loading of Nixvim options (50 results per page) to manage memory and API load. The search action queries NixHub for plugins, and the options action traverses Nixvim option hierarchies with pagination support.","intents":["Search for Nixvim plugins by name or functionality","Get Nixvim plugin metadata and configuration options","Browse Nixvim configuration options hierarchically","Discover Nixvim plugins without consulting external documentation"],"best_for":["Neovim users configuring Nixvim via Claude","Teams automating Nixvim configuration generation","Developers building Nixvim configuration tools"],"limitations":["Paginated option loading adds latency for large option trees; each page requires a separate API call","NixHub.io may have incomplete plugin registry; some community plugins may not be listed","Option hierarchy parsing depends on NixHub.io HTML structure; format changes may break parsing"],"requires":["Python 3.9+","Network access to NixHub.io","MCP client with tool-calling support"],"input_types":["text plugin name or keyword for search; option path for options action"],"output_types":["structured JSON with plugin metadata or option hierarchy"],"categories":["search-retrieval","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_11","uri":"capability://data.processing.analysis.html.documentation.parsing.for.option.extraction","name":"html-documentation-parsing-for-option-extraction","description":"Parses HTML documentation from NixHub.io and other sources to extract hierarchical option information (option paths, types, defaults, descriptions) for home-manager, nix-darwin, and nixvim. Implements custom HTML parsing logic that builds in-memory option trees from documentation, enabling the options action to traverse hierarchies without requiring API calls for each option.","intents":["Extract option metadata from HTML documentation programmatically","Build queryable option hierarchies from unstructured HTML","Enable option browsing without external documentation","Validate option paths before code generation"],"best_for":["Teams automating configuration generation from documentation","Developers building option validation tools","Users who want in-context option discovery"],"limitations":["HTML parsing is fragile; upstream documentation format changes may break extraction","Parsing latency depends on HTML document size; large documentation pages may cause delays","Extracted option metadata may be incomplete if HTML structure is inconsistent"],"requires":["Python 3.9+","Network access to HTML documentation sources","MCP client with tool-calling support"],"input_types":["HTML documentation URLs and option paths"],"output_types":["structured JSON with extracted option metadata (paths, types, defaults, descriptions)"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_12","uri":"capability://memory.knowledge.in.memory.caching.with.time.based.invalidation","name":"in-memory-caching-with-time-based-invalidation","description":"Implements ChannelCache and NixvimCache classes that cache query results in memory with time-based invalidation (default 1 hour). Caching reduces latency for repeated queries and API load on upstream sources, while time-based invalidation ensures eventual freshness. Cache keys are based on query parameters, enabling efficient cache hits for identical queries.","intents":["Reduce latency for repeated queries by caching results","Minimize API load on upstream sources (Elasticsearch, FlakeHub, NixHub)","Balance freshness and performance with configurable cache TTL","Enable offline operation for cached queries"],"best_for":["Users running repeated queries in the same session","Teams with limited API quotas on upstream sources","Deployments where reducing external API calls is important"],"limitations":["In-memory caching is lost on server restart; no persistent cache","Cache invalidation is time-based only; no manual invalidation mechanism","Cache size is unbounded; long-running servers may accumulate memory"],"requires":["Python 3.9+","MCP client with tool-calling support"],"input_types":["any query parameters (package name, source, action)"],"output_types":["cached results from previous queries"],"categories":["memory-knowledge","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_13","uri":"capability://safety.moderation.error.handling.and.response.formatting.with.source.attribution","name":"error-handling-and-response-formatting-with-source-attribution","description":"Implements comprehensive error handling that catches API failures, parsing errors, and invalid parameters, returning structured error responses with source attribution and fallback suggestions. Response formatting standardizes output across all sources, including metadata about which source provided the result, enabling users to understand result provenance and trust level.","intents":["Provide clear error messages when queries fail","Attribute results to their source for transparency","Suggest fallback sources when primary source is unavailable","Enable debugging of failed queries"],"best_for":["Users debugging failed queries","Teams building reliable automation on top of MCP-NixOS","Developers integrating MCP-NixOS into larger systems"],"limitations":["Error messages may not surface all underlying API error details","Fallback suggestions are hardcoded; no dynamic fallback selection","Response formatting adds ~50-100ms overhead per query"],"requires":["Python 3.9+","MCP client with tool-calling support"],"input_types":["any query parameters"],"output_types":["structured JSON with error messages, source attribution, and fallback suggestions"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_2","uri":"capability://search.retrieval.package.version.history.retrieval.across.channels","name":"package-version-history-retrieval-across-channels","description":"Dedicated nix_versions() tool that queries package version history across NixOS channels (unstable, stable, 23.11, 24.05, etc.) by integrating with FlakeHub API and channel resolution system. Returns version timelines, availability across channels, and deprecation status, enabling users to understand package evolution and select appropriate channel versions for reproducible builds.","intents":["Find which NixOS channels provide a specific package version","Determine when a package was added or removed from nixpkgs","Identify stable vs unstable package versions for reproducibility decisions","Verify package availability before pinning to a specific channel"],"best_for":["DevOps teams managing reproducible NixOS deployments","Users building flakes that need to pin specific package versions","Developers debugging version-specific package issues"],"limitations":["Version history depends on FlakeHub API completeness; historical data may be incomplete for older channels","Channel resolution system has ~500ms latency for discovering available channels on first call","No support for custom/private channels; only official NixOS channels"],"requires":["MCP client with tool-calling support","Python 3.9+","Network access to FlakeHub API"],"input_types":["text package name and optional channel filter"],"output_types":["structured JSON with version timeline, channel availability matrix, and deprecation metadata"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_3","uri":"capability://search.retrieval.detailed.package.metadata.retrieval.with.source.attribution","name":"detailed-package-metadata-retrieval-with-source-attribution","description":"Info action on the nix() tool retrieves comprehensive package metadata (maintainers, licenses, dependencies, source URLs, descriptions) from nixos, home-manager, darwin, flakehub, and nixvim sources. Queries Elasticsearch indices and FlakeHub API to surface authoritative package information with source attribution, enabling LLMs to provide users with complete context about package provenance and maintenance status.","intents":["Get full package metadata including maintainers and license before using in a project","Verify package maintenance status and security posture","Find source repositories and upstream project links","Understand package dependencies and transitive requirements"],"best_for":["Security-conscious teams evaluating package trustworthiness","Developers building dependency graphs or supply chain analysis tools","Users verifying package provenance before system deployment"],"limitations":["Metadata completeness varies by source; some packages may have missing maintainer or license information","Elasticsearch indices may lag upstream nixpkgs updates by hours","FlakeHub metadata depends on flake authors providing complete flake.nix metadata"],"requires":["MCP client with tool-calling support","Python 3.9+","Network access to Elasticsearch and FlakeHub API"],"input_types":["text package name and source identifier (nixos, home-manager, darwin, flakehub, nixvim)"],"output_types":["structured JSON with package metadata (maintainers, licenses, dependencies, source URLs, descriptions)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_4","uri":"capability://data.processing.analysis.nix.ecosystem.statistics.aggregation","name":"nix-ecosystem-statistics-aggregation","description":"Stats action on the nix() tool aggregates ecosystem statistics (package counts, maintainer counts, update frequency) across nixos, home-manager, darwin, flakes, and flakehub sources by querying Elasticsearch aggregation endpoints and FlakeHub API. Returns time-series data and comparative metrics that enable users to understand ecosystem health and package distribution patterns.","intents":["Understand the size and scope of different NixOS ecosystem components","Compare package availability across nixos, home-manager, and darwin","Identify ecosystem trends (e.g., growth in flake adoption)","Assess package maintenance burden and contributor distribution"],"best_for":["Researchers analyzing NixOS ecosystem trends","Teams evaluating NixOS adoption readiness","Community managers tracking ecosystem health metrics"],"limitations":["Statistics are point-in-time snapshots; no historical trend tracking","Elasticsearch aggregations may be computationally expensive for large indices, causing latency spikes","FlakeHub statistics may undercount flakes not registered with FlakeHub"],"requires":["MCP client with tool-calling support","Python 3.9+","Network access to Elasticsearch and FlakeHub API"],"input_types":["text source identifier (nixos, home-manager, darwin, flakes, flakehub)"],"output_types":["structured JSON with statistics (package counts, maintainer counts, update frequency, time-series data)"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_5","uri":"capability://search.retrieval.dynamic.nixos.channel.discovery.and.listing","name":"dynamic-nixos-channel-discovery-and-listing","description":"Channels action on the nix() tool dynamically discovers available NixOS channels at runtime using the ChannelCache class, which queries official NixOS channel sources and caches results. Returns a list of available channels (unstable, stable, 23.11, 24.05, etc.) with metadata, enabling users to understand channel options without hardcoding channel lists.","intents":["List all available NixOS channels for flake inputs","Understand the difference between unstable and stable channels","Discover long-term support (LTS) channel options","Verify channel availability before pinning in flake.nix"],"best_for":["Users building flakes who need to select appropriate channels","Teams standardizing on specific NixOS channels","Developers automating flake generation"],"limitations":["Channel discovery has ~500ms latency on first call; subsequent calls use cached results","Cache invalidation is time-based (default 1 hour); newly released channels may not appear immediately","Only lists official NixOS channels; custom/private channels not supported"],"requires":["MCP client with tool-calling support","Python 3.9+","Network access to official NixOS channel sources"],"input_types":["no parameters required"],"output_types":["structured JSON with channel list (name, description, release date, support status)"],"categories":["search-retrieval","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_6","uri":"capability://tool.use.integration.mcp.protocol.server.with.stdio.json.rpc.transport","name":"mcp-protocol-server-with-stdio-json-rpc-transport","description":"Implements a FastMCP server instance that handles Model Context Protocol communication via stdio/JSON-RPC, translating MCP tool calls into internal function invocations and serializing responses back to JSON. Manages the full MCP lifecycle including tool registration, parameter validation, error handling, and response formatting, enabling seamless integration with MCP clients like Claude Desktop.","intents":["Enable Claude Desktop and other MCP clients to call NixOS query tools","Provide standardized MCP tool interface for nix() and nix_versions() functions","Handle JSON-RPC protocol details transparently","Validate tool parameters and return structured error messages"],"best_for":["MCP client developers integrating NixOS data sources","Claude Desktop users adding NixOS capabilities","Teams building custom MCP clients that need NixOS support"],"limitations":["Stateless design means no persistent state between requests; caching is in-memory only","stdio transport has no built-in request queuing; high-concurrency scenarios may experience latency","JSON-RPC error handling follows MCP spec but may not surface all underlying API errors with full detail"],"requires":["Python 3.9+","FastMCP library (included in dependencies)","MCP client compatible with stdio/JSON-RPC (Claude Desktop 0.1+, Cline, etc.)"],"input_types":["JSON-RPC tool call requests with method name and parameters"],"output_types":["JSON-RPC responses with tool results or error objects"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_7","uri":"capability://tool.use.integration.multi.source.data.aggregation.with.action.source.matrix","name":"multi-source-data-aggregation-with-action-source-matrix","description":"Implements an action-source-type matrix that routes tool calls to appropriate data sources based on action (search, info, stats, options, channels) and source (nixos, home-manager, darwin, flakes, flakehub, nixvim). The nix() tool function (lines 1245-1324 in server.py) contains conditional logic that dispatches to Elasticsearch, FlakeHub API, HTML parsers, or NixHub.io based on the action-source combination, consolidating 17 individual tools into 2 unified tools.","intents":["Query NixOS ecosystem data without knowing which source contains the information","Reduce token overhead by consolidating multiple tools into unified interface","Enable source-specific queries when needed (e.g., 'search in flakehub only')","Maintain backward compatibility as new sources are added"],"best_for":["MCP client developers who want minimal tool overhead","Users with limited context windows who benefit from consolidated tools","Teams building extensible NixOS query systems"],"limitations":["Action-source combinations that don't exist return explicit errors (e.g., 'options' action not available for nixos)","Matrix-based routing adds conditional complexity; adding new sources requires modifying nix() function","Some action-source combinations may have different latency profiles (e.g., Elasticsearch vs FlakeHub API)"],"requires":["Python 3.9+","MCP client with tool-calling support"],"input_types":["action (search, info, stats, options, channels), source (nixos, home-manager, darwin, flakes, flakehub, nixvim), and query parameters"],"output_types":["structured JSON with results from selected source"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_8","uri":"capability://search.retrieval.elasticsearch.backed.package.search.with.full.text.indexing","name":"elasticsearch-backed-package-search-with-full-text-indexing","description":"Integrates with Elasticsearch indices for nixos, home-manager, and darwin packages, executing full-text searches against indexed package metadata (names, descriptions, maintainers). The search action routes queries to Elasticsearch endpoints that return ranked results based on relevance scoring, enabling fast, accurate package discovery without requiring local Nix installation or package database.","intents":["Search for packages by name or keyword across nixos, home-manager, darwin","Find packages matching partial names or fuzzy queries","Discover packages by description or functionality","Get ranked results sorted by relevance"],"best_for":["Users searching for packages without knowing exact names","Teams building package discovery interfaces","Developers integrating NixOS package search into tools"],"limitations":["Elasticsearch indices may lag nixpkgs updates by hours; newly published packages may not appear immediately","Search relevance depends on index quality and analyzer configuration; some queries may return unexpected results","No support for complex boolean queries; search is simple keyword-based"],"requires":["Python 3.9+","Network access to Elasticsearch endpoints","MCP client with tool-calling support"],"input_types":["text search query (package name, keyword, or description)"],"output_types":["structured JSON with ranked search results (name, version, description, relevance score)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-utensils-mcp-nixos__cap_9","uri":"capability://search.retrieval.flakehub.api.integration.for.flake.discovery.and.metadata","name":"flakehub-api-integration-for-flake-discovery-and-metadata","description":"Integrates with FlakeHub API to discover flakes and retrieve flake metadata (description, source URL, inputs, outputs) for the flakehub source. The search action queries FlakeHub's flake registry, and the info action retrieves detailed flake metadata including dependencies and output types. Enables users to discover community flakes and understand their structure without cloning repositories.","intents":["Search for flakes by name or keyword in FlakeHub registry","Get detailed flake metadata including inputs and outputs","Discover community flakes that provide specific functionality","Understand flake dependencies and output structure"],"best_for":["Users building flakes who want to discover reusable flake inputs","Teams evaluating community flakes for adoption","Developers building flake composition tools"],"limitations":["FlakeHub API rate limiting may throttle bulk searches; no built-in request queuing or backoff","FlakeHub registry only includes flakes registered by authors; many community flakes may not be listed","Metadata completeness depends on flake authors providing complete flake.nix metadata"],"requires":["Python 3.9+","Network access to FlakeHub API","MCP client with tool-calling support"],"input_types":["text flake name or keyword"],"output_types":["structured JSON with flake metadata (name, description, source URL, inputs, outputs)"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":41,"verified":false,"data_access_risk":"high","permissions":["MCP client compatible with stdio/JSON-RPC (Claude Desktop, Cline, etc.)","Python 3.9+","Network access to Elasticsearch, FlakeHub API, and NixHub.io","MCP client with tool-calling support","Network access to NixHub.io and HTML documentation sources","Network access to NixHub.io","Network access to HTML documentation sources","Network access to FlakeHub API","Network access to Elasticsearch and FlakeHub API","Network access to official NixOS channel sources"],"failure_modes":["Search results depend on upstream data source freshness; Elasticsearch indices may lag package releases by hours","FlakeHub API rate limiting may throttle bulk searches; no built-in request queuing","Nixvim search requires paginated loading (50 results per page) for large result sets, adding latency for comprehensive queries","HTML documentation parsing is fragile; upstream documentation format changes may break option extraction","Hierarchical traversal requires multiple API calls for deep option trees, adding ~100-200ms per level","Options action only available for home-manager, darwin, and nixvim; not for nixos core options (use 'info' action instead)","Paginated option loading adds latency for large option trees; each page requires a separate API call","NixHub.io may have incomplete plugin registry; some community plugins may not be listed","Option hierarchy parsing depends on NixHub.io HTML structure; format changes may break parsing","HTML parsing is fragile; upstream documentation format changes may break extraction","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.3537483445568779,"quality":0.35,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.065Z","last_scraped_at":"2026-05-03T14:23:34.856Z","last_commit":"2026-04-29T18:46:49Z"},"community":{"stars":625,"forks":33,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=mcp-utensils-mcp-nixos","compare_url":"https://unfragile.ai/compare?artifact=mcp-utensils-mcp-nixos"}},"signature":"db2Xa2Iuxr2pHXbzbD+90iX6lHG6rmxzytrn+EqtJxOaMiRgiOlIO9Wg9JUUAIA4kKf7QGEzFGMJAU8A58MkBg==","signedAt":"2026-06-21T09:31:21.343Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/mcp-utensils-mcp-nixos","artifact":"https://unfragile.ai/mcp-utensils-mcp-nixos","verify":"https://unfragile.ai/api/v1/verify?slug=mcp-utensils-mcp-nixos","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}