Skip to main content
Glama

pihole-mcp

License: MIT Node.js Pi-hole v6 MCP

Claude のような AI アシスタントに、あなたの Pi-hole v6 DNS アドブロッカーを完全に制御させるための MCP (Model Context Protocol) サーバーです。クエリログ、許可/拒否リスト、グループ管理、gravity リロード、統計情報に対応しています。当初から マルチインスタンス展開 を想定して設計されており、単一の MCP エンドポイントから 1 つまたは複数の Pi-hole インスタンスを管理できます。

なぜ?

Pi-hole の管理 API は強力ですが、スクリプトから扱うのは面倒です。この MCP サーバーは、Pi-hole の API アクションをすべて、MCP 互換の AI アシスタントが直接呼び出せるツールに変換します。管理 UI をクリックしたり curl コマンドを書いたりする代わりに、AI にブロック内容の確認、ドメインの許可リストへの追加、インスタンス間の統計比較を依頼するだけで済みます。

複数の Pi-hole(プライマリ + セカンダリ、または VLAN 単位)を運用する ホームラボ愛好家、大規模な DNS フィルタリングを管理する ネットワーク管理者、そして AI 支援による DNS 管理を求めるすべての人に最適です。

Related MCP server: MCP Pi-hole Server

機能

  • マルチインスタンス対応 - 環境変数で 1〜N 個の Pi-hole インスタンスを設定

  • Pi-hole v6 API の完全カバレッジ - クエリログ、許可/拒否リスト(完全な CRUD)、グループ管理、ブロック制御、ローカル DNS(A + CNAME)レコード、gravity リロード、統計情報

  • スマートな正規表現検出 - メタ文字の分析に基づいて、ドメインを完全一致リストまたは正規表現リストへ自動的に振り分け

  • 正規表現ランドマイン検出器 - 正規表現であるべきなのに deny-exact に登録されているエントリ(誤分類されたルール)を検出

  • Docker 対応 - 非 root ユーザー、ヘルスチェック、セキュリティ強化を備えたマルチステージ Dockerfile

  • Streamable HTTP トランスポート - HTTP ベースの MCP をサポートする任意の MCP クライアントで動作

  • Docker secrets 対応 - 環境変数または /run/secrets/ ファイルによるパスワード指定

クイックスタート

Docker(推奨)

git clone https://github.com/ranklancer/pihole-mcp.git
cd pihole-mcp
cp .env.example .env
# Edit .env with your Pi-hole URL(s) and password(s)

mkdir -p secrets
echo "your-pihole-password" > secrets/pihole_password
chmod 600 secrets/pihole_password

cp docker-compose.example.yml docker-compose.yml
docker compose up -d

Node.js

npm install
npm run build
export PIHOLE_INSTANCES=pihole
export PIHOLE_BASE_URL=http://pihole.example.com
export PIHOLE_PASSWORD=your-password
npm start

設定

設定はすべて環境変数を介して行います。完全なリファレンスは .env.example を参照してください。

単一インスタンス

PIHOLE_INSTANCES=pihole
PIHOLE_BASE_URL=http://192.0.2.100
PIHOLE_PASSWORD=your-password

複数インスタンス

PIHOLE_INSTANCES=primary,secondary
PRIMARY_BASE_URL=http://192.0.2.100
PRIMARY_PASSWORD=password1
SECONDARY_BASE_URL=https://198.51.100.101
SECONDARY_PASSWORD=password2
SECONDARY_INSECURE_TLS=true

PIHOLE_INSTANCES 内の各インスタンス名に対して、次の値を指定します:

Variable

Required

Description

<NAME>_BASE_URL

必須

Pi-hole のベース URL(例: http://pihole.local)

<NAME>_PASSWORD

必須

Pi-hole API パスワード(または Docker secrets を使用)

<NAME>_INSECURE_TLS

任意

自己署名証明書を使用する場合は true を設定(デフォルト: false)

フォールバックとして Docker secrets がサポートされています: /run/secrets/<name>_password(小文字)。

利用可能な MCP ツール

Tool

Description

pihole_query_log

フィルター付きでクエリログを取得(件数、時間範囲、クライアント、ドメイン、ステータス)

pihole_allow_domain

許可リストに追加(完全一致か正規表現かを自動検出)

pihole_deny_domain

拒否リストに追加(完全一致か正規表現かを自動検出)

pihole_list_allowlist

許可リストのエントリをすべて一覧表示(完全一致 + 正規表現を統合)

pihole_list_denylist

拒否リストのエントリをすべて一覧表示(完全一致 + 正規表現を統合)

pihole_stats_summary

Pi-hole の統計サマリーを取得

pihole_reload_lists

gravity のリロードを実行

pihole_group_management

Pi-hole グループの CRUD 操作

pihole_check_regex_types

deny-exact リスト内の誤分類された正規表現を検出

pihole_set_blocking

ブロックの有効/無効を切り替え(自動復帰タイマーも指定可能)

pihole_domain_management

許可/拒否ドメインを更新または削除(CRUD を完成)

pihole_local_dns

ローカル DNS A レコードの一覧表示/追加/削除

pihole_local_cname

ローカル CNAME レコードの一覧表示/追加/削除

すべてのツールは、特定の Pi-hole を対象とするオプションの instance パラメータを受け付けます。デフォルトでは最初に設定されたインスタンスを使用します。

MCP クライアントへの接続

サーバーは http://HOST:PORT/mcp(デフォルト: http://localhost:3000/mcp)で待ち受けます。

Claude Desktop / Claude Code

MCP 設定に追加してください:

{
  "mcpServers": {
    "pihole": {
      "url": "http://localhost:3031/mcp"
    }
  }
}

Supergateway(stdio ラッパー)

MCP クライアントが stdio トランスポートのみをサポートしている場合は、supergateway を使用してください:

npx -y supergateway --streamableHttp http://localhost:3031/mcp

ヘルスチェック

curl http://localhost:3031/health
# {"ok":true,"service":"pihole-mcp","version":"0.3.0"}

開発

npm install
npm run dev     # Watch mode — recompiles on save
npm start       # Run the server

要件

  • Node.js >= 20

  • API アクセスが有効な Pi-hole v6

  • Pi-hole インスタンスへのネットワーク接続

関連プロジェクト

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A server that exposes Pi-hole functionality as tools for AI assistants, allowing them to retrieve local DNS settings and query history through natural language.
    9
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects AI assistants to Pi-hole network-wide ad blocker, enabling monitoring of DNS traffic statistics, controlling blocking settings, managing whitelist/blacklist domains, viewing query logs, and performing maintenance tasks through natural language.
    16
    90 npm
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables control of Pi-hole v6 ad blocking, allowing users to toggle DNS blocking status and retrieve real-time statistics like query counts and blocked domains. It provides a structured interface for monitoring and managing network-level ad filtering through the Pi-hole REST API.
    -