PiHole MCP Server について
PiHole MCP Serverは、FastAPIとPi-hole REST APIを使ってデバイスを管理し、統計情報を取得するMCPサーバーです。自然言語で操作したいPi-holeユーザー向けに、RAGシステムでクエリを処理し、設定フラグで機能を制御します。
主な機能
- 01REST APIによるPi-hole管理
- 02Pi-hole統計情報の取得
- 03自然言語によるクエリ処理
- 04設定フラグによる機能制御
活用シーン
- 01クエリによるPi-hole統計情報の取得
- 02自然言語でのPi-hole管理依頼
- 03設定に応じた機能の有効化や制限
MCP 対応
RESTful APIとRAGシステムを通じてPi-holeへの問い合わせや管理要求を処理するMCPサーバーと説明されています。MCPクライアントに公開する具体的なツールはREADMEに記載されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PiHole MCP Server
いったい、なぜ?
Pi-hole デバイスの管理をより快適にするために、このプロジェクトを開発しています。自然言語処理機能によって、ユーザーが Pi-hole デバイスをより簡単に操作できるようになると考えています。また、FastAPI と Retrieval-Augmented Generation(RAG)システムについて学ぶことも、このプロジェクトの目的です。
MCP サーバーの概要
MCP サーバーは、FastAPI で構築した RESTful API を使用して Pi-hole デバイスとやり取りし、Retrieval-Augmented Generation(RAG)システムを通じて、クエリベースの管理と Pi-hole の統計情報の取得を可能にするよう設計されています。このサービスは、自然言語処理機能によって Pi-hole の管理をより快適にすることを目指しています。
インストール
-
リポジトリをクローンする:
git clone [your repository URL] cd mcp_server -
仮想環境をセットアップする:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate` -
依存関係をインストールする:
pip install -r requirements.txt -
設定:
config.toml.exampleをconfig.tomlにコピーします。- Pi-hole のセットアップ、API キー、Milvus データベースの接続情報に合わせて設定を調整します。
- API キーなどのシークレットには、
.envファイルを使用します。
サーバーの実行
uvicorn main:app --host 0.0.0.0 --port 8000
API の使用方法
-
クエリエンドポイント:
X-API-Keyを含むヘッダーを指定して、/queryに POST リクエストを送信します。例:POST /query HTTP/1.1 Host: yourserver.com X-API-Key: your_api_key_here Content-Type: application/json { "query": "Block internet for 10 minutes." } -
機能フラグ: 利用可能な機能を制御する機能フラグの設定は、
config.tomlで確認してください。
ドキュメント
- サーバーの実行中に
/docsの API ドキュメントを参照すると、エンドポイントの詳しい使用方法を確認できます。
開発者向け README
LLM を使用して API エンドポイントをスキャンし、コードを自動生成する予定です。その後、最後に動作していたバージョンのパッチを適用し、不具合を一つずつ解消していきます。
ベンチマークの正確性を確保するため、以前に LLM が生成したコードは、参照用として別のブランチに保持します。
開発ガイドライン
- 構成: このプロジェクトでは FastAPI を使用し、依存関係は
pyproject.tomlまたはrequirements.txtで管理します。 - ロギング: ロギング設定は
logging_config.pyに保存されています。ログを明確にし、機密情報を含めないようにしてください。 - テスト: テストの作成と実行には
pytestを使用します。Milvus や Pi-hole などの外部サービスは、モックを使用することを推奨します。
コードへの貢献
-
リポジトリをフォークする:
git clone [your fork] -
セットアップと開発:
- 上記のインストールガイドに従って、開発環境をセットアップします。
- コミットする前に、次のことを行います。
- テストを実行します。
pytest - リンター(
flake8、mypy、black、isort)を使用して、コードスタイルを確認します。
- テストを実行します。
-
プルリクエストを送信する:
- 変更をフォーク先にプッシュし、main ブランチに対するプルリクエストを作成します。
エラー処理
PiholeConnectionErrorやRagIntentNotFoundErrorなどの一般的なエラーに対する例外ハンドラーをカスタマイズして実装します。
ドキュメント
- 機能や依存関係に変更があった場合は、
README.mdを更新します。 - 開発タスクに合わせて
todo.mdを最新の状態に保ちます。
LLM とパッチを使用したビルドポリシー
概要:
- LLM(言語モデル)を使用して初期コードベースを生成したり、新機能やバグ修正の解決策を提示したりします。その後、手動でのコードレビューとパッチの適用を通じて改良します。
プロセス:
-
containers ディレクトリで pihole を起動します
-
cd prompts/; ./run_plan.sh -
gameplan.md を比較して、重要な違いを確認するための新しいブランチを作成します
-
gameplan.md を使用して、aider.md 用の個別のプロンプトを生成します
-
gameplan.md に基づいて、aider を使用し、特定の機能や問題のコードを生成します
-
生成されたコードと以前の LLM バージョンとの差分を確認します
-
「Working」からパッチを適用して、問題を整理します
-
$$$$ 利益
-
統合テスト:
- 完全な統合テストを実行し、新しいコードが期待どおりに動作することを確認します。
-
ドキュメントの更新:
- ユーザー向けと開発者向けの両方のドキュメントを更新し、新機能、修正、変更内容を記録します。
ポリシーに関する注意事項:
- 人間によるレビューを行わずに、LLM が生成したコードを直接コミットすることは避けてください。
- トレーサビリティを確保するため、生成されたコードの出所を記録してください。
- LLM が生成したコードをレビューしてパッチを適用する際は、セキュリティと効率を優先してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。