Manage DNS records, domains, DNSSEC, SSL certificates via MCP
Runs on your machine from its package; the steps are below.
At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx porkbun-mcp
MCP client config
{
"mcpServers": {
"porkbun-dns": {
"command": "uvx",
"args": [
"porkbun-mcp"
]
}
}
}MCP server for the Porkbun DNS API.
Manage DNS records, domains, DNSSEC, SSL certificates, and more via the Model Context Protocol.
Set your Porkbun API credentials as environment variables:
export PORKBUN_API_KEY="pk1_..."
export PORKBUN_SECRET_KEY="sk1_..."
Get your API keys from the Porkbun API Access page.
By default, porkbun-mcp runs in read-only mode for safety. Write operations (create, edit, delete) will return an error until explicitly enabled.
To let the pig get muddy and make changes:
Environment variable:
export PORKBUN_GET_MUDDY=true
CLI flag:
uvx porkbun-mcp --get-muddy
Run directly with uvx (no installation required):
uvx porkbun-mcp
uvx porkbun-mcp --transport sse
Add to ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"porkbun": {
"command": "uvx",
"args": ["porkbun-mcp", "--get-muddy"],
"env": {
"PORKBUN_API_KEY": "pk1_...",
"PORKBUN_SECRET_KEY": "sk1_..."
}
}
}
}
Note: Remove
--get-muddyfrom args for read-only mode (recommended for safety).
Add to ~/.claude/settings.json:
{
"mcpServers": {
"porkbun": {
"command": "uvx",
"args": ["porkbun-mcp", "--get-muddy"],
"env": {
"PORKBUN_API_KEY": "pk1_...",
"PORKBUN_SECRET_KEY": "sk1_..."
}
}
}
}
Add to .vscode/mcp.json in your workspace (or use MCP: Add Server command):
{
"servers": {
"porkbun": {
"command": "uvx",
"args": ["porkbun-mcp", "--get-muddy"],
"env": {
"PORKBUN_API_KEY": "pk1_...",
"PORKBUN_SECRET_KEY": "sk1_..."
}
}
}
}
Add to your opencode.json configuration:
{
"mcp": {
"porkbun": {
"type": "local",
"command": ["uvx", "porkbun-mcp", "--get-muddy"],
"environment": {
"PORKBUN_API_KEY": "pk1_...",
"PORKBUN_SECRET_KEY": "sk1_..."
}
}
}
}
dns_list - List all DNS records for a domaindns_get - Get a specific DNS record by IDdns_get_by_name_type - Get DNS records by subdomain and typedns_create - Create a new DNS recorddns_edit - Edit a DNS record by IDdns_edit_by_name_type - Edit DNS records by subdomain and typedns_delete - Delete a DNS record by IDdns_delete_by_name_type - Delete DNS records by subdomain and typedomains_list - List all domains in your accountdomains_get_nameservers - Get nameservers for a domaindomains_update_nameservers - Update nameservers for a domaindomains_get_url_forwards - Get URL forwarding rulesdomains_add_url_forward - Add a URL forwarding ruledomains_delete_url_forward - Delete a URL forwarding ruledomains_check_availability - Check domain availability and pricingdomains_get_glue_records - Get glue records for a domaindnssec_list - List DNSSEC records for a domaindnssec_create - Create a DNSSEC recorddnssec_delete - Delete a DNSSEC recordssl_retrieve - Retrieve the SSL certificate bundle for a domainpricing_get - Get pricing for all available TLDsping - Test API connectivity and get your public IPPre-defined workflows to guide common DNS operations:
dns_setup - Set up basic DNS for a new server (root A + www records)dns_audit - Audit DNS configuration for issues (duplicates, missing email records, low TTLs)email_dns_setup - Configure email DNS (MX, SPF, DKIM, DMARC)update_server_ip - Update DNS records when migrating to a new server IPsubdomain_setup - Create A/CNAME records for a new subdomain# Install dependencies
uv sync --dev
# Run all checks
make check
# Individual commands
make lint # ruff check
make format # ruff format
make typecheck # ty check
make test # pytest with coverage
MIT