使用说明
PiHole MCP服务器
亲爱的上帝,为什么?
我们正在建设这个项目,以提高Pi孔设备的管理经验。我们相信,自然语言处理功能可以让用户更容易地与他们的Pi hole设备进行交互。我们还在构建这个项目,以了解更多关于FastAPI和检索增强生成(RAG)系统的信息。
MCP服务器概述
这 MCP服务器 设计用于使用FastAPI构建的RESTful API与Pi-hole设备交互,允许通过retrieval-AugedGeneration(RAG)系统对Pi-hole统计信息进行基于查询的管理和检索。该服务旨在通过自然语言处理功能增强Pi孔管理体验。
安装
-
克隆存储库:
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用于控制可用功能的功能标志设置。
文档
- 请参阅API文档,网址为
/docs当服务器运行以获取详细的端点使用情况时。
面向开发人员的README
我们将使用LLM扫描API端点并自动生成代码。然后,我们将应用来自最后一个已知工作版本的补丁,并解决中断问题。
我们将把之前LLM生成的代码保存在一个单独的分支中以供参考,以确保基准测试是正确的。
开发指南
- 结构:该项目使用FastAPI,并通过以下方式管理依赖关系
pyproject.toml或requirements.txt. - 日志记录:日志配置存储在
logging_config.py。确保日志清晰,不包含敏感信息。 - 测试:使用
pytest用于编写和运行测试。鼓励对Milvus和Pi hole等外部服务进行模仿。
代码贡献
-
分叉存储库:
git clone [your fork] -
设置和开发:
- 按照上面的安装指南设置您的开发环境。
- 承诺前:
- 运行测试:
pytest - 确保代码样式带有过梁(
flake8,mypy,black,isort).
- 运行测试:
-
提交拉取请求:
- 将更改推送到fork,然后对main分支打开pull请求。
错误处理
- 为常见错误自定义和实现异常处理程序,如
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版本之间的差异
-
应用“工作”中的补丁来清理混乱
-
$$$利润
-
集成测试:
- 通过运行完整的集成测试,确保新代码按预期工作。
-
文件更新:
- 记录新功能、修复或更改,更新用户和开发人员文档。
政策说明:
- 未经人工审查,切勿直接提交LLM生成的代码。
- 维护生成的代码源日志,以实现可追溯性。
- 在审查和修补LLM生成的代码时,优先考虑安全性和效率。
