
Pi-hole MCP Server
by hexamaticio.github.hexamatic/pihole-mcpv0.9.0
Manage Pi-hole v6: DNS blocking, domains, clients, query analysis, DHCP, and multi-instance sync.
context tax
queued
security
queued
cold start
queued
freshness
Active29d ago
Install Pi-hole MCP server
Install in Claude Code
claude mcp add pihole-hexamatic -e PIHOLE_URL='<pihole-url>' -e PIHOLE_PASSWORD='<pihole-password>' -- docker run -i --rm -e PIHOLE_URL -e PIHOLE_PASSWORD ghcr.io/hexamatic/pihole-mcp:0.9.0Install in Cursor
{
"mcpServers": {
"pihole-hexamatic": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PIHOLE_URL",
"-e",
"PIHOLE_PASSWORD",
"ghcr.io/hexamatic/pihole-mcp:0.9.0"
],
"env": {
"PIHOLE_URL": "<pihole-url>",
"PIHOLE_PASSWORD": "<pihole-password>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"pihole-hexamatic": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PIHOLE_URL",
"-e",
"PIHOLE_PASSWORD",
"ghcr.io/hexamatic/pihole-mcp:0.9.0"
],
"env": {
"PIHOLE_URL": "<pihole-url>",
"PIHOLE_PASSWORD": "<pihole-password>"
}
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"pihole-hexamatic": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PIHOLE_URL",
"-e",
"PIHOLE_PASSWORD",
"ghcr.io/hexamatic/pihole-mcp:0.9.0"
],
"env": {
"PIHOLE_URL": "<pihole-url>",
"PIHOLE_PASSWORD": "<pihole-password>"
}
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"pihole-hexamatic": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PIHOLE_URL",
"-e",
"PIHOLE_PASSWORD",
"ghcr.io/hexamatic/pihole-mcp:0.9.0"
],
"env": {
"PIHOLE_URL": "<pihole-url>",
"PIHOLE_PASSWORD": "<pihole-password>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| PIHOLE_URL | yes | — | Base URL of your Pi-hole web interface. For multiple Pi-holes use PIHOLE_1_URL, PIHOLE_2_URL, ... instead. |
| PIHOLE_PASSWORD | yes | yes | Pi-hole admin password, or an application password (recommended — bypasses TOTP 2FA) |
| TZ | — | — | IANA timezone for rendered timestamps, e.g. Australia/Adelaide. Defaults to UTC in the container. |
| PIHOLE_READ_ONLY | — | — | Expose only inspection tools. Every tool that can change Pi-hole is hidden and rejected if called. |
| PIHOLE_TLS_SKIP_VERIFY | — | — | Set to true only for a Pi-hole serving a self-signed HTTPS certificate. A trusted certificate is the better fix. |
| PIHOLE_REQUEST_TIMEOUT | — | — | HTTP request timeout as a Go duration, e.g. 30s or 1m |
| PIHOLE_MAX_RETRIES | — | — | Retries after a transient Pi-hole API failure; 0 disables retrying |
| PIHOLE_RETRY_MAX_DELAY | — | — | Upper bound on a single exponential-backoff wait, as a Go duration |
Freshness
Active — last maintenance signal 29d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-09-11 · 29d ago · GitHub
Latest release
2026-09-11 · 29d ago · GitHub · v0.9.0
Package published
no data · npm/PyPI
Registry entry updated
2026-09-11 · 29d ago · official registry · v0.9.0
FAQ
›How do I install the Pi-hole MCP server in Claude Code?
Run: claude mcp add pihole-hexamatic -e PIHOLE_URL='<pihole-url>' -e PIHOLE_PASSWORD='<pihole-password>' -- docker run -i --rm -e PIHOLE_URL -e PIHOLE_PASSWORD ghcr.io/hexamatic/pihole-mcp:0.9.0. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Pi-hole require an API key?
Yes. It expects PIHOLE_URL, PIHOLE_PASSWORD, of which 1 is a secret.
›Can I use Pi-hole as a remote (hosted) MCP server?
No hosted endpoint is published; it runs locally over stdio.
›Is Pi-hole in the official MCP registry?
Yes, as io.github.hexamatic/pihole-mcp.