mcpField
A
AdGuard Home MCP Server

AdGuard Home MCP Server

ローカル
github.com/Samik081セキュリティ143 週間前に更新

AdGuard Home MCP Server について

AdGuard Home MCP Serverは、AIクライアントからDNS、フィルタリング、クライアント、DHCPなどのAdGuard Home設定を確認・管理できます。監視用の読み取り専用モードを含め、ツールへのアクセスを設定できます。

主な機能

  1. 0116カテゴリにわたる65個のツール
  2. 02読み取り専用アクセスレベル
  3. 03カテゴリ・ツールのフィルタリング
  4. 04stdioとHTTPのトランスポート
  5. 052アーキテクチャ向けDockerイメージ

活用シーン

  1. 01DNSクエリログと統計の確認
  2. 02フィルタリストとルールの管理
  3. 03クライアントやDHCP設定の変更
  4. 04読み取り専用アクセスでの監視

MCP 対応

AdGuard Home APIの操作をMCPツールとして公開します。クライアントはstdioまたはStreamable HTTPで接続でき、アクセスレベルやフィルターに応じてツールが登録されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"samik081-mcp-adguard-home": {
"command": "npx",
"args": [
"-y",
"@samik081/mcp-adguard-home"
],
"env": {
"ADGUARD_URL": "<ADGUARD_URL>",
"ADGUARD_USERNAME": "<ADGUARD_USERNAME>",
"ADGUARD_PASSWORD": "<ADGUARD_PASSWORD>"
}
}
}
}
起動コマンドnpx -y @samik081/mcp-adguard-home
設定が必要な環境変数
ADGUARD_URLURL of the AdGuard Home instance (e.g. http://192.168.1.1:3000)
ADGUARD_USERNAMEシークレットAdGuard Home username (omit if authentication is disabled)
ADGUARD_PASSWORDシークレットAdGuard Home password (omit if authentication is disabled)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@samik081/mcp-adguard-home0.10.1
ocighcr.io/samik081/mcp-adguard-home:0.10.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

npm version Docker image License: MIT Node.js Version

MCP AdGuard Home

AdGuard Home 用の MCP サーバーです。Cursor、Claude Code、Claude Desktop で自然言語を使って、DNS フィルタリング、クライアント、DHCP、書き換えなどを管理できます。

特長

  • 16 カテゴリーにわたる 65 個のツールで、AdGuard Home API 全体を網羅
  • ADGUARD_ACCESS_TIER=read-only による読み取り専用モードで安全に監視
  • ADGUARD_CATEGORIES によるカテゴリーの絞り込みで、必要なツールだけを公開
  • HTTP 依存関係ゼロ。ネイティブの fetch を使用(Node.js 22 以降)
  • GHCR で linux/amd64 および linux/arm64 向けの Docker イメージ
  • Streamable HTTP プロトコルを使用した HTTP トランスポート(MCP_TRANSPORT=http)によるリモート MCP
  • 完全な型安全性を備えた TypeScript/ESM

API の互換性

AdGuard Home v0.107.76 でテスト済みです。

クイックスタート

npx でサーバーを直接実行します。

ADGUARD_URL="http://your-adguard-ip:3000" \
ADGUARD_USERNAME="your-username" \
ADGUARD_PASSWORD="your-password" \
npx -y @samik081/mcp-adguard-home

起動時にサーバーが AdGuard Home への接続を検証します。認証情報が不足しているか無効な場合は、明確なエラーを表示して直ちに終了します。

Docker

Docker で実行します(stdio トランスポート。npx と同じです)。

docker run --rm -i \
  -e ADGUARD_URL=http://your-adguard-ip:3000 \
  -e ADGUARD_USERNAME=your-username \
  -e ADGUARD_PASSWORD=your-password \
  ghcr.io/samik081/mcp-adguard-home

HTTP トランスポートを使ってリモート MCP サーバーとして実行するには、次のようにします。

docker run -d -p 3000:3000 \
  -e MCP_TRANSPORT=http \
  -e ADGUARD_URL=http://your-adguard-ip:3000 \
  -e ADGUARD_USERNAME=your-username \
  -e ADGUARD_PASSWORD=your-password \
  ghcr.io/samik081/mcp-adguard-home

MCP エンドポイントは http://localhost:3000、ヘルスチェックは http://localhost:3000/health で利用できます。

設定

Claude Code CLI(推奨):

# Using npx
claude mcp add --transport stdio adguard-home \
  --env ADGUARD_URL=http://your-adguard-ip:3000 \
  --env ADGUARD_USERNAME=your-username \
  --env ADGUARD_PASSWORD=your-password \
  -- npx -y @samik081/mcp-adguard-home

# Using Docker
claude mcp add --transport stdio adguard-home \
  --env ADGUARD_URL=http://your-adguard-ip:3000 \
  --env ADGUARD_USERNAME=your-username \
  --env ADGUARD_PASSWORD=your-password \
  -- docker run --rm -i ghcr.io/samik081/mcp-adguard-home

# Using remote HTTP (connect to a running Docker container or HTTP server)
claude mcp add --transport http adguard-home http://localhost:3000

JSON 設定(Claude Code の .mcp.json、Claude Desktop の claude_desktop_config.json、Cursor の .cursor/mcp.json で使用できます):

{
  "mcpServers": {
    "adguard-home": {
      "command": "npx",
      "args": ["-y", "@samik081/mcp-adguard-home"],
      "env": {
        "ADGUARD_URL": "http://your-adguard-ip:3000",
        "ADGUARD_USERNAME": "your-username",
        "ADGUARD_PASSWORD": "your-password"
      }
    }
  }
}

Docker(stdio):

{
  "mcpServers": {
    "adguard-home": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
        "-e", "ADGUARD_URL=http://your-adguard-ip:3000",
        "-e", "ADGUARD_USERNAME=your-username",
        "-e", "ADGUARD_PASSWORD=your-password",
        "ghcr.io/samik081/mcp-adguard-home"
      ]
    }
  }
}

リモート MCP(実行中の Docker コンテナまたは HTTP サーバーに接続):

{
  "mcpServers": {
    "adguard-home": {
      "type": "streamable-http",
      "url": "http://localhost:3000"
    }
  }
}

アクセスティア

ADGUARD_ACCESS_TIER 環境変数を使って、利用可能なツールを制御します。

ティアツール説明
full(デフォルト)65読み取りと書き込み — すべてを制御
read-only29読み取り専用 — 状態を変更せず安全に監視
  • full:65 個すべてのツールを利用できます。設定変更、フィルターの追加・削除、ログの消去、すべての破壊的操作が含まれます。
  • read-only:29 個のツールを利用できます。ステータス、設定の表示、クエリログの読み取りのみ可能です。状態は変更されません。

利用中のティアで使えないツールは、MCP サーバーに登録されません。AI ツールのツール一覧にも表示されないため、コンテキストをすっきり保てます。

環境変数

変数必須デフォルト説明
ADGUARD_URLはい--AdGuard Home のベース URL(例:http://192.168.1.1:3000)
ADGUARD_USERNAMEいいえ--管理者ユーザー名。AdGuard Home で認証が無効になっている場合は、ADGUARD_PASSWORD とともに省略します
ADGUARD_PASSWORDいいえ--管理者パスワード。ADGUARD_USERNAME を設定する場合は、必ず設定する必要があります
ADGUARD_ACCESS_TIERいいえfull読み取り専用ツールのみを使用する場合は read-only、すべてのツールを使用する場合は full
ADGUARD_CATEGORIESいいえ(すべて)カンマ区切りのカテゴリ許可リスト(例:dns,filtering,stats)
ADGUARD_TOOL_BLACKLISTいいえ(なし)除外するツール名のカンマ区切りリスト(例:dns_clear_cache,stats_reset)
ADGUARD_TOOL_WHITELISTいいえ(なし)アクセス階層とカテゴリのフィルターを無視して、必ず含めるツール名のカンマ区切りリスト
DEBUGいいえfalsestderr へのデバッグログ出力を有効にします
MCP_TRANSPORTいいえstdioトランスポートモード:stdio(デフォルト)または http
MCP_PORTいいえ3000HTTP サーバーのポート(MCP_TRANSPORT=http の場合のみ使用)
MCP_HOSTいいえ0.0.0.0HTTP サーバーのバインドアドレス(MCP_TRANSPORT=http の場合のみ使用)
MCP_SESSION_IDLE_TIMEOUTいいえ1800HTTP セッションを閉じてメモリを解放するまでの非アクティブ時間(秒単位。SSE ストリームに接続しているセッションは閉じられません)。0 にすると無効になります。MCP_TRANSPORT=http の場合のみ使用
MCP_EXCLUDE_TOOL_TITLESいいえfalsetrue に設定すると、登録時にツール名を省略します(トークンを節約できます)
利用可能なカテゴリ

global、dns、querylog、stats、filtering、safebrowsing、parental、safesearch、clients、dhcp、rewrites、tls、blocked_services、access、install、mobile_config

ツール

mcp-adguard-home は、カテゴリ別に整理された 65 個のツールを提供します。各ツールのアクセス列には必要な最小アクセス階層が示されます。read-only は両方の階層で利用可能、full は full 階層が必要です。ヒント列にはツールの動作が示されます。read-only は状態を変更せず、destructive は既存の状態を変更し、idempotent は 2 回呼び出しても同じ結果になります。

グローバル(6 ツール)
ツール説明アクセスヒント
global_get_statusバージョン、DNS アドレス、保護状態、ポートを含むサーバーのステータスを取得しますread-onlyread-only, idempotent
global_get_profileユーザープロファイル(名前、言語、テーマ)を取得しますread-onlyread-only, idempotent
global_check_versionAdGuard Home の更新を確認し、現在のバージョンと比較しますread-onlyread-only, idempotent
global_set_protectionDNS 保護を全体で有効または無効にします。一時的に無効にする場合は、期間を指定できますfulldestructive, idempotent
global_update_profileユーザープロファイルの設定(名前、言語、テーマ)を更新しますfulldestructive, idempotent
global_begin_updateAdGuard Home ソフトウェアの更新を開始しますfulldestructive
DNS(4 ツール)
ツール説明アクセスヒント
dns_get_infoアップストリーム、キャッシュ設定、ブロッキングモード、DNSSEC を含む DNS 設定全体を取得しますread-onlyread-only, idempotent
dns_test_upstreamアップストリーム DNS サーバー設定をテストし、サーバーに到達できることを確認しますread-onlyread-only, idempotent
dns_set_configDNS サーバー設定を更新します(部分更新用の 23 個の任意フィールド。レート制限のサブネット長と許可リストを含む)fulldestructive, idempotent
dns_clear_cacheDNS リゾルバーのキャッシュを消去しますfulldestructive, idempotent
クエリログ(4 ツール) | ツール | 説明 | アクセス | ヒント | |------|-------------|--------|-------| | `querylog_get` | 理由や応答ステータスによる任意の絞り込み、検索語、`older_than` によるカーソルページネーションを使って DNS クエリログを検索します(結果が空の場合はページネーションのヒントを返します) | 読み取り専用 | 読み取り専用、冪等 | | `querylog_get_config` | クエリログの設定を取得します | 読み取り専用 | 読み取り専用、冪等 | | `querylog_set_config` | クエリログの設定(有効状態、間隔、匿名化)を更新します | フル | 破壊的、冪等 | | `querylog_clear` | DNS クエリログ全体を消去します | フル | 破壊的、冪等 |
統計(4 ツール)
ツール説明アクセスヒント
stats_get上位ドメイン、ブロック数、クライアントのアクティビティなど、DNS の統計情報を取得します読み取り専用読み取り専用、冪等
stats_get_config統計情報の設定を取得します読み取り専用読み取り専用、冪等
stats_resetすべての DNS 統計情報をリセットしますフル破壊的、冪等
stats_set_config統計情報の設定(有効状態、間隔、無視するドメイン)を更新しますフル破壊的、冪等
フィルタリング(8 ツール)
ツール説明アクセスヒント
filtering_get_statusブロックリスト、許可リスト、ユーザールールなど、フィルタリング設定を取得します読み取り専用読み取り専用、冪等
filtering_check_host現在のフィルタリングルールでホスト名がブロックされるかどうかをテストします読み取り専用読み取り専用、冪等
filtering_set_config全体的なフィルタリング設定(有効状態と更新間隔)を更新しますフル破壊的、冪等
filtering_add_url新しいフィルター URL(ブロックリストまたは許可リスト)を追加しますフル—
filtering_remove_urlブロックリストまたは許可リストからフィルター URL を削除しますフル破壊的
filtering_set_url既存のフィルター URL(名前の変更、URL の変更、有効化/無効化)を更新しますフル破壊的、冪等
filtering_refresh最新の更新を取得するため、フィルターリストを強制的に更新しますフル破壊的、冪等
filtering_set_rulesカスタムフィルタリングルールを設定します(既存のカスタムルールをすべて置き換えます)フル破壊的、冪等
セーフブラウジング(2 ツール)
ツール説明アクセスヒント
safebrowsing_get_statusセーフブラウジング(マルウェア/フィッシング対策)のステータスを取得します読み取り専用読み取り専用、冪等
safebrowsing_setセーフブラウジング保護を有効または無効にしますフル破壊的、冪等
ペアレンタル(2 ツール)
ツール説明アクセスヒント
parental_get_statusペアレンタルフィルタリングのステータスを取得します読み取り専用読み取り専用、冪等
parental_setペアレンタルフィルタリング(コンテンツ制限)を有効または無効にしますフル破壊的、冪等
セーフサーチ(2 ツール)
ツール説明アクセスヒント
safesearch_get_statusエンジンごとの適用状況を示すセーフサーチ設定を取得します読み取り専用読み取り専用、冪等
safesearch_set_settingsエンジンごとの設定(Bing、DuckDuckGo、Google、Pixabay、Yandex、YouTube)を指定して、セーフサーチ設定を更新しますフル破壊的、冪等
クライアント(5 ツール) | ツール | 説明 | アクセス | ヒント | |------|-------------|--------|-------| | `clients_get` | 設定済みおよび自動検出されたすべてのクライアントと、その設定を取得します | 読み取り専用 | 読み取り専用、冪等 | | `clients_search` | ID(IP、MAC、CIDR、またはクライアント ID)で特定のクライアントを検索します | 読み取り専用 | 読み取り専用、冪等 | | `clients_add` | クライアントごとの設定を指定して、新しい永続クライアントを追加します | フル | — | | `clients_update` | 名前で既存の永続クライアントを更新します | フル | 破壊的、冪等 | | `clients_delete` | 名前で永続クライアントを削除します | フル | 破壊的 |
DHCP(9 ツール)
ツール説明アクセスヒント
dhcp_get_statusDHCP サーバーの設定、静的リース、アクティブなリースを取得します読み取り専用読み取り専用、冪等
dhcp_get_interfacesDHCP サーバーのバインドに使用できるネットワークインターフェースを取得します読み取り専用読み取り専用、冪等
dhcp_find_activeネットワークインターフェース上で競合する DHCP サーバーをスキャンします読み取り専用読み取り専用、冪等
dhcp_set_configDHCP サーバーの設定(有効状態、インターフェース、IPv4/IPv6 設定)を更新しますフル破壊的、冪等
dhcp_add_static_leaseMAC アドレスを IP に割り当てる静的 DHCP リースを追加しますフル—
dhcp_remove_static_lease静的 DHCP リースを削除しますフル破壊的
dhcp_update_static_lease静的 DHCP リースを更新します(削除して追加する方式)フル破壊的、冪等
dhcp_resetDHCP 設定をデフォルトにリセットしますフル破壊的、冪等
dhcp_reset_leasesすべての DHCP リースをクリアしますフル破壊的、冪等
書き換え(6 ツール)
ツール説明アクセスヒント
rewrites_list設定済みのすべての DNS 書き換えルールを取得します読み取り専用読み取り専用、冪等
rewrites_get_settingsDNS 書き換えモジュールの有効/無効状態を取得します読み取り専用読み取り専用、冪等
rewrites_add新しい DNS 書き換えルールを追加しますフル—
rewrites_updateDNS 書き換えルールを更新します(削除して追加する方式)フル破壊的、冪等
rewrites_deleteDNS 書き換えルールを削除しますフル破壊的
rewrites_set_settingsDNS 書き換えモジュールを有効または無効にしますフル破壊的、冪等
TLS(3 ツール)
ツール説明アクセスヒント
tls_get_statusTLS 設定と証明書の検証状態を取得します読み取り専用読み取り専用、冪等
tls_validate変更を適用せずに TLS 設定を検証します読み取り専用読み取り専用、冪等
tls_set_config証明書や HTTPS/DoH/DoT 設定など、TLS 設定を更新しますフル破壊的、冪等
ブロック対象サービス(3 ツール)
ツール説明アクセスヒント
blocked_services_get_allブロック可能なすべてのサービスをグループ別に整理して一覧表示します読み取り専用読み取り専用、冪等
blocked_services_get現在ブロックされているサービスの一覧とスケジュールを取得します読み取り専用読み取り専用、冪等
blocked_services_updateブロックするサービスの一覧と、任意のスケジュールを更新しますフル破壊的、冪等
アクセス(2 ツール)
ツール説明アクセスヒント
access_get_listアクセス制御リスト(許可されたクライアント、拒否されたクライアント、ブロックされたホスト)を取得します読み取り専用読み取り専用、冪等
access_set_listアクセス制御リスト(許可されたクライアント、拒否されたクライアント、ブロックされたホスト)を設定しますフル破壊的、冪等
インストール(3 ツール) | ツール | 説明 | アクセス | ヒント | |------|-------------|--------|-------| | `install_get_addresses` | 初期設定のためにネットワークインターフェイスの詳細とポートを取得します | 読み取り専用 | 読み取り専用、べき等 | | `install_check_config` | 適用せずにインストール設定を検証します(Web/DNS のバインド、認証情報を確認します) | フル | 読み取り専用、べき等 | | `install_apply_config` | 初期設定(Web/DNS のバインドと管理者の認証情報)を適用します | フル | 破壊的 |
モバイル設定(2 個のツール)
ツール説明アクセスヒント
mobile_config_get_dohDNS-over-HTTPS 用の Apple .mobileconfig プロファイルを生成します読み取り専用読み取り専用、べき等
mobile_config_get_dotDNS-over-TLS 用の Apple .mobileconfig プロファイルを生成します読み取り専用読み取り専用、べき等

動作を確認する

MCP クライアントの設定後、AI アシスタントに次のように尋ねます。

「AdGuard Home サーバーの状態を教えてください」

接続が機能している場合、アシスタントは global_get_status を呼び出し、サーバーのバージョン、DNS アドレス、保護状態、ポート設定を返します。

使用例

  • 「現在の DNS 保護状態を教えてください」 -- global_get_status を呼び出して、バージョン、アドレス、保護状態を表示します。
  • 「すべての DNS 書き換えルールを表示してください」 -- rewrites_list を呼び出して、設定済みの DNS 書き換えをすべて表示します。
  • 「local.example.com を 192.168.1.100 に向ける DNS 書き換えを追加してください」 -- rewrites_add を呼び出して、新しい書き換えルールを作成します。

トラブルシューティング

接続エラー
  • MCP サーバーを実行しているマシンから ADGUARD_URL にアクセスできることを確認してください
  • 標準以外のポートを使用する場合は、URL にポートが含まれていることを確認してください(例:http://192.168.1.1:3000)
  • AdGuard Home が実行中で、アクセス可能であることを確認してください
認証エラー
  • ADGUARD_USERNAME と ADGUARD_PASSWORD が正しいことを確認してください
  • AdGuard Home で認証が無効になっている場合(ユーザーが設定されていない場合)は、両方の変数を未設定のままにしてください
  • AdGuard Home でユーザーに管理者権限があることを確認してください
ツールが表示されない
  • ADGUARD_ACCESS_TIER の設定を確認してください。read-only モードでは読み取りツールのみが公開されます
  • ADGUARD_CATEGORIES を確認してください。登録されるのは、リストに記載されたカテゴリのツールのみです
  • stderr の出力を確認し、サーバーがエラーなく起動したことを確認してください

開発

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode (auto-reload)
npm run dev

# Open the MCP Inspector for interactive testing
npm run inspect

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。