adguardctrl
ActiveTuning DNS filtering means the AdGuard Home dashboard, one box at a time, and hoping you clicked the right client. adguard-mcp hands the whole control surface to your agent: status, stats, query logs, filter lists, and gated changes, across every AdGuard Home instance you run, in plain language over stdio.
See it workrepresentative session
Representative session. Illustrative values, RFC 5737 addresses. Credentials stay in memory and are redacted from logs; nothing leaves your box.
What it does
Point any MCP client at adguard-mcp and your self-hosted AdGuard Home becomes tools the agent can call: read status, stats, the DNS query log, filter lists, named clients, DNS config, and a check_host lookup that shows exactly what AdGuard would do with a hostname. The reason it exists is that the raw AdGuard Home API has no agent-safety layer, so every endpoint (including the ones that disable all blocking or wipe your rules) is one hallucinated call away. adguard-mcp differs by encoding those endpoints as typed tools behind a three-tier gate, keeping reads open, requiring confirm: true on writes, and requiring both confirm: true and destructive: true on destructive ops, while resolving any number of instances from env vars so one tool call can target a non-default box or drive AdGuardHome Sync.
Capabilities33 tools across three gating tiers
Status & inspection
6 read toolsServer status, stats window, DNS query-log slices, DNS config, and a check_host lookup that reports AdGuard's filter decision, matched rules, and resolved IPs.
Filter lists & rules
read + safe writesList subscribed blocklists/allowlists and custom user rules; add, remove, toggle, or refresh lists and append/remove single user rules behind confirm: true.
Clients & blocked services
read + safe writesEnumerate named clients and the blocked-services catalog; add, update, or set per-client blocked services and schedules with confirm: true.
Protection & SafeSearch
safe + destructiveToggle SafeSearch and SafeBrowsing (safe writes); toggle global protection or wholesale-replace the user-rules block (destructive, needs confirm + destructive).
Query log & stats maintenance
3 destructive toolsClear the DNS query log, reset the stats window, or delete a named client; each gated behind confirm: true and destructive: true.
AdGuardHome Sync
4 toolsOrigin/replica status, healthz check, and in-memory logs (reads), plus trigger a sync run; separate env prefix, tools stay listed but error clearly if Sync is unconfigured.
Setup
npm i -g @solomonneas/adguard-mcp
Set per-instance ADGUARD_PRIMARY_URL, ADGUARD_PRIMARY_USERNAME, ADGUARD_PRIMARY_PASSWORD (at least one instance required); add ADGUARD_<NAME>_* for more boxes and optional ADGUARDHOME_SYNC_URL for Sync.
{ "mcpServers": { "adguard": { "command": "npx", "args": ["-y", "@solomonneas/adguard-mcp"], "env": { "ADGUARD_PRIMARY_URL": "http://192.0.2.10", "ADGUARD_PRIMARY_USERNAME": "admin", "ADGUARD_PRIMARY_PASSWORD": "your-password" } } } }