
Browser-based GUI for Windows Server DNS — policies, zones, records, DNSSEC, DNS over HTTPS, and blocklists. Next.js frontend + PowerShell bridge, 8 scenario wizards, and an MCP server for AI agents. Works offline as a PowerShell command generator.
A browser-based GUI for Windows Server DNS — policies, zones, records, DNSSEC, DNS over HTTPS, and blocklists. Built with Next.js, TypeScript, and shadcn/ui, it connects to a live DNS server through the included PowerShell bridge for real-time management, and works offline as a PowerShell command generator. Includes 8 scenario wizards and an MCP server for AI agent integration (Claude Code, Cursor, VS Code).
netsh SSL binding, firewall rule, Set-DnsServerEncryptionProtocol, and DNS service restart).nvmrc all target. Node 20 reached
end-of-life on 2026-04-30 and Node 22 is in maintenance until 2027-04-30, so 24 is the current
Active LTS. With nvm, run nvm use in the repo root to pick it up.DnsServer PowerShell module127.0.0.1 by default — never exposed to the networkpowershell -ExecutionPolicy Bypass -File Start-DNSPolicyManager.ps1
This starts both the PowerShell bridge (port 8650) and the Next.js dev server (port 10010), then opens your browser. Frontend dependencies are installed automatically on first run.
# Terminal 1: Start the bridge
powershell -ExecutionPolicy Bypass -File server/bridge.ps1
# Terminal 2: Start the frontend
cd dns-manager
npm install # first time only
npm run dev
Then open http://localhost:10010.
If the bridge isn't running, the app falls back to command generation only — build policies visually and copy the generated PowerShell commands.
The MCP server lets AI agents query your DNS servers through 31 read-only tools via the Model Context Protocol. It connects to the same PowerShell bridge used by the web UI.
cd mcp-server
npm install
npm run build
Or use the launcher:
powershell -ExecutionPolicy Bypass -File Start-DNSPolicyManager.ps1 -MCP
claude mcp add dns-policy-manager -- node /path/to/mcp-server/dist/index.js
With environment variables for a specific server:
claude mcp add dns-policy-manager \
-e BRIDGE_URL=http://127.0.0.1:8650 \
-e DNS_DEFAULT_SERVER=dc01.contoso.com \
-e DNS_CREDENTIAL_MODE=currentUser \
-- node /path/to/mcp-server/dist/index.js
All configuration is via environment variables:
| Variable | Default | Description |
|---|---|---|
BRIDGE_URL | http://127.0.0.1:8650 | PowerShell bridge URL |
BRIDGE_TOKEN | (read from the token file) | Bridge bearer token. Only needed when the MCP server runs as a different user or machine than the bridge |
BRIDGE_TOKEN_FILE | %LOCALAPPDATA%\DNSPolicyManager\bridge.token | Where to read the token the bridge writes on start |
DNS_DEFAULT_SERVER | (none) | Default DNS server hostname |
DNS_SERVER_ID | (none) | Server ID for credential lookup |
DNS_CREDENTIAL_MODE | currentUser | Auth mode: currentUser or savedCredential |
| Category | Tools |
|---|---|
| Zones | dns_list_zones, dns_get_zone_details, dns_get_zone_records, dns_get_zone_aging, dns_get_zone_delegations |
| Policies | dns_list_policies, dns_list_transfer_policies |
| Server Config | dns_get_server_settings, dns_get_forwarders, dns_get_cache_settings, dns_get_recursion_settings, dns_get_blocklist, dns_get_diagnostics, dns_get_statistics, dns_get_rrl, dns_get_rrl_exceptions, dns_get_scavenging, dns_get_root_hints, dns_get_edns, dns_get_encryption, dns_get_global_name_zone, dns_export_server_config |
| DNS Objects | dns_list_subnets, dns_list_zone_scopes, dns_list_recursion_scopes |
| DNSSEC | dns_get_dnssec_settings, dns_get_signing_keys, dns_get_trust_anchors, dns_get_trust_points |
| Offline | dns_generate_policy_commands (works without bridge) |
| Health | dns_check_health |
The MCP server supports two credential modes:
currentUser (default) — uses Kerberos/NTLM from the logged-in user. No setup needed.savedCredential — uses DPAPI-encrypted credentials stored via the web UI. Set DNS_SERVER_ID to the server ID configured in the GUI.Session credentials (username/password) are intentionally not supported in the MCP server — AI agents should not handle raw passwords.