porkbun-mcp
Manage DNS records, domains, DNSSEC, SSL certificates, and pricing via the Porkbun DNS API.
Click on "Deploy 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., "@porkbun-mcp list DNS records for example.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.
porkbun-mcp
MCP server for the Porkbun DNS API.
Manage DNS records, domains, DNSSEC, SSL certificates, and more via the Model Context Protocol.
Configuration
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.
Related MCP server: porkbun-mcp-server
Read-Only Mode (Default)
By default, porkbun-mcp runs in read-only mode for safety. Write operations (create, edit, delete) will return an error until explicitly enabled.
Enabling Write Operations
To let the pig get muddy and make changes:
Environment variable:
export PORKBUN_GET_MUDDY=trueCLI flag:
uvx porkbun-mcp --get-muddyUsage
Run directly with uvx (no installation required):
uvx porkbun-mcpSSE transport
uvx porkbun-mcp --transport sseMCP Client Configuration
Claude Desktop
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).
Claude Code / Codex
Add to ~/.claude/settings.json:
{
"mcpServers": {
"porkbun": {
"command": "uvx",
"args": ["porkbun-mcp", "--get-muddy"],
"env": {
"PORKBUN_API_KEY": "pk1_...",
"PORKBUN_SECRET_KEY": "sk1_..."
}
}
}
}VS Code
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_..."
}
}
}
}OpenCode
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_..."
}
}
}
}Available Tools
DNS
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 type
Domains
domains_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 domain
DNSSEC
dnssec_list- List DNSSEC records for a domaindnssec_create- Create a DNSSEC recorddnssec_delete- Delete a DNSSEC record
SSL
ssl_retrieve- Retrieve the SSL certificate bundle for a domain
Pricing
pricing_get- Get pricing for all available TLDs
Utility
ping- Test API connectivity and get your public IP
Prompts
Pre-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
Development
# 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 coverageLicense
MIT
Available Tools
25 toolsdns_createA
Create a new DNS record.
Inputs: domain (required), content (required), record_type (required), ttl, +2 more. Returns: Result of creating a DNS record.
dns_deleteBDestructive
Delete a DNS record by ID.
Inputs: domain (required), record_id (required). Returns: Result of deleting a DNS record.
dns_delete_by_name_typeADestructive
Delete DNS records by subdomain and type.
Inputs: domain (required), record_type (required), subdomain. Returns: Result of deleting a DNS record.
dns_editAIdempotent
Edit a DNS record by ID.
Inputs: domain (required), content (required), record_id (required), record_type (required), +3 more. Returns: Result of creating a DNS record.
dns_edit_by_name_typeBIdempotent
Edit all DNS records matching subdomain and type.
Inputs: domain (required), content (required), record_type (required), ttl, +3 more. Returns: Result of deleting a DNS record.
dns_getARead-only
Get a specific DNS record by ID.
Inputs: domain (required), record_id (required). Returns: A DNS record.
dns_get_by_name_typeBRead-only
Get DNS records by subdomain and type.
Inputs: domain (required), record_type (required), subdomain. Returns: result
dns_listARead-only
List all DNS records for a domain.
Inputs: domain (required). Returns: result
dnssec_createC
Create a DNSSEC record.
Inputs: digest (required), domain (required), key_tag (required), algorithm (required), +1 more. Returns: A DNSSEC record.
dnssec_deleteBDestructive
Delete a DNSSEC record.
Inputs: domain (required), key_tag (required). Returns: Result of deleting a DNS record.
dnssec_listARead-only
List DNSSEC records for a domain.
Inputs: domain (required). Returns: result
domains_add_url_forwardB
Add a URL forwarding rule.
Inputs: domain (required), location (required), wildcard, subdomain, +2 more. Returns: Result of URL forward operations.
domains_check_availabilityARead-only
Check domain availability and pricing.
WARNING: Heavily rate-limited (1 request per 10 seconds). For price comparisons, use pricing_get first (no rate limits). Only use this tool when you need to confirm a specific domain is available.
Inputs: domain (required). Returns: Domain availability check result.
domains_create_glue_recordA
Create a glue record for self-hosted nameservers.
Inputs: ips (required), domain (required), subdomain (required). Returns: Result of glue record operations.
domains_delete_glue_recordBDestructive
Delete a glue record.
Inputs: domain (required), subdomain (required). Returns: Result of glue record operations.
domains_delete_url_forwardADestructive
Delete a URL forwarding rule.
Inputs: domain (required), forward_id (required). Returns: Result of URL forward operations.
domains_get_glue_recordsARead-only
Get glue records for a domain.
Inputs: domain (required). Returns: result
domains_get_nameserversBRead-only
Get nameservers for a domain.
Inputs: domain (required). Returns: Nameservers for a domain.
domains_get_url_forwardsARead-only
Get URL forwarding rules for a domain.
Inputs: domain (required). Returns: result
domains_listARead-only
List all domains in your Porkbun account.
Inputs: no named parameters. Returns: result
domains_update_glue_recordAIdempotent
Update a glue record's IP addresses.
Inputs: ips (required), domain (required), subdomain (required). Returns: Result of glue record operations.
domains_update_nameserversBIdempotent
Update nameservers for a domain.
Inputs: domain (required), nameservers (required). Returns: Nameservers for a domain.
pingARead-only
Test API connectivity and get your public IP address.
Inputs: no named parameters. Returns: Result of the ping operation.
pricing_getARead-only
Get pricing for all available TLDs.
PREFERRED for price lookups - no rate limits, returns all TLD prices at once. Use this FIRST when users ask about domain costs, then filter by TLD. Only use domains_check_availability when you need to verify a specific domain is actually available for purchase.
Inputs: no named parameters. Returns: result
ssl_retrieveARead-only
Retrieve the SSL certificate bundle for a domain.
Only available for domains using Porkbun nameservers.
Inputs: domain (required). Returns: SSL certificate bundle.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Most tools are clearly separated by resource and action, but the pairs dns_get vs dns_get_by_name_type and dns_edit vs dns_edit_by_name_type could be confused if descriptions aren't read carefully. Overall, each tool has a distinct purpose, with only a few closely related variants.
Tool names follow a consistent resource_verb pattern, e.g., dns_list, dns_create, domains_update_nameservers. However, there are minor inconsistencies: 'add' vs 'create', 'retrieve' vs 'get', and pluralization differences like url_forwards vs url_forward, which slightly reduce strict uniformity.
With 25 tools, this is at the high end of the acceptable range. The count is justified by the broad scope (DNS, domains, DNSSEC, SSL, pricing), but it feels heavy and could be streamlined by consolidating some by-ID and by-name-type variants.
The tool set covers core DNS CRUD, domain management (nameservers, URL forwards, glue records), DNSSEC, SSL retrieval, and pricing. Minor gaps exist, such as domain purchase or transfer operations, but the tool surface is quite complete for typical domain management workflows.
Maintenance
Related MCP Connectors
Official Porkbun MCP server: domains, DNS, SSL, hosting and Cloudflare via the Porkbun API.
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server for Dynadot domain registrar API3 — manage domains, DNS, contacts, transfers & more67106 npm1MIT
- AlicenseBqualityBmaintenanceMCP server for managing Porkbun domains, DNS, and related services via Porkbun's API. Every mutation requires a reason and is audited for traceability.48MIT
- AlicenseAqualityDmaintenanceComprehensive MCP server for the Namecheap API, enabling domain management, DNS record control, nameserver settings, and domain registration from any MCP client.1032 npmMIT
- AlicenseDqualityBmaintenanceMCP server for Porkbun domains and DNS, enabling read-only and mutating operations with safety features like dry-run and write mode toggle.40135 npm3MIT