# Porkbun MCP server

> Register and manage Porkbun domains, DNS records, SSL certificates, URL forwards and static or WordPress hosting.

- Listing: https://mcp.tc/i/porkbun
- Connect: use the server's own URL `https://mcp.porkbun.com/mcp` (OAuth sign-in at the server); clients connect to it directly. The listing link is a page, not an MCP endpoint.
- Type: remote (Streamable HTTP)
- Auth: OAuth sign-in
- Category: [Cloud & DevOps](https://mcp.tc/c/cloud-devops)
- Vendor: Porkbun
- Homepage: <https://porkbun.com/mcp>
- Docs: <https://porkbun.com/api/json/v3/documentation>
- Repository: <https://github.com/oborseth/Porkbun-MCP>
- Package: npm `@porkbunllc/mcp-server`

## About

Connects to the Porkbun v3 API. You can check domain availability and pricing, register, renew and transfer domains, edit DNS and DNSSEC records, fetch free SSL bundles, set nameservers and contacts, and provision and deploy static hosting or Cloud for WordPress. It also covers billing tools such as balance, invoices and account top-ups, plus API documentation search.

Runs as a hosted endpoint at https://mcp.porkbun.com/mcp with Porkbun sign-in through OAuth, so no API key is needed. A local alternative runs with npx -y @porkbunllc/mcp-server using PORKBUN\_API\_KEY and PORKBUN\_SECRET\_API\_KEY. Documentation tools work without keys, and a free sandbox key is available for testing. Several tools spend account credit.

## What it can do

- Check domain availability and pricing, singly or up to 25 at once
- Register, renew and transfer domains
- Create, update, delete and restore DNS records
- Manage DNSSEC, glue records and URL forwarding
- Retrieve free SSL certificate bundles
- Deploy static sites and provision WordPress hosting
- View balance, invoices and top up account credit
- Search Porkbun API docs and test in a sandbox

## Tools (107)

- `ping`: Verify the Porkbun API connection and credentials.
- `check_domain`: Check if one domain is available and its price.
- `check_domains`: Check up to 25 domains for availability and price in one call.
- `get_registration_requirements`: Get a TLD's registration requirements as JSON Schema.
- `get_pricing`: Get current pricing for all supported TLDs.
- `list_marketplace`: Browse aftermarket domains for sale.
- `search_closeouts`: Search expired-domain closeouts with filters.
- `get_closeout`: Get one closeout and its binding total price.
- `buy_closeout`: Buy a closeout outright using account credit.
- `list_domains`: List domains in the account.
- `get_domain`: Get metadata for one domain in the account.
- `get_balance`: Get the available account credit balance.
- `get_auto_topup`: Read auto top-up configuration.
- `top_up_with_usdc`: Add credit by paying USDC on Base via Coinbase checkout.
- `top_up_with_card_mpp`: Get a link to add credit with the user's card over MPP.
- `send_phone_verification_code`: Text a verification code to the phone number on the account, to clear VERIFICATION\_REQUIRED.
- `confirm_phone_verification`: Verify the account's phone number with the code the user received.
- `get_usdc_topup_status`: Check whether a USDC top-up has been paid and credited, with the current balance.
- `list_invoices`: List the account's invoices, newest first.
- `get_invoice`: Get one invoice with billing, payment and line details.
- `get_invoice_pdf`: Get an invoice PDF with a 15-minute download link.
- `configure_auto_topup`: Turn auto top-up on or off and set threshold and amount.
- `top_up_account_credit`: Charge the saved payment method now to add credit.
- `get_api_settings`: Get API spend limits, alerts and current month spend.
- `get_nameservers`: Get the nameservers configured for a domain.
- `list_dns_records`: List all DNS records for a domain.
- `scan_dns_records`: Discover a domain's published DNS records from its live nameservers.
- `import_dns_records`: Bulk-create DNS records from a list or a live scan.
- `list_dnssec_records`: List DNSSEC DS records submitted to the registry.
- `list_url_forwards`: List URL forwarding rules for a domain.
- `list_glue_records`: List glue records for a domain.
- `list_transfers`: List in-progress and recent inbound transfers.
- `get_transfer_status`: Get the status of a specific inbound transfer for a domain.
- `get_ssl_bundle`: Retrieve the free Porkbun-issued SSL certificate bundle.
- `get_contacts`: Get registrant, admin, tech and billing contacts for a domain.
- `register_domain`: Register a new domain, spending account credit.
- `renew_domain`: Renew a domain, spending account credit.
- `transfer_domain`: Start an inbound transfer of an external domain, spending credit.
- `get_transfer_setup`: Report where a held inbound transfer is and what it is waiting on.
- `prepare_transfer`: Create the DNS zone for a held inbound transfer, before the domain moves.
- `start_transfer`: Release a held inbound transfer to the registry.
- `cancel_transfer`: Cancel a pending inbound transfer and refund the order.
- `update_transfer_auth_code`: Replace the auth code on a stalled inbound transfer and re-queue it.
- `update_auto_renew`: Turn auto-renewal on or off for a domain in the authenticated account.
- `update_nameservers`: Replace the nameservers for a domain.
- `update_contacts`: Edit a domain's contacts.
- `list_hosting_plans`: List the hosting plans provisionable via the API, with price (cents — pass as \`acknowledged\_cost\` to create\_hosting), interval, trial length, and features.
- `create_hosting`: Provision hosting for a domain in the account — Secure Static Hosting OR Cloud for WordPress (a managed WordPress site), chosen by \`sku\`.
- `get_hosting`: Get Secure Static Hosting status for a domain (plan, server, trial, expiry, auto-renew), or null if the domain has no hosting.
- `deploy_site`: Upload static files to a domain's Secure Static Hosting.
- `list_hosting_files`: List file/directory names under an optional \`path\` in a domain's Secure Static Hosting space.
- `delete_hosting_file`: Delete a file (or empty directory) at \`path\` in a domain's Secure Static Hosting space.
- `make_hosting_dir`: Create a directory (and any missing parent directories) at \`path\` in a domain's Secure Static Hosting space.
- `create_wp_credentials`: CLOUD FOR WORDPRESS ONLY.
- `list_wp_credentials`: CLOUD FOR WORDPRESS ONLY.
- `delete_wp_credentials`: CLOUD FOR WORDPRESS ONLY.
- `delete_hosting`: Deprovision (cancel) Secure Static Hosting for a domain; teardown is scheduled by Porkbun.
- `create_sandbox_key`: Instantly create a free SANDBOX API key — NO credentials or approval needed (works before you have any keys).
- `sandbox_topup`: SANDBOX ONLY.
- `sandbox_reset`: SANDBOX ONLY.
- `sandbox_trigger_webhook`: SANDBOX ONLY.
- `mock_call`: Get a schema-accurate EXAMPLE response for any API endpoint with NO credentials — nothing to set up.
- `preflight_domain`: Check whether a change is about to break a domain, before making it.
- `list_dns_restore_points`: List saved versions of a domain's DNS zone, newest first.
- `diff_dns_restore_point`: Compare a DNS restore point with the live zone before restoring.
- `restore_dns_zone`: Put a DNS zone back to a saved restore point.
- `create_dns_record`: Create a DNS record on a domain.
- `update_dns_record`: Update an existing DNS record by record\_id.
- `delete_dns_record`: Delete a single DNS record by record\_id.
- `create_dnssec_record`: Submit a DNSSEC DS record to the registry for a domain.
- `delete_dnssec_record`: Remove a DNSSEC DS record from the registry for a domain, identified by key tag.
- `create_url_forward`: Add a URL forwarding rule for a domain.
- `delete_url_forward`: Delete a URL forwarding rule by its \`id\` (obtained from \`list\_url\_forwards\`).
- `create_glue_record`: Create a glue record for a host on a domain.
- `update_glue_record`: Update the IP addresses associated with an existing glue record.
- `delete_glue_record`: Delete a glue record by host on a domain.
- `list_doc_topics`: List the available Porkbun API documentation topics.
- `read_doc`: Read a Porkbun documentation page as Markdown.
- `search_docs`: Keyword-search the Porkbun API reference.
- `get_webhook_event_types`: List the event types you can subscribe a webhook endpoint to.
- `list_webhooks`: List the webhook endpoints registered on the authenticated account.
- `get_webhook`: Fetch a single webhook endpoint by its numeric id, including its signing secret and delivery health (consecutive failures, last success/failure).
- `list_webhook_deliveries`: List recent webhook delivery attempts (newest first), across all endpoints or filtered to one.
- `get_webhook_delivery`: Fetch a single webhook delivery by id, including the full JSON payload that was (or will be) sent and its delivery status.
- `create_webhook`: Register a webhook endpoint.
- `update_webhook`: Update a webhook endpoint.
- `rotate_webhook_secret`: Generate a new signing secret for a webhook endpoint and return the endpoint with the new secret.
- `test_webhook`: Send a \`webhook.test\` event to an endpoint to confirm it's reachable and that signature verification works.
- `resend_webhook`: Re-queue a past webhook delivery to its endpoint.
- `delete_webhook`: Delete a webhook endpoint by id.
- `get_cloudflare_connection`: Check whether this Porkbun account is connected to a Cloudflare account, and which one.
- `list_cloudflare_inventory`: List every domain in the account with its Cloudflare eligibility: \`state\` is eligible / warn / blocked / connected / inprogress, each with a human-readable reason (DNSSEC live, custom nameservers, uses Porkbun hosting…
- `connect_domains_to_cloudflare`: Queue domains to move into the customer's own Cloudflare account: Porkbun creates the zone there, copies over the DNS records it holds, and repoints the registry nameservers at Cloudflare.
- `get_cloudflare_queue`: List every Cloudflare move this account has requested, with per-domain status and message.
- `get_cloudflare_domain_status`: Get the Cloudflare move status for ONE domain, including the Cloudflare zone id once created and the nameservers Porkbun replaced (kept so the move can be undone).
- `retry_cloudflare_domain`: Re-queue a domain whose Cloudflare move failed or was skipped.
- `rollback_cloudflare_domain`: UNDO a completed Cloudflare move: point the domain's nameservers back at Porkbun, restoring the DNS Porkbun still holds.
- `disconnect_cloudflare`: Remove this account's stored Cloudflare connection.
- `get_cloudflare_records`: List a domain's LIVE DNS records as Cloudflare holds them, each with its orange-cloud (\`proxied\`) state and whether it is \`proxiable\` at all.
- `set_cloudflare_proxy`: Turn the Cloudflare proxy (orange cloud) on or off for a domain's DNS records.
- … and 7 more on the listing page.

## Example prompts

- "Check whether example.dev and example.io are available and what they cost"
- "List the DNS records for my domain and add an A record for www"
- "Deploy this static site to my domain's Porkbun hosting"
- "Show my Porkbun balance and the latest invoice"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport http porkbun https://mcp.porkbun.com/mcp
```

2. Start Claude Code, type `/mcp`, pick **porkbun** and choose **Authenticate**. A browser window opens for the Porkbun sign-in.

Add `--scope user` to make it available in every project, not just this one.

### Claude Desktop

1. Open **Settings → Connectors** and click **Add custom connector**.

2. Name it **Porkbun** and paste this URL:

```url
https://mcp.porkbun.com/mcp
```

3. Click **Add**, then **Connect**, and sign in when Porkbun asks.

Claude Desktop’s JSON config file only starts local servers. Remote servers go through Connectors, and connectors you add on claude.ai show up here too.

### claude.ai

1. Open the connector form on claude.ai. This button fills in the name and URL for you:

[Add to claude.ai](<https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Porkbun&connectorUrl=https%3A%2F%2Fmcp.porkbun.com%2Fmcp>) (opens connector settings)

2. Check that the URL reads `https://mcp.porkbun.com/mcp` and click **Add**.

3. Click **Connect** and sign in when Porkbun asks.

Free plans allow one custom connector. On Team and Enterprise plans an owner adds it under **Organization settings → Connectors**.

### ChatGPT

1. On chatgpt.com, open **Settings → Security and login** and turn on **Developer mode**.

2. Go to `chatgpt.com/plugins` and click **+** to create an app for a remote MCP server.

3. Paste `https://mcp.porkbun.com/mcp` as the server URL and choose **OAuth**. ChatGPT sends you to Porkbun to sign in.

Developer mode is available on the web for Plus, Pro, Business, Enterprise and Education accounts.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=porkbun&config=eyJ1cmwiOiJodHRwczovL21jcC5wb3JrYnVuLmNvbS9tY3AifQ%3D%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "porkbun": {
      "url": "https://mcp.porkbun.com/mcp"
    }
  }
}
```

Cursor shows **Needs login** next to the server. Click it to sign in.

### VS Code

[Install in VS Code](<https://vscode.dev/redirect/mcp/install?name=porkbun&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.porkbun.com%2Fmcp%22%7D>) (opens VS Code)

Or from a terminal:

```bash
code --add-mcp '{"name":"porkbun","type":"http","url":"https://mcp.porkbun.com/mcp"}'
```

Or commit it to the repo in `.vscode/mcp.json`:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "porkbun": {
      "type": "http",
      "url": "https://mcp.porkbun.com/mcp"
    }
  }
}
```

VS Code asks you to sign in the first time the server starts.

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "porkbun": {
      "serverUrl": "https://mcp.porkbun.com/mcp"
    }
  }
}
```

2. Refresh the MCP server list in Cascade and sign in when asked.

Devin Desktop is the new name for Windsurf. It reads `serverUrl` (or `url`) for remote servers.

### Codex

```bash
codex mcp add porkbun --url https://mcp.porkbun.com/mcp
codex mcp login porkbun
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.porkbun]
url = "https://mcp.porkbun.com/mcp"
```

### Gemini CLI

```bash
gemini mcp add --transport http porkbun https://mcp.porkbun.com/mcp
```

Then, inside Gemini CLI, run `/mcp auth porkbun` to sign in.

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients accept this shape. Some name the URL field differently: `serverUrl` in Devin Desktop, `httpUrl` in Gemini CLI’s settings file.

```json
{
  "mcpServers": {
    "porkbun": {
      "type": "http",
      "url": "https://mcp.porkbun.com/mcp"
    }
  }
}
```

Zed puts servers under `context_servers` in its settings. Cline needs `"type": "streamableHttp"`, or it assumes SSE.

Client only starts local servers? Bridge it with `npx -y mcp-remote https://mcp.porkbun.com/mcp`.

## Details

- Server version: 0.43.5
- Last checked: 2026-10-03 (reachable, asks for credentials)
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/porkbun (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
