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をざっと読んで、うまく動かないと文句を言うのは分かってるよ。まずは最低限必要なものを書いておこう。
できました。これで、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_URL | NixOS Elasticsearch API URL | https://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()
- すべてのオプションカテゴリを一覧表示する
ツールの使用例(コピー/貼り付け可能)
インストールと設定:おそらく飛ばしてしまう部分
インストールする(お好みに合わせて)
設定する(間違いなく失敗する部分)
MCP 構成ファイル (例: ~/.config/claude/config.json
) に以下を追加します。
ソースコード付きの開発の場合(罰を楽しむ人向け):
キャッシュとチャネル: 魔法が起こりファイルが消える場所
キャッシュシステム:
- 5分で忘れてしまうデフォルトの場所
- HTMLコンテンツ、シリアル化されたデータ、検索インデックスを保存します
- キャッシュされるとオフラインで動作します(実際に役立つ唯一の機能です)
NixOS チャネル:
unstable
: 最新の NixOS 不安定版 (冒険家向け)stable
: 現在の安定リリース(リスク回避型)24.11
: 特定のバージョン参照(歴史に興味がある人向け)
開発:物を使うだけでは満足できない人のために
依存関係(もはや単独で存在するものは何もない)
私たちは動物ではないので、このプロジェクトではpyproject.toml
を使用します。
Nix の使用 (もちろん Nix 開発環境もあります)
テスト(はい、実際に行います)
私たちは現実世界を恐れていないので、テストではモックではなく実際の Elasticsearch API 呼び出しを使用します。
コード カバレッジはCodecovで追跡されます (ここでは 100% のカバレッジを重視します)。
LLMとの併用:この演習のポイント
設定が完了したら、MCP 互換モデルのプロンプトで MCP-NixOS を使用します。
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 解析に対して犯罪を犯しました。
- ドキュメント パーサー: BeautifulSoup の呪文、正規表現の黒魔術、そして不正な HTML を 72 時間連続で見つめることによってのみ得られる決意の組み合わせを通じて、構造化データを抽出します。
- 検索エンジン: 以下を組み合わせて:
- 高速テキスト検索のための転置インデックス(落ちない場合)
- 階層的な検索のためのプレフィックスツリー(午前 3 時には良いアイデアに思えた)
- 「雰囲気に基づくソート」と表現されるアルゴリズムに基づく結果のスコアリング
- キャッシュ システム: HTML を一度解析するだけでも大変な作業なので、
- HTMLコンテンツ、処理されたデータ構造、検索インデックスを保存します
- プラットフォーム固有のキャッシュ場所を使用するので、考える必要はありません
- 必要に応じてコンテンツを更新するためにTTLベースの有効期限を実装します
- 物事がうまくいかなくなったときに、うまく立ち直る(私の人間関係とは違います)
モデルコンテキストプロトコルとは何ですか?
最後まで飛ばした人向け
モデルコンテキストプロトコル(MCP)は、 JSONメッセージを使用して標準入力/標準出力経由でLLMを外部データやツールに接続するオープンプロトコルです。このプロジェクトはMCPを実装し、AIアシスタントがNixOS、Home Manager、nix-darwinのリソースにアクセスできるようにします。これにより、AIアシスタントはオペレーティングシステムに関する様々な情報を勝手に推測する必要がなくなります。
ライセンス
MIT(私はモンスターじゃないから)
NixOSのスノーフレークロゴは、NixOSプロジェクトへの帰属表示を付して使用されています。詳細は帰属情報をご覧ください。
自称「恐怖の改造者」のジェームズ・ブリンクによって作成され、彼はどういうわけか自分の意に反して物事をうまく機能させることに成功しました。
You must be authenticated.
Tools
MCP-NixOS は、NixOS パッケージ、オプション、Home Manager、および nix-darwin 構成に関する正確な情報をリアルタイムで提供するモデル コンテキスト プロトコル サーバーであり、AI アシスタントが NixOS リソースについて誤解するのを防ぎ、実際のシステム構成ガイダンスを提供できるようにします。
- What The Hell Is This Thing?
- Quick Start: For the Chronically Impatient
- Features That Might Actually Work
- MCP Resources & Tools: The Power Tools You Didn't Know You Needed
- Installation & Configuration: The Part You'll Probably Skip
- Development: For Those Not Content With Just Using Things
- Using with LLMs: The Whole Point of This Exercise
- Implementation Details: The House of Cards Revealed
- What is Model Context Protocol?
- License