# Pi-hole MCP Server

Даёт ИИ-ассистенту доступ к Pi-hole v6: блокировки DNS, домены, клиенты, статистика запросов, DHCP и синхронизация нескольких инстансов.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 8
- Автор: hexamatic
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/hexamatic/pihole-mcp
- Обновлён: 2026-10-19
- HTML: https://affpapa.org/nevibecode/mcp/pi-hole-mcp-server

## Что делает

Сервер собран как один бинарник на Go и работает через REST API Pi-hole v6. Внутри 82 инструмента (84, если настроен второй Pi-hole), 9 промптов и 5 ресурсов: домены, списки, группы, клиенты, DHCP, сеть, журнал запросов, локальные DNS-записи, бэкап и восстановление через teleporter, управление сессиями. Ассистент вызывает их по обычной просьбе, а не по именам функций.

Есть режим только для чтения: `PIHOLE_READ_ONLY=true` оставляет инструменты, которые ничего не меняют, и проверка идёт на каждом вызове. Переменная `PIHOLE_TOOLSETS` сужает набор до нужных семейств, чтобы клиент не тянул лишнее. Для двух Pi-hole доступны сравнение конфигураций и перенос изменений: сначала план без записи, потом подтверждение по токену.

Перед подключением к клиенту прогоните `pihole-mcp -check` — сервер проверит конфиг и опросит каждый Pi-hole по имени. Без этого неверный URL или пароль выглядит так же, как сервер, который вообще не стартовал: большинство клиентов прячут его вывод. Обязательны `PIHOLE_URL` и `PIHOLE_PASSWORD`; в примерах ниже запуск идёт через Docker-образ `ghcr.io/hexamatic/pihole-mcp:0.9.0`.

## Требования
- Нужно: Docker
- Переменные окружения: `PIHOLE_URL`, `PIHOLE_PASSWORD`, `TZ`, `PIHOLE_READ_ONLY`, `PIHOLE_TLS_SKIP_VERIFY`, `PIHOLE_REQUEST_TIMEOUT`, `PIHOLE_MAX_RETRIES`, `PIHOLE_RETRY_MAX_DELAY` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env PIHOLE_URL=<PIHOLE_URL> --env PIHOLE_PASSWORD=<PIHOLE_PASSWORD> --env TZ=<TZ> --env PIHOLE_READ_ONLY=<PIHOLE_READ_ONLY> --env PIHOLE_TLS_SKIP_VERIFY=<PIHOLE_TLS_SKIP_VERIFY> --transport stdio pi-hole-mcp-server -- docker run -i --rm -e PIHOLE_URL -e PIHOLE_PASSWORD -e TZ -e PIHOLE_READ_ONLY -e PIHOLE_TLS_SKIP_VERIFY ghcr.io/hexamatic/pihole-mcp:0.9.0
```
Вместо <…> подставьте свои значения. Ещё 3 переменные окружения — в README сервера

### Codex

**Командой платформы**
```bash
codex mcp add pi-hole-mcp-server --env PIHOLE_URL=<PIHOLE_URL> --env PIHOLE_PASSWORD=<PIHOLE_PASSWORD> --env TZ=<TZ> --env PIHOLE_READ_ONLY=<PIHOLE_READ_ONLY> --env PIHOLE_TLS_SKIP_VERIFY=<PIHOLE_TLS_SKIP_VERIFY> -- docker run -i --rm -e PIHOLE_URL -e PIHOLE_PASSWORD -e TZ -e PIHOLE_READ_ONLY -e PIHOLE_TLS_SKIP_VERIFY ghcr.io/hexamatic/pihole-mcp:0.9.0
```
Вместо <…> подставьте свои значения. Ещё 3 переменные окружения — в README сервера

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "pi-hole-mcp-server": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "PIHOLE_URL",
                "-e",
                "PIHOLE_PASSWORD",
                "-e",
                "TZ",
                "-e",
                "PIHOLE_READ_ONLY",
                "-e",
                "PIHOLE_TLS_SKIP_VERIFY",
                "ghcr.io/hexamatic/pihole-mcp:0.9.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>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 3 переменные окружения — в README сервера

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "pi-hole-mcp-server": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "PIHOLE_URL",
                "-e",
                "PIHOLE_PASSWORD",
                "-e",
                "TZ",
                "-e",
                "PIHOLE_READ_ONLY",
                "-e",
                "PIHOLE_TLS_SKIP_VERIFY",
                "ghcr.io/hexamatic/pihole-mcp:0.9.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>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 3 переменные окружения — в README сервера

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -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> pi-hole-mcp-server docker run -i --rm -e PIHOLE_URL -e PIHOLE_PASSWORD -e TZ -e PIHOLE_READ_ONLY -e PIHOLE_TLS_SKIP_VERIFY ghcr.io/hexamatic/pihole-mcp:0.9.0
```
Вместо <…> подставьте свои значения. Ещё 3 переменные окружения — в README сервера

## Когда брать
- посмотреть, включена ли блокировка DNS и сколько ей осталось
- поставить блокировку на паузу, чтобы протестировать сайт
- выяснить, в какой список попал заблокированный домен
- добавить локальную DNS-запись для домашнего сервера
- сравнить два Pi-hole и перенести различия

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
