内容
# pdns-mcp-server
MCP服务器,用于通过PowerDNS-Admin API管理PowerDNS的DNS记录。
## 架构
```
src/pdns_mcp_server/
config.py — PdnsConfig: 从环境变量中读取配置
client.py — PdnsClient: PowerDNS-Admin API的异步HTTP客户端
tools.py — create_app(): 注册MCP工具
main.py — 入口点,启动streamable-http服务器
tests/
test_config.py — 配置测试
test_client.py — API客户端测试(使用respx模拟)
test_tools.py — MCP工具测试
test_main.py — 入口点测试
```
## 配置
| 变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|
| `PDNS_ADMIN_URL` | 是 | — | PowerDNS-Admin的URL(例如 `http://pda.example.com:9191`) |
| `PDNS_API_KEY` | 是 | — | 用于X-API-Key认证的API密钥 |
| `PDNS_SERVER_ID` | 否 | `localhost` | PowerDNS服务器ID |
| `PDNS_PORT` | 否 | `8000` | MCP服务器端口 |
## MCP工具
| 工具 | 描述 |
|---|---|
| `list_zones` | 列出所有DNS区域 |
| `get_zone` | 获取区域的详细信息和记录 |
| `create_record` | 在区域中创建或替换RR集 |
| `update_record` | 更新记录的内容 |
| `delete_record` | 删除RR集 |
详细的参数和示例请参见 [docs/usage.md](docs/usage.md)。
## 启动
```bash
export PDNS_ADMIN_URL=http://pda.example.com:9191
export PDNS_API_KEY=your-api-key-here
uv run pdns-mcp-server
```
服务器将在 `http://0.0.0.0:8000` 上可用(使用streamable-http传输)。
### Docker
```bash
export PDNS_ADMIN_URL=http://pda.example.com:9191
export PDNS_API_KEY=your-api-key-here
docker compose up
```
## 测试
```bash
uv run pytest -v
```
所有测试都使用 `respx` 来模拟HTTP调用,因此不需要实际的PowerDNS。