mcp-nixos

by utensils
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Integrates with Codecov for tracking code coverage statistics from the project's test suite, with links to coverage reports.

  • Connects to the NixOS Elasticsearch API to query package information and system options with field-specific search boosts, multiple channel support, and error handling.

  • Offers specific integration for Firefox configuration in Home Manager, enabling access to Firefox profiles and settings information through dedicated search and info tools.

MCP-NixOS - AIアシスタントがパッケージについて幻覚を起こすべきではない

⚠️ 開発中:このパッケージは現在開発中です。私のキャリア選択と同様に、常に進化を続けています。

📢 名前変更: このパッケージはバージョン 0.2.0 でnixmcpからmcp-nixosに名前が変更されました。それに応じて参照を更新するか、これまでのバージョンをそのまま使用するかは、あなた次第です。

これは一体何なの?

MCP-NixOSは、AIアシスタントがNixOSについて勝手に妄想を膨らませるのを防ぐモデルコンテキストプロトコルサーバーです。正直に言って、NixOSのドキュメントが分かりにくいことよりも悪いのは、AIが自信満々にNixOSについて妄想を膨らませることです。

次の情報にリアルタイムでアクセスできます。

  • NixOS パッケージ (実際に存在するもの)
  • システム オプション (設定に何時間もかかるもの)
  • ホームマネージャーの設定(システム全体の混乱が不十分な場合)
  • nix-darwin macOS 構成 (Apple ユーザーも複雑さを求めているため)

クイックスタート:慢性的にせっかちな人向け

ほら、君がこのREADMEをざっと読んで、うまく動かないと文句を言うのは分かってるよ。まずは最低限必要なものを書いておこう。

{ "mcpServers": { "nixos": { "command": "uvx", "args": ["mcp-nixos"] } } }

できました。これで、AIアシスタントは2019年のパッケージ名を幻覚的に伝えるのではなく、NixOSに関する正しい情報を提供できるようになります。どういたしまして。

環境変数(コントロールフリーク向け)

変数説明デフォルト
MCP_NIXOS_LOG_LEVEL自分の失敗についてどれだけ知りたいか情報
MCP_NIXOS_LOG_FILE失敗を記録する場所(どこにもあなたの秘密は安全です)
MCP_NIXOS_CACHE_DIR忘れてしまいそうなものを保管する場所OS固有のキャッシュの場所*
MCP_NIXOS_CACHE_TTLキャッシュの無効化があなたの一日を台無しにするまであとどれくらいかかるか86400 (24時間)
MCP_NIXOS_CLEANUP_ORPHANS起動時に孤立した MCP プロセスを強制終了するかどうか間違い
KEEP_TEST_CACHEデバッグ用にテスト キャッシュ ディレクトリを保持する (開発専用)間違い
ELASTICSEARCH_URLNixOS Elasticsearch API URLhttps://search.nixos.org/backend

*デフォルトのキャッシュの場所(ギガバイトが静かに消える場所):

  • Linux: ~/.cache/mcp_nixos/ (~/.cache が十分に乱雑ではなかったため)
  • macOS: ~/Library/Caches/mcp_nixos/ (決して見ない場所に埋もれています)
  • Windows: %LOCALAPPDATA%\mcp_nixos\Cache\ (Windows ディレクトリの空虚の中で失われます)

実際に機能する可能性のある機能

  • NixOS リソース: Elasticsearch API 経由のパッケージとシステム オプション
    • 複数のチャネル: 不安定 (勇敢な人向け)、安定 (退屈な人向け)、特定のバージョン
    • 動作方法以外のすべてを伝える詳細なパッケージメタデータ
  • ホームマネージャー: 解析されたドキュメントによるユーザー設定オプション
    • 週末に構成するプログラム、サービス、設定
    • 非常に具体的な情報を得たい場合の階層パス
  • nix-darwin : 「私はNixOSを使っています」というAppleユーザー向けのmacOS設定
    • システムのデフォルト、サービス、設定はAppleがユーザーに触れさせようとはしていない
    • 新しいエキサイティングな方法で Mac を破壊しましょう!
  • スマートキャッシング:Elasticsearchクエリを待つ人はいないので
    • ネットワーク要求を減らし、起動時間を短縮します
    • キャッシュされるとオフラインで動作します(次回のインターネット障害時に最適です)
  • リッチ検索: 必要なもの、またはそれに近いものを検索
    • 驚くほど悪くない高速なメモリ内検索エンジン
    • 何を探しているのかよくわからない場合の関連オプション

MCP リソースとツール: 必要だとは知らなかった強力なツール

NixOS: 賢くなったと同時に愚かになった気分にさせてくれるOS

リソース:

  • nixos://package/{name} - 確実に存在するパッケージを見つける
  • nixos://search/packages/{query} - 存在する可能性のあるパッケージを検索する
  • nixos://search/options/{query} - 誤って設定する検索システムオプション
  • nixos://option/{name} - オプション情報を取得すると、混乱してしまう可能性があります
  • nixos://search/programs/{name} - プログラムを提供するパッケージを検索
  • nixos://packages/stats - オタク友達を感心させる統計

ツール:

  • nixos_search(query, type, channel) - 最もよく使う検索関数
  • nixos_info(name, type, channel) - パッケージまたはオプションの詳細を取得する
  • nixos_stats(channel) - 誰も求めていない NixOS の統計情報を取得する

チャンネル:

  • unstable (デフォルト) - 正気も含め、何もかもが不安定な危険な状態
  • stable (24.11) - スケジュール通りに分解したい人向け
  • 旧バージョン - 以前の失敗を懐かしく思うとき

ホームマネージャ: システム全体の構成が十分に複雑ではなかったため

リソース:

  • home-manager://search/options/{query} - 検索ユーザー設定オプション
  • home-manager://option/{name} - 後でスクリーンショットするオプションの詳細
  • home-manager://options/prefix/{prefix} - プレフィックスの下にあるすべてのオプション
  • home-manager://options/{category} - カテゴリ オプション (プログラム、サービスなど)

ツール:

  • home_manager_search(query) - 検索設定オプション
  • home_manager_info(name) - 実際の説明とともにオプションの詳細を取得します
  • home_manager_options_by_prefix(option_prefix) - プレフィックスでオプションを取得する
  • home_manager_list_options() - 圧倒されたときにすべてのオプションカテゴリを一覧表示する

nix-darwin: 痛みを求めるMacユーザー向け

リソース:

  • darwin://search/options/{query} - macOS オプションの検索
  • darwin://option/{name} - Appleデバイスのオプションの詳細
  • darwin://options/prefix/{prefix} - プレフィックスの下のすべてのオプション
  • darwin://options/{category} - カテゴリ オプション (システム、サービスなど)

ツール:

  • darwin_search(query) - macOS の設定オプションを検索する
  • darwin_info(name) - Appleがあなたに知られたくないオプションの詳細を取得する
  • darwin_options_by_prefix(option_prefix) - プレフィックスでオプションを取得する
  • darwin_list_options() - すべてのオプションカテゴリを一覧表示する

ツールの使用例(コピー/貼り付け可能)

# NixOS examples for when you're pretending to know what you're doing nixos_search(query="firefox", type="packages", channel="unstable") nixos_search(query="postgresql", type="options", channel="stable") nixos_info(name="firefox", type="package") nixos_info(name="services.postgresql.enable", type="option") # Home Manager examples for the domestic configuration enthusiasts home_manager_search(query="programs.git") home_manager_info(name="programs.firefox.enable") home_manager_options_by_prefix(option_prefix="programs.git") # nix-darwin examples for the masochistic Mac users darwin_search(query="system.defaults.dock") darwin_info(name="services.yabai.enable") darwin_options_by_prefix(option_prefix="system.defaults")

インストールと設定:おそらく飛ばしてしまう部分

インストールする(お好みに合わせて)

# Option 1: Install with pip like a normie pip install mcp-nixos # Option 2: Install with uv because you're too cool for pip uv pip install mcp-nixos # Option 3: Run directly with uvx (recommended for the truly enlightened) uvx --install-deps mcp-nixos

設定する(間違いなく失敗する部分)

MCP 構成ファイル (例: ~/.config/claude/config.json ) に以下を追加します。

{ "mcpServers": { "nixos": { "command": "uvx", "args": ["mcp-nixos"] } } }

ソースコード付きの開発の場合(罰を楽しむ人向け):

{ "mcpServers": { "nixos": { "command": "uv", "args": ["run", "-m", "mcp_nixos.__main__"], "env": { "PYTHONPATH": "." } } } }

キャッシュとチャネル: 魔法が起こりファイルが消える場所

キャッシュシステム:

  • 5分で忘れてしまうデフォルトの場所
  • HTMLコンテンツ、シリアル化されたデータ、検索インデックスを保存します
  • キャッシュされるとオフラインで動作します(実際に役立つ唯一の機能です)

NixOS チャネル:

  • unstable : 最新の NixOS 不安定版 (冒険家向け)
  • stable : 現在の安定リリース(リスク回避型)
  • 24.11 : 特定のバージョン参照(歴史に興味がある人向け)

開発:物を使うだけでは満足できない人のために

依存関係(もはや単独で存在するものは何もない)

私たちは動物ではないので、このプロジェクトではpyproject.tomlを使用します。

# Install development dependencies for the brave pip install -e ".[dev]" # Or with uv (recommended for the enlightened) uv pip install -e ".[dev]"

Nix の使用 (もちろん Nix 開発環境もあります)

# Enter dev shell and see available commands nix develop && menu # Common commands for common folk run # Start the server (and your journey into madness) run-tests # Run tests with coverage (expose the flaws) lint # Format and lint code (fix the mess you made) publish # Build and publish to PyPI (share your pain)

テスト(はい、実際に行います)

私たちは現実世界を恐れていないので、テストではモックではなく実際の Elasticsearch API 呼び出しを使用します。

# Run tests with coverage (default and recommended) run-tests # Run tests without coverage (for those who prefer blissful ignorance) run-tests --no-coverage

コード カバレッジはCodecovで追跡されます (ここでは 100% のカバレッジを重視します)。

LLMとの併用:この演習のポイント

設定が完了したら、MCP 互換モデルのプロンプトで MCP-NixOS を使用します。

# NixOS resources for the confused ~nixos://package/python ~nixos://option/services.nginx ~nixos://search/packages/firefox # Home Manager resources for the domestically challenged ~home-manager://search/options/programs.git ~home-manager://option/programs.firefox.profiles # nix-darwin resources for the Apple addicted ~darwin://search/options/system.defaults.dock # NixOS tools for the tool-inclined ~nixos_search(query="postgresql", type="options") ~nixos_info(name="firefox", type="package", channel="unstable") # Home Manager tools for home improvement ~home_manager_search(query="programs.zsh") ~home_manager_info(name="programs.git.userName") # nix-darwin tools for the Mac masochists ~darwin_search(query="services.yabai") ~darwin_info(name="system.defaults.dock.autohide")

LLM は MCP サーバーを通じて情報を取得し、実際に一度は正しい情報を提供する可能性があります。

実装の詳細: ハウス・オブ・カードの正体が明らかに

コードアーキテクチャ: どうやってこれを実現したか (なんとか)

MCP-NixOS は、あらゆる困難にもかかわらず何とか動作するモジュール構造で構成されています。

  • mcp_nixos/cache/ - 帯域幅と健全性を節約するキャッシュコンポーネント
  • mcp_nixos/clients/ - Elasticsearch と通信し、HTML ドキュメントを解析する API クライアント
  • mcp_nixos/contexts/ - すべてが崩壊しないようにするコンテキストオブジェクト
  • mcp_nixos/resources/ - すべてのプラットフォームのMCPリソース定義
  • mcp_nixos/tools/ - 実際の作業を行うMCPツールの実装
  • mcp_nixos/utils/ - 私たちは動物ではないので、ユーティリティ関数
  • mcp_nixos/server.py - このカードハウスをまとめる接着剤

NixOS API統合:外部接続

次の方法で NixOS Elasticsearch API に接続します。

  • 複数チャネルのサポート (不安定、安定/24.11)
  • 分野別の検索ブーストにより関連性が向上
  • 最悪の事態を予想しながらも最善を期待するエラー処理(私の人生の物語)

HTML ドキュメントパーサー: 夢が消える場所

Home Manager および nix-darwin オプションでは、HTML 解析に対して犯罪を犯しました。

  1. ドキュメント パーサー: BeautifulSoup の呪文、正規表現の黒魔術、そして不正な HTML を 72 時間連続で見つめることによってのみ得られる決意の組み合わせを通じて、構造化データを抽出します。
  2. 検索エンジン: 以下を組み合わせて:
    • 高速テキスト検索のための転置インデックス(落ちない場合)
    • 階層的な検索のためのプレフィックスツリー(午前 3 時には良いアイデアに思えた)
    • 「雰囲気に基づくソート」と表現されるアルゴリズムに基づく結果のスコアリング
  3. キャッシュ システム: HTML を一度解析するだけでも大変な作業なので、
    • HTMLコンテンツ、処理されたデータ構造、検索インデックスを保存します
    • プラットフォーム固有のキャッシュ場所を使用するので、考える必要はありません
    • 必要に応じてコンテンツを更新するためにTTLベースの有効期限を実装します
    • 物事がうまくいかなくなったときに、うまく立ち直る(私の人間関係とは違います)

モデルコンテキストプロトコルとは何ですか?

最後まで飛ばした人向け

モデルコンテキストプロトコル(MCP)は、 JSONメッセージを使用して標準入力/標準出力経由でLLMを外部データやツールに接続するオープンプロトコルです。このプロジェクトはMCPを実装し、AIアシスタントがNixOS、Home Manager、nix-darwinのリソースにアクセスできるようにします。これにより、AIアシスタントはオペレーティングシステムに関する様々な情報を勝手に推測する必要がなくなります。

ライセンス

MIT(私はモンスターじゃないから)

NixOSのスノーフレークロゴは、NixOSプロジェクトへの帰属表示を付して使用されています。詳細は帰属情報をご覧ください。


自称「恐怖の改造者」のジェームズ・ブリンクによって作成され、彼はどういうわけか自分の意に反して物事をうまく機能させることに成功しました。

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

MCP-NixOS は、NixOS パッケージ、オプション、Home Manager、および nix-darwin 構成に関する正確な情報をリアルタイムで提供するモデル コンテキスト プロトコル サーバーであり、AI アシスタントが NixOS リソースについて誤解するのを防ぎ、実際のシステム構成ガイダンスを提供できるようにします。

  1. What The Hell Is This Thing?
    1. Quick Start: For the Chronically Impatient
      1. Environment Variables (For Control Freaks)
    2. Features That Might Actually Work
      1. MCP Resources & Tools: The Power Tools You Didn't Know You Needed
        1. NixOS: The OS That Makes You Feel Simultaneously Smarter and Dumber
        2. Home Manager: Because System-Wide Configuration Wasn't Complicated Enough
        3. nix-darwin: For Mac Users Who Crave Pain
        4. Tool Usage Examples (Copy/Paste Ready)
      2. Installation & Configuration: The Part You'll Probably Skip
        1. Install It (Pick Your Poison)
        2. Configure It (The Part You'll Definitely Mess Up)
        3. Cache & Channels: Where Magic Happens and Files Disappear
      3. Development: For Those Not Content With Just Using Things
        1. Dependencies (Because Nothing Stands Alone Anymore)
        2. Using Nix (Of Course There's a Nix Development Environment)
        3. Testing (Yes, We Actually Do That)
      4. Using with LLMs: The Whole Point of This Exercise
        1. Implementation Details: The House of Cards Revealed
          1. Code Architecture: How We Made This Work (Somehow)
          2. NixOS API Integration: The External Connection
          3. HTML Documentation Parsers: Where Dreams Go To Die
        2. What is Model Context Protocol?
          1. For Those Who Skipped Straight to the End
        3. License
          ID: j13wrfj9az