Skip to content
plugmcp
DirectorySkillsCategoriesBlog
EN/中文
Sign inSign up
Home/Servers/AdGuard Home MCP Server

AdGuard Home MCP Server

I
by io.github.Samik081

Manage AdGuard Home through AI assistants

Power your agent

Add this server

The publisher's own command. Not a PlugMCP endpoint.

Local command
npx -y @samik081/[email protected]
Credentials from the publisher
  • ADGUARD_URL — URL 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)
Provider
Claude Code
ADGUARD_URL=<value> ADGUARD_USERNAME=<secret> ADGUARD_PASSWORD=<secret> claude mcp add io.github.samik081-mcp-adguard-home -- npx -y @samik081/[email protected]

Run in a terminal.

Claude Desktop
{
  "mcpServers": {
    "io.github.samik081-mcp-adguard-home": {
      "command": "npx",
      "args": [
        "-y",
        "@samik081/[email protected]"
      ],
      "env": {
        "ADGUARD_URL": "<value>",
        "ADGUARD_USERNAME": "<secret>",
        "ADGUARD_PASSWORD": "<secret>"
      }
    }
  }
}

claude_desktop_config.json

Step-by-step: add this in Claude

Remote URL or a command on your machine? How the two installs differ

Run on PlugMCP

Host a copy with our keys and logs.

A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.

Launch

Related MCP

View more
  • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
  • N
    NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
  • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

Related skills

View all
  • reaReverse engineer anything with agents, from app behavior down to native binaries.
  • rea-changelog-updatePrepare or rewrite REA release changelogs and GitHub release notes from pinned Git history, with verified contributor thanks and Release Please synchronization.
  • rea-tool-designDesign or change REA investigation tools, CLI/MCP contracts, provider capabilities, and Evidence semantics.

Manage AdGuard Home through AI assistants

MCP AdGuard Home

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

Features

  • 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 22+)
  • Docker images for linux/amd64 and linux/arm64 on GHCR
  • Remote MCP via HTTP transport (MCP_TRANSPORT=http) using the Streamable HTTP protocol
  • TypeScript/ESM with full type safety

API Compatibility

Tested with AdGuard Home v0.107.76.

Quick Start

Run the server directly with npx:

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

The server validates your AdGuard Home connection on startup and fails immediately with a clear error if credentials are missing or invalid.

Docker

Run with Docker (stdio transport, same as 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

To run as a remote MCP server with HTTP transport:

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

The MCP endpoint is available at http://localhost:3000 and a health check at http://localhost:3000/health.

Configuration

Claude Code CLI (recommended):

# 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 config (works with 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"
      ]
    }
  }
}

Remote MCP (connect to a running Docker container or HTTP server):

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

Access Tiers

Control which tools are available using the ADGUARD_ACCESS_TIER environment variable:

TierToolsDescription
full (default)65Read and write -- full control
read-only29Read only -- safe for monitoring, no state changes
  • full: All 65 tools. Includes configuration changes, adding/removing filters, clearing logs, and all destructive operations.
  • read-only: 29 tools. Status, configuration viewing, and query log reading only. No state changes.

Tools that are not available in your tier are not registered with the MCP server. They will not appear in your AI tool's tool list, keeping the context clean.

Environment Variables

VariableRequiredDefaultDescription
ADGUARD_URLYes--AdGuard Home base URL (e.g., http://192.168.1.1:3000)
ADGUARD_USERNAMENo--Admin username. Omit together with ADGUARD_PASSWORD if AdGuard Home has authentication disabled
ADGUARD_PASSWORDNo--Admin password. Must be set whenever ADGUARD_USERNAME is
ADGUARD_ACCESS_TIERNofullread-only for read-only tools only, full for all tools
ADGUARD_CATEGORIESNo(all)Comma-separated category allowlist (e.g., dns,filtering,stats)
ADGUARD_TOOL_BLACKLISTNo(none)Comma-separated list of tool names to exclude (e.g., dns_clear_cache,stats_reset)
ADGUARD_TOOL_WHITELISTNo(none)Comma-separated list of tool names to force-include, bypassing access tier and category filters
DEBUGNofalseEnable debug logging to stderr
MCP_TRANSPORTNostdioTransport mode: stdio (default) or http
MCP_PORTNo3000HTTP server port (only used when MCP_TRANSPORT=http)
MCP_HOSTNo0.0.0.0HTTP server bind address (only used when MCP_TRANSPORT=http)
MCP_SESSION_IDLE_TIMEOUTNo1800Seconds of inactivity after which an HTTP session is closed and its memory released (sessions with a connected SSE stream are never closed). 0 disables. Only used when MCP_TRANSPORT=http
MCP_EXCLUDE_TOOL_TITLESNofalseSet true to omit tool titles from registration (saves tokens)

Available Categories

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

Tools

mcp-adguard-home provides 65 tools organized by category. Each tool's Access column shows the minimum tier required: read-only (available in both tiers) or full (requires full tier). The Hints column shows tool behavior: read-only (no state changes), destructive (modifies existing state), idempotent (same result if called twice).

ToolDescriptionAccessHints
global_get_statusRetrieve server status including version, DNS addresses, protection state, and portsread-onlyread-only, idempotent
global_get_profileRetrieve user profile (name, language, theme)read-onlyread-only, idempotent
global_check_versionCheck for AdGuard Home updates and compare with current versionread-onlyread-only, idempotent
global_set_protectionEnable or disable DNS protection globally, with optional duration for temporary disablefulldestructive, idempotent
global_update_profileUpdate user profile settings (name, language, theme)fulldestructive, idempotent
global_begin_updateInitiate an AdGuard Home software updatefulldestructive
ToolDescriptionAccessHints
dns_get_infoRetrieve full DNS configuration including upstreams, cache settings, blocking mode, and DNSSECread-onlyread-only, idempotent
dns_test_upstreamTest upstream DNS server configuration to verify servers are reachableread-onlyread-only, idempotent
dns_set_configUpdate DNS server configuration (23 optional fields for partial update, incl. rate-limit subnet lengths and allowlist)fulldestructive, idempotent
dns_clear_cacheClear the DNS resolver cachefulldestructive, idempotent
ToolDescriptionAccessHints
querylog_getSearch DNS query log with optional filtering by reason or response status, search term, and cursor pagination via older_than (returns a paging hint on empty results)read-onlyread-only, idempotent
querylog_get_configRetrieve query log configuration settingsread-onlyread-only, idempotent
querylog_set_configUpdate query log configuration (enabled, interval, anonymization)fulldestructive, idempotent
querylog_clearClear the entire DNS query logfulldestructive, idempotent
ToolDescriptionAccessHints
stats_getRetrieve DNS statistics including top domains, blocked counts, and client activityread-onlyread-only, idempotent
stats_get_configRetrieve statistics configuration settingsread-onlyread-only, idempotent
stats_resetReset all DNS statisticsfulldestructive, idempotent
stats_set_configUpdate statistics configuration (enabled, interval, ignored domains)fulldestructive, idempotent
ToolDescriptionAccessHints
filtering_get_statusRetrieve filtering configuration including blocklists, allowlists, and user rulesread-onlyread-only, idempotent
filtering_check_hostTest whether a hostname would be blocked by current filtering rulesread-onlyread-only, idempotent
filtering_set_configUpdate global filtering configuration (enabled state and update interval)fulldestructive, idempotent
filtering_add_urlAdd a new filter URL (blocklist or allowlist)full—
filtering_remove_urlRemove a filter URL from blocklist or allowlistfulldestructive
filtering_set_urlUpdate an existing filter URL (rename, change URL, or enable/disable)fulldestructive, idempotent
filtering_refreshForce refresh of filter lists to fetch latest updatesfulldestructive, idempotent
filtering_set_rulesSet custom filtering rules (replaces all existing custom rules)fulldestructive, idempotent
ToolDescriptionAccessHints
safebrowsing_get_statusRetrieve safe browsing (malware/phishing protection) statusread-onlyread-only, idempotent
safebrowsing_setEnable or disable safe browsing protectionfulldestructive, idempotent
ToolDescriptionAccessHints
parental_get_statusRetrieve parental filtering statusread-onlyread-only, idempotent
parental_setEnable or disable parental filtering (content restrictions)fulldestructive, idempotent
ToolDescriptionAccessHints
safesearch_get_statusRetrieve safe search settings showing per-engine enforcement statusread-onlyread-only, idempotent
safesearch_set_settingsUpdate safe search settings with per-engine configuration (Bing, DuckDuckGo, Google, Pixabay, Yandex, YouTube)fulldestructive, idempotent
ToolDescriptionAccessHints
clients_getRetrieve all configured and auto-detected clients with their settingsread-onlyread-only, idempotent
clients_searchSearch for specific clients by their IDs (IP, MAC, CIDR, or client ID)read-onlyread-only, idempotent
clients_addAdd a new persistent client with per-client settingsfull—
clients_updateUpdate an existing persistent client by namefulldestructive, idempotent
clients_deleteDelete a persistent client by namefulldestructive
ToolDescriptionAccessHints
dhcp_get_statusRetrieve DHCP server configuration, static leases, and active leasesread-onlyread-only, idempotent
dhcp_get_interfacesRetrieve available network interfaces for DHCP server bindingread-onlyread-only, idempotent
dhcp_find_activeScan for competing DHCP servers on a network interfaceread-onlyread-only, idempotent
dhcp_set_configUpdate DHCP server configuration (enabled state, interface, IPv4/IPv6 settings)fulldestructive, idempotent
dhcp_add_static_leaseAdd a static DHCP lease mapping a MAC address to an IPfull—
dhcp_remove_static_leaseRemove a static DHCP leasefulldestructive
dhcp_update_static_leaseUpdate a static DHCP lease (remove + add pattern)fulldestructive, idempotent
dhcp_resetReset DHCP configuration to defaultsfulldestructive, idempotent
dhcp_reset_leasesClear all DHCP leasesfulldestructive, idempotent
ToolDescriptionAccessHints
rewrites_listRetrieve all configured DNS rewrite rulesread-onlyread-only, idempotent
rewrites_get_settingsRetrieve DNS rewrite module enabled/disabled stateread-onlyread-only, idempotent
rewrites_addAdd a new DNS rewrite rulefull—
rewrites_updateUpdate a DNS rewrite rule (remove + add pattern)fulldestructive, idempotent
rewrites_deleteDelete a DNS rewrite rulefulldestructive
rewrites_set_settingsEnable or disable the DNS rewrite modulefulldestructive, idempotent
ToolDescriptionAccessHints
tls_get_statusRetrieve TLS configuration and certificate validation statusread-onlyread-only, idempotent
tls_validateValidate TLS configuration without applying changesread-onlyread-only, idempotent
tls_set_configUpdate TLS configuration including certificates and HTTPS/DoH/DoT settingsfulldestructive, idempotent
ToolDescriptionAccessHints
blocked_services_get_allList all available services that can be blocked, organized by groupread-onlyread-only, idempotent
blocked_services_getRetrieve currently blocked services list and scheduleread-onlyread-only, idempotent
blocked_services_updateUpdate the list of blocked services and optional schedulefulldestructive, idempotent
ToolDescriptionAccessHints
access_get_listRetrieve access control lists: allowed clients, disallowed clients, and blocked hostsread-onlyread-only, idempotent
access_set_listSet access control lists for allowed clients, disallowed clients, and blocked hostsfulldestructive, idempotent
ToolDescriptionAccessHints
install_get_addressesRetrieve network interface details and ports for initial setupread-onlyread-only, idempotent
install_check_configValidate install configuration without applying (checks web/DNS binding, credentials)fullread-only, idempotent
install_apply_configApply initial setup configuration (web/DNS binding and admin credentials)fulldestructive
ToolDescriptionAccessHints
mobile_config_get_dohGenerate Apple .mobileconfig profile for DNS-over-HTTPSread-onlyread-only, idempotent
mobile_config_get_dotGenerate Apple .mobileconfig profile for DNS-over-TLSread-onlyread-only, idempotent

Verify It Works

After configuring your MCP client, ask your AI assistant:

"What's my AdGuard Home server status?"

If the connection is working, the assistant will call global_get_status and return your server version, DNS addresses, protection state, and port configuration.

Usage Examples

  • "What's the current DNS protection status?" -- calls global_get_status to show version, addresses, and protection state.
  • "Show me all DNS rewrite rules" -- calls rewrites_list to display all configured DNS rewrites.
  • "Add a DNS rewrite for local.example.com pointing to 192.168.1.100" -- calls rewrites_add to create a new rewrite rule.

Troubleshooting

Connection errors

  • Verify ADGUARD_URL is reachable from the machine running the MCP server
  • Ensure the URL includes the port if non-standard (e.g., http://192.168.1.1:3000)
  • Check that AdGuard Home is running and accessible

Authentication failures

  • Verify ADGUARD_USERNAME and ADGUARD_PASSWORD are correct
  • If AdGuard Home has authentication disabled (no users configured), leave both variables unset
  • Check that the user has admin privileges in AdGuard Home

Tools not showing up

  • Check your ADGUARD_ACCESS_TIER setting -- read-only mode only exposes read tools
  • Check ADGUARD_CATEGORIES -- only tools in listed categories are registered
  • Verify the server started without errors by checking stderr output

Development

# 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

License

MIT

How do I install AdGuard Home MCP Server?
Copy the stdio config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does AdGuard Home MCP Server need an API key?
The publisher lists these environment variables: ADGUARD_URL, ADGUARD_USERNAME, ADGUARD_PASSWORD.
What transport does AdGuard Home MCP Server use?
AdGuard Home MCP Server runs locally over stdio.
When was AdGuard Home MCP Server last checked?
Last checked 2026-10-16. Manage AdGuard Home through AI assistants

No tool list yet. Remote servers get one after the first health check.

plugmcp

Plug any tool into any agent. MCP servers for people who do not write servers. Gateway for volume, n8n for apps.

  • github.com/TODO
  • x.com/TODO
  • linkedin.com/company/TODO

PlugMCP, 2026

Product
  • Browse
  • Install
  • Host your own
  • Voice mode
  • Browser
Directory
  • All MCP servers
  • Agent skills
  • Categories
  • New
  • Voice
  • Submit a server
Developers
  • Docs
  • Blog
  • What is MCP
  • What is WebMCP
  • Status
Company
  • About
  • Contact
  • Terms
  • Privacy
  • DPA