Skip to main content
Glama

pihole-mcp

License: MIT Node.js Pi-hole v6 MCP

Un servidor MCP (Model Context Protocol) que brinda a asistentes de IA como Claude control total sobre tu bloqueador de anuncios DNS Pi-hole v6: registros de consultas, listas de permitidos/bloqueados, gestión de grupos, recarga de Gravity y estadísticas. Diseñado desde el primer día para despliegues multiinstancia: gestiona una o varias instancias de Pi-hole desde un único endpoint MCP.

¿Por qué?

La API de administración de Pi-hole es potente, pero incómoda a la hora de automatizar con scripts. Este servidor MCP convierte cada acción de la API de Pi-hole en una herramienta que cualquier asistente de IA compatible con MCP puede invocar directamente. En lugar de hacer clic en la interfaz de administración o escribir comandos curl, solo pídele a tu IA que compruebe qué se está bloqueando, que añada un dominio a la lista de permitidos o que compare estadísticas entre instancias.

Perfecto para aficionados al homelab que ejecutan varios Pi-holes (primario + secundario, o por VLAN), administradores de red que gestionan el filtrado DNS a gran escala y cualquier persona que quiera una gestión DNS asistida por IA.

Related MCP server: MCP Pi-hole Server

Características

  • Soporte multiinstancia - configura de 1 a N instancias de Pi-hole mediante variables de entorno

  • Cobertura completa de la API de Pi-hole v6 - registros de consultas, listas de permitidos/bloqueados (CRUD completo), gestión de grupos, control de bloqueo, registros DNS locales (A + CNAME), recarga de Gravity y estadísticas

  • Detección inteligente de regex - enruta automáticamente los dominios a listas exactas o regex basándose en el análisis de metacaracteres

  • Detector de minas regex - encuentra entradas deny-exact que parecen corresponder a regex (reglas mal clasificadas)

  • Listo para Docker - Dockerfile multi-etapa con usuario no root, comprobaciones de salud y endurecimiento de seguridad

  • Transporte HTTP por streaming - funciona con cualquier cliente MCP que admita MCP basado en HTTP

  • Soporte de secretos de Docker - contraseñas mediante variables de entorno o archivos en /run/secrets/

Inicio rápido

Docker (recomendado)

git clone https://github.com/ranklancer/pihole-mcp.git
cd pihole-mcp
cp .env.example .env
# Edit .env with your Pi-hole URL(s) and password(s)

mkdir -p secrets
echo "your-pihole-password" > secrets/pihole_password
chmod 600 secrets/pihole_password

cp docker-compose.example.yml docker-compose.yml
docker compose up -d

Node.js

npm install
npm run build
export PIHOLE_INSTANCES=pihole
export PIHOLE_BASE_URL=http://pihole.example.com
export PIHOLE_PASSWORD=your-password
npm start

Configuración

Toda la configuración se realiza mediante variables de entorno. Consulta .env.example para la referencia completa.

Instancia única

PIHOLE_INSTANCES=pihole
PIHOLE_BASE_URL=http://192.0.2.100
PIHOLE_PASSWORD=your-password

Múltiples instancias

PIHOLE_INSTANCES=primary,secondary
PRIMARY_BASE_URL=http://192.0.2.100
PRIMARY_PASSWORD=password1
SECONDARY_BASE_URL=https://198.51.100.101
SECONDARY_PASSWORD=password2
SECONDARY_INSECURE_TLS=true

Para cada nombre de instancia en PIHOLE_INSTANCES, proporciona:

Variable

Obligatorio

Descripción

<NAME>_BASE_URL

Sí

URL base de Pi-hole (p. ej. http://pihole.local)

<NAME>_PASSWORD

Sí

Contraseña de la API de Pi-hole (o usa secretos de Docker)

<NAME>_INSECURE_TLS

No

Establece true para certificados autofirmados (por defecto: false)

Los secretos de Docker se admiten como respaldo: /run/secrets/<name>_password (en minúsculas).

Herramientas MCP disponibles

Tool

Descripción

pihole_query_log

Obtener el registro de consultas con filtros (límite, rango de tiempo, cliente, dominio, estado)

pihole_allow_domain

Añadir a la lista de permitidos (detecta automáticamente si es exacta o regex)

pihole_deny_domain

Añadir a la lista de bloqueados (detecta automáticamente si es exacta o regex)

pihole_list_allowlist

Listar todas las entradas de la lista de permitidos (exactas + regex combinadas)

pihole_list_denylist

Listar todas las entradas de la lista de bloqueados (exactas + regex combinadas)

pihole_stats_summary

Obtener un resumen de estadísticas de Pi-hole

pihole_reload_lists

Activar la recarga de Gravity

pihole_group_management

Operaciones CRUD sobre grupos de Pi-hole

pihole_check_regex_types

Detectar regex mal clasificadas en la lista deny-exact

pihole_set_blocking

Activar/desactivar el bloqueo, con temporizador opcional de reversión automática

pihole_domain_management

Actualizar o eliminar un dominio de permitidos/bloqueados (completa el CRUD)

pihole_local_dns

Listar/añadir/eliminar registros A de DNS local

pihole_local_cname

Listar/añadir/eliminar registros CNAME locales

Cada herramienta acepta un parámetro opcional instance para apuntar a una instancia específica de Pi-hole. Por defecto, se usa la primera instancia configurada.

Conectarse a tu cliente MCP

El servidor escucha en http://HOST:PORT/mcp (por defecto: http://localhost:3000/mcp).

Claude Desktop / Claude Code

Añade a tu configuración de MCP:

{
  "mcpServers": {
    "pihole": {
      "url": "http://localhost:3031/mcp"
    }
  }
}

Supergateway (envoltorio stdio)

Si tu cliente MCP solo admite transporte stdio, usa supergateway:

npx -y supergateway --streamableHttp http://localhost:3031/mcp

Comprobación de estado

curl http://localhost:3031/health
# {"ok":true,"service":"pihole-mcp","version":"0.3.0"}

Desarrollo

npm install
npm run dev     # Watch mode — recompiles on save
npm start       # Run the server

Requisitos

  • Node.js >= 20

  • Pi-hole v6 con acceso a la API habilitado

  • Conectividad de red con tus instancias de Pi-hole

Proyectos relacionados

Licencia

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A server that exposes Pi-hole functionality as tools for AI assistants, allowing them to retrieve local DNS settings and query history through natural language.
    9
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects AI assistants to Pi-hole network-wide ad blocker, enabling monitoring of DNS traffic statistics, controlling blocking settings, managing whitelist/blacklist domains, viewing query logs, and performing maintenance tasks through natural language.
    16
    90 npm
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables control of Pi-hole v6 ad blocking, allowing users to toggle DNS blocking status and retrieve real-time statistics like query counts and blocked domains. It provides a structured interface for monitoring and managing network-level ad filtering through the Pi-hole REST API.
    -