关于 PiHole MCP Server
PiHole MCP Server 通过 FastAPI 和 Pi-hole REST API 管理 Pi-hole 设备并查询统计信息,面向希望以自然语言交互的 Pi-hole 用户。项目还使用 RAG 系统处理查询,并允许通过配置开关控制可用功能。
主要功能
- 01通过 REST API 交互管理 Pi-hole
- 02查询 Pi-hole 统计信息
- 03以自然语言处理查询
- 04通过配置开关控制功能
适用场景
- 01以查询方式检索 Pi-hole 统计信息
- 02通过自然语言请求管理 Pi-hole
- 03按配置启用或限制服务功能
MCP 相关
该项目自述为 MCP 服务,通过 RESTful API 和 RAG 系统处理 Pi-hole 查询与管理请求;文档未说明面向 MCP 客户端暴露的具体工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
PiHole MCP 服务器
天啊,为什么?
我们正在构建这个项目,以改善 Pi-hole 设备的管理体验。我们相信,自然语言处理能力可以让用户更轻松地与 Pi-hole 设备交互。我们也在借此项目进一步了解 FastAPI 和检索增强生成(RAG)系统。
MCP 服务器概览
MCP 服务器旨在通过基于 FastAPI 构建的 RESTful API 与 Pi-hole 设备交互,并借助检索增强生成(RAG)系统,基于查询管理 Pi-hole 设备并获取其统计信息。此服务旨在通过自然语言处理能力改善 Pi-hole 的管理体验。
安装
-
克隆代码库:
git clone [your repository URL] cd mcp_server -
设置虚拟环境:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate` -
安装依赖项:
pip install -r requirements.txt -
配置:
- 将
config.toml.example复制为config.toml。 - 根据你的 Pi-hole 设置、API 密钥和 Milvus 数据库连接详细信息调整配置。
- 对于 API 密钥等机密信息,请使用
.env文件:
- 将
运行服务器
uvicorn main:app --host 0.0.0.0 --port 8000
API 用法
-
**查询端点:**使用 POST 请求访问
/query,并在标头中包含X-API-Key。示例:POST /query HTTP/1.1 Host: yourserver.com X-API-Key: your_api_key_here Content-Type: application/json { "query": "Block internet for 10 minutes." } -
**功能标志:**查看
config.toml中的功能标志设置,了解哪些功能可用。
文档
- 服务器运行时,请参阅
/docs中的 API 文档,了解端点的详细用法。
开发者 README
我们将使用大模型扫描 API 端点并自动生成代码。然后,我们会应用来自最近一个已知可用版本的补丁,并逐步修复问题。
我们会将大模型之前生成的代码保存在单独的分支中以供参考,确保基准测试正确。
开发指南
- **结构:**项目使用 FastAPI,并通过
pyproject.toml或requirements.txt管理依赖项。 - **日志记录:**日志配置存储在
logging_config.py中。请确保日志清晰,且不包含敏感信息。 - **测试:**使用
pytest编写和运行测试。建议对 Milvus 和 Pi-hole 等外部服务进行模拟。
代码贡献
-
派生代码库:
git clone [your fork] -
设置与开发:
- 按照上方的安装指南设置开发环境。
- 提交前:
- 运行测试:
pytest - 使用代码检查工具(
flake8、mypy、black、isort)确保代码风格一致。
- 运行测试:
-
提交拉取请求:
- 将更改推送到你的派生代码库,然后针对 main 分支发起拉取请求。
错误处理
- 针对
PiholeConnectionError或RagIntentNotFoundError等常见错误,自定义并实现异常处理程序。
文档
- 功能或依赖项发生变化时,更新
README.md。 - 及时更新
todo.md,记录开发任务。
使用 LLM 和补丁制定构建策略
概述:
- 我们使用 LLM(语言模型)生成初始代码库,或为新功能和错误修复提供解决方案,然后通过人工代码审查和应用补丁进一步完善。
流程:
-
在 containers 目录中启动 pihole
-
cd prompts/; ./run_plan.sh -
创建新分支,以便比较 gameplan.md 并找出实质性差异
-
使用 gameplan.md 为 aider.md 生成各个提示词
-
使用 aider,根据 gameplan.md 为特定功能或问题生成代码
-
对比生成的代码与之前的 LLM 版本,处理差异
-
应用来自 "Working" 的补丁来清理混乱
-
$$$$ 盈利
-
集成测试:
- 运行完整的集成测试,确保新代码按预期工作。
-
更新文档:
- 记录新功能、修复或变更,并更新用户文档和开发者文档。
策略说明:
- 绝不未经人工审查就直接提交 LLM 生成的代码。
- 记录生成代码的来源,以便追溯。
- 审查和修补 LLM 生成的代码时,优先考虑安全性和效率。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。