NestDaddy

Pi-hole MCP Server

io.github.hexamatic/pihole-mcp · v0.10.0

Manage Pi-hole v6: DNS blocking, domains, clients, query analysis, DHCP, and multi-instance sync.

Connect Runs on your machine

Terminal
claude mcp add pihole-mcp -e PIHOLE_URL=<PIHOLE_URL> -e PIHOLE_PASSWORD=<PIHOLE_PASSWORD> -e TZ=<TZ> -e PIHOLE_READ_ONLY=<PIHOLE_READ_ONLY> -e PIHOLE_TLS_SKIP_VERIFY=<PIHOLE_TLS_SKIP_VERIFY> -e PIHOLE_REQUEST_TIMEOUT=<PIHOLE_REQUEST_TIMEOUT> -e PIHOLE_MAX_RETRIES=<PIHOLE_MAX_RETRIES> -e PIHOLE_RETRY_MAX_DELAY=<PIHOLE_RETRY_MAX_DELAY> -- docker run -i --rm ghcr.io/hexamatic/pihole-mcp:0.10.0
claude_desktop_config.json
{
  "mcpServers": {
    "pihole-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/hexamatic/pihole-mcp:0.10.0"
      ],
      "env": {
        "PIHOLE_URL": "<PIHOLE_URL>",
        "PIHOLE_PASSWORD": "<PIHOLE_PASSWORD>",
        "TZ": "<TZ>",
        "PIHOLE_READ_ONLY": "<PIHOLE_READ_ONLY>",
        "PIHOLE_TLS_SKIP_VERIFY": "<PIHOLE_TLS_SKIP_VERIFY>",
        "PIHOLE_REQUEST_TIMEOUT": "<PIHOLE_REQUEST_TIMEOUT>",
        "PIHOLE_MAX_RETRIES": "<PIHOLE_MAX_RETRIES>",
        "PIHOLE_RETRY_MAX_DELAY": "<PIHOLE_RETRY_MAX_DELAY>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "pihole-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/hexamatic/pihole-mcp:0.10.0"
      ],
      "env": {
        "PIHOLE_URL": "<PIHOLE_URL>",
        "PIHOLE_PASSWORD": "<PIHOLE_PASSWORD>",
        "TZ": "<TZ>",
        "PIHOLE_READ_ONLY": "<PIHOLE_READ_ONLY>",
        "PIHOLE_TLS_SKIP_VERIFY": "<PIHOLE_TLS_SKIP_VERIFY>",
        "PIHOLE_REQUEST_TIMEOUT": "<PIHOLE_REQUEST_TIMEOUT>",
        "PIHOLE_MAX_RETRIES": "<PIHOLE_MAX_RETRIES>",
        "PIHOLE_RETRY_MAX_DELAY": "<PIHOLE_RETRY_MAX_DELAY>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "pihole-mcp": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/hexamatic/pihole-mcp:0.10.0"
      ],
      "env": {
        "PIHOLE_URL": "<PIHOLE_URL>",
        "PIHOLE_PASSWORD": "<PIHOLE_PASSWORD>",
        "TZ": "<TZ>",
        "PIHOLE_READ_ONLY": "<PIHOLE_READ_ONLY>",
        "PIHOLE_TLS_SKIP_VERIFY": "<PIHOLE_TLS_SKIP_VERIFY>",
        "PIHOLE_REQUEST_TIMEOUT": "<PIHOLE_REQUEST_TIMEOUT>",
        "PIHOLE_MAX_RETRIES": "<PIHOLE_MAX_RETRIES>",
        "PIHOLE_RETRY_MAX_DELAY": "<PIHOLE_RETRY_MAX_DELAY>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
PIHOLE_URL
Required
Base URL of your Pi-hole web interface. For multiple Pi-holes use PIHOLE_1_URL, PIHOLE_2_URL, ... instead.
PIHOLE_PASSWORD
Required, secret
Pi-hole admin password, or an application password (recommended — bypasses TOTP 2FA)
TZ
Optional
IANA timezone for rendered timestamps, e.g. Australia/Adelaide. Defaults to UTC in the container.
PIHOLE_READ_ONLY
Optional
Expose only inspection tools. Every tool that can change Pi-hole is hidden and rejected if called.
PIHOLE_TLS_SKIP_VERIFY
Optional
Set to true only for a Pi-hole serving a self-signed HTTPS certificate. A trusted certificate is the better fix.
PIHOLE_REQUEST_TIMEOUT
Optional
HTTP request timeout as a Go duration, e.g. 30s or 1m
PIHOLE_MAX_RETRIES
Optional
Retries after a transient Pi-hole API failure; 0 disables retrying
PIHOLE_RETRY_MAX_DELAY
Optional
Upper bound on a single exponential-backoff wait, as a Go duration

Details

Packageghcr.io/hexamatic/pihole-mcp:0.10.0 (OCI, stdio)
First published2 Nov 2026
Last updated2 Nov 2026
Registry nameio.github.hexamatic/pihole-mcp

More other servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.