Skip to main content
Glama
Avicennasis

porkbun-mcp-server

by Avicennasis

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORKBUN_API_KEYYesYour Porkbun API key (pk1_...)
PORKBUN_SECRET_KEYYesYour Porkbun secret key (sk1_...)
PORKBUN_MCP_AUDIT_ENABLEDNoSet 'false' to disable audit loggingtrue
PORKBUN_MCP_AUDIT_HANDLERNoAudit handler (jsonl, absolute path, or 'none' to disable)jsonl
PORKBUN_PRICING_CACHE_TTLNoPricing cache TTL in seconds (default: 86400, '0' = no cache)86400

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
pingA

Authenticated ping against Porkbun. Returns {"status", "yourIp"}. Useful as a readiness probe — confirms credentials work and your public IP is on Porkbun's allowlist (if you've enabled IP restriction).

get_pricingA

Public TLD pricing table from Porkbun. Served from a disk cache (~/.cache/porkbun-mcp/pricing.json, XDG-aware) with a 24h TTL (override via PORKBUN_PRICING_CACHE_TTL, seconds). force_refresh=True bypasses the cache and refetches live.

get_account_balanceA

Current Porkbun account credit balance.

check_availabilityA

Check whether domain (e.g. 'example.com') is available for registration.

check_bulk_availabilityA

Check availability for multiple domains. Client-side fan-out — one API call per domain. Per-domain errors surface in the results map without aborting the batch.

get_pricing_for_tldA

Pricing for a single TLD (e.g. 'com'). Derived from the same cached pricing table as get_pricing — no separate API call. force_refresh=True bypasses the cache.

list_supported_tldsA

All TLDs Porkbun supports for registration. Sorted alphabetically. Derived from the same cached pricing table as get_pricing. force_refresh=True bypasses the cache.

get_api_settingsA

Get the account's API spend control settings and current month's spend total. All amounts are in cents.

get_ipA

Get the caller's public IP address. No authentication required (though our client always sends credentials, which is harmless). Similar to ping but without credential verification.

create_inviteA

Create a one-time account registration invite. The invite expires in 48 hours. email pre-fills the registration form. return_url redirects the user after registration.

get_invite_statusC

Check the status of a registration invite. Returns PENDING, ACCEPTED (with newAccountId), or EXPIRED.

set_email_passwordB

Set the password for an email hosting account. email_address is the full address (e.g. user@example.com).

request_api_keyA

Initiate an API key authorization request. Returns a requestToken and authUrl for the account holder to approve. name is an optional human-readable label for the application.

retrieve_api_keyB

Poll to check whether an API key authorization request has been approved. Returns PENDING while awaiting approval, or the public API key on approval.

get_marketplaceA

Browse domains listed for sale on the Porkbun marketplace. Supports pagination (start/limit), search (query), TLD filtering, SLD length filtering, and sorting.

list_domainsA

List all domains in the Porkbun account. start is a 0-indexed offset for pagination (Porkbun returns 1000 per page).

get_url_forwardingC

List URL-forwarding rules for domain.

get_domainA

Get detailed info for a single domain — expiry date, status, auto-renew setting, creation date, lock state, etc.

get_glueA

List glue records (host A/AAAA records at the registrar) for domain. Returns an empty list if no glue records exist.

list_labelsA

List all domain labels (Porkbun's tagging system).

register_domainA

Register a new domain using account credit. cost is in pennies (USD cents) and must exactly match the price from check_availability. agree_to_terms must be 'yes' or '1'. This is a financial operation — verify cost before calling. action=REGISTER.

renew_domainA

Renew a domain using account credit. cost is in pennies (USD cents) and must exactly match the renewal price. Use check_availability with the domain to get the current price before renewing. This is a financial operation. action=RENEW.

transfer_domainA

Initiate an inbound domain transfer. auth_code is the EPP authorization code from the current registrar. cost is in pennies and must match the transfer price. Transfers take 5–7 days. This is a financial operation. action=TRANSFER.

get_transfer_statusC

Get the most recent transfer record for domain.

list_transfersA

List all active inbound domain transfers (excludes completed and canceled transfers).

update_auto_renewA

Toggle auto-renewal for domain. auto_renew=True enables, False disables. reason is required; audit row action=AUTO_RENEW.

create_glueA

Create a glue record (host A/AAAA records served by the registrar). Required for custom nameservers like ns1.example.com that point at IPs you control. reason is required; audit row action=GLUE_CREATE.

update_glueC

Replace the IPs on an existing glue record. action=GLUE_UPDATE.

delete_glueC

Remove a glue record by host name. action=GLUE_DELETE.

add_url_forwardB

Add a URL forward. type is 'permanent' (301) or 'temporary' (302). include_path and wildcard are 'yes' / 'no' Porkbun flags. subdomain="" forwards the apex. action=URLFWD_ADD.

delete_url_forwardA

Remove a URL forward by record id (from get_url_forwarding). action=URLFWD_DELETE.

add_labelA

Create a Porkbun label and attach it to domain. color is a Porkbun-defined color name (orange, red, blue, ...). Returns {"status": "SUCCESS", "id": <int>}. action=LABEL_ADD.

remove_labelC

Detach a label from domain by label id. action=LABEL_DELETE.

get_name_serversC

Get the active nameservers for domain.

update_name_serversA

Replace domain's nameservers. ns is the new list of NS hostnames (typically 2-4). reason is required and tags the audit row (action='NS', new list goes in the payload column).

list_dns_recordsA

List ALL DNS records for domain from Porkbun's nameservers. Note: if the domain's NS is set to a non-Porkbun host, these records are not what resolvers see — they're what Porkbun has on file.

get_dns_recordB

Fetch a single DNS record by Porkbun's record id.

get_dns_records_by_name_typeA

Filter DNS records by type ('A','TXT','MX',...) and subdomain (empty string for apex). Useful for checking whether a specific record exists without scanning the full zone.

create_dns_recordC

Create a DNS record on domain. name is the subdomain ("" for apex). reason is required and goes into the audit row. Returns {"status": "SUCCESS", "id": <int>} on success.

edit_dns_recordA

Edit an existing DNS record by Porkbun's record id. Porkbun's edit is a full replace — pass every field. reason is required.

edit_dns_records_by_name_typeB

Bulk-edit every record matching (type, subdomain) on domain. subdomain="" → apex. reason`` is required.

delete_dns_recordC

Delete a DNS record by Porkbun's record id. reason is required.

delete_dns_records_by_name_typeA

Bulk-delete every record matching (type, subdomain) on domain. subdomain="" → apex. reason`` is required.

bulk_create_dns_recordsA

Create multiple DNS records on domain. Porkbun has no native bulk endpoint — this fans out one create per record with continue-and-report semantics: failures collect in failed, successes in created. Each entry needs type / name / content; ttl / prio / notes are optional. reason is required and tags every per-record audit row.

get_dnssec_recordsA

List the DS records Porkbun publishes for domain. Empty if DNSSEC is not enabled for the zone.

create_dnssec_recordA

Publish a DNSSEC DS record at the registrar. Required: key_tag, alg, digest_type, digest. Optional key_data_* fields apply only when you're also publishing the DNSKEY-derived form. reason is required and tags the audit row as action=DNSSEC_ADD.

delete_dnssec_recordA

Remove a DNSSEC DS record by key tag. reason is required; audit row action=DNSSEC_DELETE.

get_ssl_bundleA

Retrieve Porkbun's free DV SSL certificate bundle for domain. Returns certificate chain, public key, and private key as PEM strings. The cert is auto-issued by Porkbun for zones using their nameservers.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/Avicennasis/porkbun-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server