Pi-hole MCP Server

by sbarbett
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Exposes Pi-hole functionality through tools for listing local DNS settings and retrieving recent DNS query history from a Pi-hole instance.

pihole-mcp-服务器

Pi-hole 的模型上下文协议 (MCP) 服务器。该服务器将 Pi-hole 的功能公开为可供 AI 助手使用的工具。

特征

  • ListLocalDNS :从 Pi-hole 返回所有本地 DNS 设置
  • ListQueries :返回 Pi-hole 最近的 DNS 查询历史记录
  • 多 Pi-hole 支持:从单个 MCP 服务器管理最多 4 个 Pi-hole
  • ...更多内容即将推出...

依赖项

Docker

uv (可选,用于开发)

如果要在本地运行应用程序,请使用uv 。使用您选择的包管理器进行安装。

环境

使用您的 Pi-hole 凭据在项目根目录中创建一个.env文件:

# Primary Pi-hole (required) PIHOLE_URL=https://your-pihole.local/ PIHOLE_PASSWORD=your-admin-password #PIHOLE_NAME=Primary # optional, defaults to URL if unset # Secondary Pi-hole (optional) #PIHOLE2_URL=https://secondary-pihole.local/ #PIHOLE2_PASSWORD=password2 #PIHOLE2_NAME=Secondary # optional # Up to 4 Pi-holes: #PIHOLE3_URL=... #PIHOLE3_PASSWORD=... #PIHOLE3_NAME=... #PIHOLE4_URL=... #PIHOLE4_PASSWORD=... #PIHOLE4_NAME=...

Docker 部署

在 Docker 中运行 Pi-hole MCP 服务器。

使用 Docker Compose

  1. 拉取并启动容器:
    docker-compose up -d
  2. 该服务器将通过http://localhost:8383访问

手动 Docker 构建

或者,您可以手动构建并运行 Docker 容器:

docker build -t pihole-mcp . docker run -p 8383:8000 --env-file .env -d pihole-mcp

本地运行

Docker 部署使用 SSE 模式在主机和容器之间进行双向通信。理论上,你可以将 STDIO 模式与 Docker exec 结合使用。但如果要在本地运行,只需使用uv即可。这对于使用内置mcp dev 实用程序快速检查工具和资源特别有用。例如:

uv run mcp dev main.py

然后在您的网络浏览器中导航至http://localhost:6274

API

该 MCP 服务器公开以下资源和工具:

资源

  • piholes:// :返回有关所有已配置的 Pi-holes 的信息

工具

  • list_local_dns :列出 Pi-hole 的所有本地 DNS 设置
  • list_queries :从 Pi-hole 获取最近的 DNS 查询历史记录

每个工具调用都会以字典列表的形式返回具有以下结构的搜索结果:

[ { "pihole": "Pi-hole Name", "data": [...] # Result data from this Pi-hole }, ... ]

goose测试

Goose 是一款 CLI LLM 客户端,适用于测试和开发。请按照此处的安装说明进行操作。

下面假设您已经使用goose configure完成了初始设置。

配置扩展

  1. 输入goose configure打开配置菜单。
  2. 选择**“添加扩展”**
  3. 选择远程分机
  4. 它会要求输入一个名称。随便你叫什么。我把它命名为pihole-mcp
  5. 当它询问*“SSE 端点 URI 是什么?”*时,输入http://localhost:8383/sse
  6. 输入超时。
  7. 如果您愿意,可以添加描述。
  8. 当询问环境变量时,选择**“否”**

开始会话

服务器安装完成后,开始聊天会话。

goose session

尝试询问它: “我的本地 DNS 记录是什么?”

...或者告诉它: “显示我最近的 DNS 查询。”

克劳德桌面

Claude 的桌面客户端目前仅支持 STDIO 协议,但是您可以使用代理与 SSE 端点通信。

将以下内容添加到您的claude_desktop_config.json文件中。

{ "mcpServers": { "pihole": { "command": "npx", "args": [ "mcp-remote", "http://localhost:8383/sse" ] } } }

如果您要连接到本地网络上的其他主机并使用不安全的连接,则需要使用--allow-http参数明确允许该连接。例如:

{ "mcpServers": { "pihole": { "command": "npx", "args": [ "mcp-remote", "http://192.168.1.255:8383/sse", "--allow-http" ] } } }

之后,完全重新启动应用程序并尝试一下。

执照

麻省理工学院

-
security - not tested
A
license - permissive license
-
quality - not tested

将 Pi-hole 功能公开为 AI 助手工具的服务器,允许他们通过自然语言检索本地 DNS 设置和查询历史记录。

  1. Features
    1. Dependencies
      1. Docker
      2. uv (Optional, for Development)
    2. Environment
      1. Docker Deployment
        1. Using Docker Compose
        2. Manual Docker Build
      2. Run Locally
        1. API
          1. Resources
          2. Tools
        2. Testing in goose
          1. Configure Extension
          2. Start a Session
        3. Claude Desktop
          1. License
            ID: w63srjkegx