DNS MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DNS MCP Serverlook up MX records for gmail.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DNS MCP Server
A comprehensive DNS query server built with FastMCP that provides tools to query all types of DNS records and gather complete domain information.
Features
DNS Record Query Tools
A Records - Query IPv4 addresses
AAAA Records - Query IPv6 addresses
MX Records - Query mail exchange servers with priorities
TXT Records - Query text records (SPF, DKIM, DMARC, verification)
NS Records - Query authoritative nameservers
CNAME Records - Query canonical name aliases
SOA Records - Query Start of Authority information
PTR Records - Reverse DNS lookups
SRV Records - Query service location records
CAA Records - Query Certificate Authority Authorization
DS/DNSKEY Records - Check DNSSEC configuration
Advanced Tools
Query All Records - Get all DNS records for a domain in one call
DNSSEC Check - Verify DNSSEC configuration
WHOIS-style Lookup - Comprehensive domain information via DNS
Domain Availability Check - Check if domain has DNS configured
DNS Delegation Trace - Trace delegation chain from root to authoritative nameservers
Installation
Local Development
Install dependencies:
pip install -r requirements.txtRun the server locally:
python dns_server.pyThe server will start on http://localhost:8000 by default.
Deploy to FastMCP Cloud
Install FastMCP CLI if you haven't already:
pip install fastmcpLogin to FastMCP Cloud:
fastmcp loginDeploy the server:
fastmcp deploy dns_server.pyThe CLI will provide you with a public URL where your MCP server is accessible.
Usage Examples
Using with MCP Client
import asyncio
from fastmcp import Client
# Replace with your deployed URL
client = Client("https://your-server.fastmcp.app/mcp")
async def main():
async with client:
# Query A records
result = await client.call_tool("query_a_record", {"domain": "google.com"})
print(result)
# Query all records
result = await client.call_tool("query_all_records", {"domain": "example.com"})
print(result)
# Reverse DNS lookup
result = await client.call_tool("query_ptr_record", {"ip_address": "8.8.8.8"})
print(result)
# Check DNSSEC
result = await client.call_tool("check_dnssec", {"domain": "cloudflare.com"})
print(result)
asyncio.run(main())Available Tools
Basic DNS Queries
query_a_record(domain: str)- Get IPv4 addressesquery_aaaa_record(domain: str)- Get IPv6 addressesquery_mx_record(domain: str)- Get mail serversquery_txt_record(domain: str)- Get TXT recordsquery_ns_record(domain: str)- Get nameserversquery_cname_record(domain: str)- Get CNAME aliasquery_soa_record(domain: str)- Get SOA informationquery_caa_record(domain: str)- Get CAA records
Advanced Queries
query_ptr_record(ip_address: str)- Reverse DNS lookupquery_srv_record(service: str, protocol: str, domain: str)- Service locationquery_all_records(domain: str)- Get all DNS records at oncecheck_dnssec(domain: str)- Check DNSSEC statuswhois_lookup(domain: str)- Comprehensive domain infocheck_domain_availability(domain: str)- Check if domain is configuredtrace_dns_delegation(domain: str)- Trace delegation chain
DNS Resolver Configuration
The server uses the following public DNS resolvers:
Google DNS: 8.8.8.8, 8.8.4.4
Cloudflare DNS: 1.1.1.1
Timeout: 5 seconds Lifetime: 10 seconds
Response Format
All tools return structured JSON responses with:
success: Boolean indicating if query succeededdomain/ip_address: The queried domain or IPrecord_type: Type of DNS recordrecords: Array of record data with TTL informationnameserver: The nameserver that provided the responseerror: Error message if query failed
Example Response
{
"domain": "example.com",
"record_type": "A",
"records": [
{
"data": "93.184.216.34",
"ttl": 86400,
"type": "A"
}
],
"nameserver": "8.8.8.8",
"success": true
}Use Cases
Domain Investigation - Research domain DNS configuration
Email Configuration - Check MX and SPF/DKIM/DMARC records
Security Analysis - Verify DNSSEC, CAA records
Network Troubleshooting - Reverse lookups, delegation tracing
Domain Monitoring - Track DNS changes and availability
Migration Planning - Document current DNS setup
Error Handling
The server gracefully handles DNS query failures and returns structured error responses:
{
"domain": "nonexistent.example",
"record_type": "A",
"error": "The DNS query name does not exist: nonexistent.example.",
"success": false
}License
MIT License
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stanibaj/dns-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server