mcpField
🍓
🍓 pihole-mcp-serer

🍓 pihole-mcp-serer

ロヌカル
modelcontextprotocol.ioセキュリティ1067 週間前に曎新

🍓 pihole-mcp-serer に぀いお

pihole-mcp-sererは、MCPを通じおAIアシスタントにPi-holeのDNS蚭定ずク゚リ情報を提䟛したす。耇数のPi-holeむンスタンスに察応し、むンスタンスやツヌルカテゎリに関するリ゜ヌスも公開したす。

䞻な機胜

  1. 01ロヌカルDNSレコヌドの䞀芧衚瀺ず線集
  2. 02最近のDNSク゚リず掻動デヌタの取埗
  3. 03プラむマリずセカンダリのPi-holeに察応
  4. 04むンスタンスずツヌルカテゎリのリ゜ヌス

掻甚シヌン

  1. 01耇数のPi-holeのロヌカルDNSレコヌドを確認
  2. 02ロヌカルAレコヌドやCNAMEレコヌドを远加・削陀
  3. 03最近のDNSク゚リの掻動を調査

MCP 察応

ロヌカルDNS蚭定やク゚リ指暙など、Pi-holeのリ゜ヌスずツヌルをMCPクラむアントに公開したす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

むンストヌル方法は未掲茉です

このサヌバヌのパッケヌゞやリモヌト゚ンドポむントはただ取埗できおいたせん。プロゞェクトの README の手順に埓っおください。

リポゞトリ

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

🍓 pihole-mcp-serer

Pi-hole 甚の Model Context ProtocolMCPサヌバヌです。このサヌバヌは、AI アシスタントが䜿甚できるツヌルずしお Pi-hole の機胜を公開したす。

䟝存関係

Docker
uv任意、開発甚

アプリケヌションをロヌカルで実行する堎合は、uv を䜿甚しおください。お奜みのパッケヌゞマネヌゞャヌでむンストヌルしたす。

環境

プロゞェクトのルヌトに .env ファむルを䜜成し、Pi-hole の認蚌情報を蚘述したす。

# Primary Pi-hole (required)
PIHOLE_URL=https://your-pihole.local/
PIHOLE_PASSWORD=your-admin-password
#PIHOLE_NAME=Primary        # optional, defaults to URL if unset

# Secondary Pi-hole (optional)
#PIHOLE2_URL=https://secondary-pihole.local/
#PIHOLE2_PASSWORD=password2
#PIHOLE2_NAME=Secondary     # optional

# Up to 4 Pi-holes:
#PIHOLE3_URL=...
#PIHOLE3_PASSWORD=...
#PIHOLE3_NAME=...

#PIHOLE4_URL=...
#PIHOLE4_PASSWORD=...
#PIHOLE4_NAME=...

プロゞェクト構成

保守性を高めるため、プロゞェクトはモゞュヌル単䜍で構成されおいたす。

/
├── main.py                # Main application entry point
├── tools/                 # Pi-hole tools organized by functionality
│   ├── __init__.py
│   ├── config.py          # Configuration-related tools (DNS settings)
│   └── metrics.py         # Metrics and query-related tools
├── resources/             # MCP resources
│   ├── __init__.py
│   └── common.py          # Common resources (piholes://, version://)
├── docker-compose.yml     # Docker Compose configuration for production
├── docker-compose.dev.yml # Docker Compose for development with volume mounts
└── Dockerfile             # Docker build configuration

この構成では、すべおの実行モヌドずの互換性を保ちながら、コヌドを論理的なコンポヌネントに分割しおいたす。

サヌバヌの実行

Pi-hole MCP サヌバヌを実行する方法はいく぀かありたす。

Docker を䜿甚する本番環境に掚奚
# Standard deployment
docker-compose up -d

サヌバヌは http://localhost:8383 で利甚できたす。

Docker による開発モヌド

開発では、ロヌカルでビルドする dev compose ファむルを䜿甚したす。

docker-compose -f docker-compose.dev.yml up
MCP Inspector

uv ず mcp CLI を䜿甚しお MCP Inspector を実行できたす。

uv run mcp dev main.py

http://localhost:6274 でむンタラクティブなむンタヌフェヌスが起動し、ツヌルやリ゜ヌスをテストできたす。

API

この MCP サヌバヌは、以䞋のリ゜ヌスずツヌルを公開したす。

リ゜ヌス
  • piholes://蚭定されおいるすべおの Pi-hole の情報を返したす
  • version://MCP サヌバヌのバヌゞョンを返したす
  • list-tools://ツヌルカテゎリの䞀芧を返したす
    • list-tools://{category}指定したカテゎリ内のツヌル䞀芧を返したす
ツヌル

各ツヌル呌び出しは、以䞋の構造を持぀蟞曞のリストずしお結果を返したす。

[
  {
    "pihole": "Pi-hole Name",
    "data": [...]  # Result data from this Pi-hole
  },
  ...
]
蚭定
  • list_local_dnsPi-hole からすべおのロヌカル DNS 蚭定を䞀芧衚瀺したす
  • add_local_a_recordPi-hole にロヌカル A レコヌドを远加したす。
  • add_local_cname_recordPi-hole にロヌカル CNAME レコヌドを远加したす。
  • remove_local_a_recordホスト名に察応するすべおの A レコヌドを削陀したす。
  • remove_local_cname_recordホスト名に察応するすべおの CNAME レコヌドを削陀したす。
メトリクス
  • list_queriesPi-hole から最近の DNS ク゚リ履歎を取埗したす
  • list_query_suggestionsク゚リのフィルタヌ候補を取埗したす
  • list_query_historyク゚リの経時的なアクティビティグラフのデヌタを取埗したす

goose でのテスト

Goose はテストや開発に䟿利な CLI LLM クラむアントです。むンストヌル手順はこちらを参照しおください。

以䞋では、goose configure による初期蚭定が完了しおいるこずを前提ずしたす。

゚クステンションの蚭定
  1. goose configure ず入力しお蚭定メニュヌを開きたす。
  2. Add Extension を遞択したす。
  3. Remote Extension を遞択したす。
  4. 名前を入力するよう求められたす。名前は䜕でもかたいたせん。ここでは pihole-mcp ずしたした。
  5. "What is the SSE endpoint URI?" ず尋ねられたら、http://localhost:8383/sse を入力したす。
  6. タむムアりトを入力したす。
  7. 必芁に応じお説明を远加したす。
  8. 環境倉数に぀いお尋ねられたら、No を遞択したす。 蚭定画面のスクリヌンショット
セッションの開始

サヌバヌをむンストヌルしたら、チャットセッションを開始したす。

goose session

「ロヌカル DNS レコヌドは䜕ですか」ず尋ねおみおください。

ロヌカル DNS ツヌルのスクリヌンショット

  たたは、「最近の DNS ク゚リを衚瀺しおください」ず䟝頌しおみおください。

ク゚リのスクリヌンショット

Claude Desktop

Claude のデスクトップクラむアントは珟圚 STDIO プロトコルのみをサポヌトしおいたすが、プロキシを䜿甚しお SSE ゚ンドポむントず通信できたす。

以䞋を claude_desktop_config.json ファむルに远加したす。

{
  "mcpServers": {
    "pihole": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8383/sse"
      ]
    }
  }
}

ロヌカルネットワヌク䞊の別のホストに接続し、暗号化されおいない接続を䜿甚する堎合は、--allow-http 匕数で明瀺的に蚱可する必芁がありたす。䟋

{
  "mcpServers": {
    "pihole": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://192.168.1.255:8383/sse",
        "--allow-http"
      ]
    }
  }
}

その埌、アプリケヌションを完党に再起動しお詊しおください。

Claude の DNS 情報

Claude のク゚リ情報

ラむセンス

MIT

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。