AdGuard Home MCP Server

Manage AdGuard Home through AI assistants

Local serverstdioTypeScript

What is the AdGuard Home MCP server?

Connect AdGuard Home to Claude, Cursor or any other MCP client and it stops being a tab you switch to. Manage AdGuard Home through AI assistants. The adguard home mcp server is what makes that connection.

What the server does

MCP server for AdGuard Home. Manage DNS filtering, clients, DHCP, rewrites, and more through natural language in Cursor, Claude Code, and Claude Desktop.

  • 65 tools — across 16 categories covering the complete AdGuard Home API
  • Read-only mode — via ADGUARD_ACCESS_TIER=read-only for safe monitoring
  • Category filtering — via ADGUARD_CATEGORIES to expose only the tools you need
  • Zero HTTP dependencies — -- uses native fetch (Node.js 18+)
  • Docker images — for linux/amd64 and linux/arm64 on GHCR
  • Remote MCP — via HTTP transport (MCP_TRANSPORT=http) using the Streamable HTTP protocol

Available tools

The toolset is worth reading before you wire it up, because it tells you what the integration is really for:

  • global_get_status — Retrieve server status including version, DNS addresses, protection state, and ports
  • global_get_profile — Retrieve user profile (name, language, theme)
  • global_check_version — Check for AdGuard Home updates and compare with current version
  • global_set_protection — Enable or disable DNS protection globally, with optional duration for temporary disable
  • global_update_profile — Update user profile settings (name, language, theme)
  • global_begin_update — Initiate an AdGuard Home software update
  • dns_get_info — Retrieve full DNS configuration including upstreams, cache settings, blocking mode, and DNSSEC
  • dns_test_upstream — Test upstream DNS server configuration to verify servers are reachable
  • dns_set_config — Update DNS server configuration (19 optional fields for partial update)
  • dns_clear_cache — Clear the DNS resolver cache
  • querylog_get — Search DNS query log with optional filtering by reason or response status, search term, and pagination
  • querylog_get_config — Retrieve query log configuration settings

Installation

@samik081/mcp-adguard-home on npm is all you need. Most clients run it directly, so configuration is a few lines and a restart.

Credentials and setup notes

Configuration is passed through the environment: ADGUARD_URL, ADGUARD_USERNAME, ADGUARD_PASSWORD. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.

Where it fits

Among the monitoring and observability options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. AdGuard Home's toolset — global_get_status, global_get_profile, global_check_version and 11 more — is a fair guide to whether it matches your workflow. It is maintained by Samik081; worth a glance at recent repository activity before you build anything load-bearing on it.

SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.

Worth knowing first

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch AdGuard Home.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

Available tools

ToolWhat it does
global_get_statusRetrieve server status including version, DNS addresses, protection state, and ports
global_get_profileRetrieve user profile (name, language, theme)
global_check_versionCheck for AdGuard Home updates and compare with current version
global_set_protectionEnable or disable DNS protection globally, with optional duration for temporary disable
global_update_profileUpdate user profile settings (name, language, theme)
global_begin_updateInitiate an AdGuard Home software update
dns_get_infoRetrieve full DNS configuration including upstreams, cache settings, blocking mode, and DNSSEC
dns_test_upstreamTest upstream DNS server configuration to verify servers are reachable
dns_set_configUpdate DNS server configuration (19 optional fields for partial update)
dns_clear_cacheClear the DNS resolver cache
querylog_getSearch DNS query log with optional filtering by reason or response status, search term, and pagination
querylog_get_configRetrieve query log configuration settings
querylog_set_configUpdate query log configuration (enabled, interval, anonymization)
querylog_clearClear the entire DNS query log

How to install the AdGuard Home MCP server

**Docker (stdio):**

```json
{
  "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"
      ]
    }
  }
}

Configuration as documented by the project. Restart the client after saving.

Configuration

VariableDescriptionRequired
ADGUARD_URLEndpoint or connection string the server talks to.Yes
ADGUARD_USERNAMEConfiguration value read at startup.Optional
ADGUARD_PASSWORDConfiguration value read at startup.Optional

Example prompts to try

  • Use AdGuard Home to global get status.
  • Use AdGuard Home to global get profile.
  • Use AdGuard Home to global check version.

Frequently asked questions

It connects AdGuard Home to MCP-compatible AI assistants such as Claude and Cursor, exposing 14 tools (global_get_status, global_get_profile, global_check_version, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with AdGuard Home directly.