Porkbun MCP Server
About
MCP server implementation for managing domains, DNS, and SSL via the Porkbun API.
Details
- Author
- miraclebakelaser
- GitHub stars
- 14
- Downloads
- 435
- Categories
- Other
Jump to
- Ping the Porkbun API to test authentication
- List all domains in the account
- Manage DNS records (create, edit, delete, retrieve)
- Retrieve SSL certificate bundles for a domain
- Update and query authoritative nameservers
- Add, list, and delete URL forwarding rules
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Porkbun MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install Node.js (v18+), clone the repository, run npm install, and configure your Porkbun API key and secret key via environment variables (PORKBUN_API_KEY, PORKBUN_SECRET_API_KEY) or a .env file. Build with npm run build, then start with npm start or node build/index.js. Optionally pass --dotenv-path for a custom .env location. For Claude Desktop, add a configuration entry pointing to build/index.js in claude_desktop_config.json.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"porkbun mcp server": {
"porkbun-mcp-server": {
"command": "node",
"args": [
"build/index.js"
]
}
}
}
}
McpServers
{
"porkbun-mcp-server": {
"command": "node",
"args": [
"build/index.js"
]
}
}
Porkbun MCP Server
A Model Context Protocol (MCP) server that provides tools to interact with the Porkbun API (v3).
This server allows MCP-compatible clients (like AI assistants, IDE extensions, etc.) to manage Porkbun domains, DNS records, SSL certificates, and more, through a standardized interface.
Tools
1. ping_porkbun
Tests the Porkbun API connection and authentication.
Inputs: None
Returns: Success message including the client's public IP address, or an error message.
2. list_domains
Retrieves a list of domains in the Porkbun account.
Inputs:
start (optional number): Index to start retrieving domains from (default 0).
includeLabels (optional enum: "yes"): Include domain labels.
Returns: An array of domain objects with details like status, expiration date, etc.
3. get_dns_records
Retrieves all DNS records for a specified domain.
Inputs:
domain (string): The domain name.
Returns: An array of DNS record objects.
4. create_dns_record
Adds a new DNS record to a specified domain.
Inputs:
domain (string): The domain name.
name (optional string): Subdomain (leave blank for root, \ for wildcard).
type (string): Record type (A, CNAME, MX, TXT, NS, AAAA, SRV, TLSA, CAA, HTTPS, SVCB).
content (string): Record content/answer.
ttl (optional number): Time To Live in seconds (default 600, min 600).
prio (optional number): Priority (required for MX/SRV records).
Returns: Success message with the new record ID.
5. edit_dns_record
Modifies an existing DNS record using its ID.
Inputs:
domain (string): The domain name.
record_id (string): The ID of the record to edit.
name (optional string): New subdomain.
type (string): New record type (A, CNAME, MX, etc.).
content (string): New record content/answer.
ttl (optional number): New TTL in seconds (default 600, min 600).
prio (optional number): New Priority (for MX/SRV records).
Returns: Success message.
6. delete_dns_record
Removes a specific DNS record using its ID.
Inputs:
domain (string): The domain name.
record_id (string): The ID of the record to delete.
Returns: Success message.
7. get_ssl_bundle
Retrieves the SSL certificate bundle for a specified domain.
Inputs:
domain (string): The domain name.
Returns: An object containing certificatechain, privatekey, and publickey.
8. update_nameservers
Updates the nameservers for a specified domain.
Inputs:
domain (string): The domain name.
ns (array of strings): An array of name server hostnames.
Returns: Success message.
9. get_nameservers
Gets the authoritative nameservers for a specified domain from the registry.
Inputs:
domain (string): The domain name.
Returns: An array of name server hostnames.
10. add_url_forward
Adds URL forwarding for a domain or subdomain.
Inputs:
domain (string): The domain name.
subdomain (optional string): Subdomain to forward (leave blank for root).
location (string): URL to forward to.
type (enum: "temporary", "permanent"): Type of forward.
includePath (optional enum: "yes", "no"): Include URI path in redirection (default "no").
wildcard (optional enum: "yes", "no"): Also forward all subdomains (default "no").
Returns: Success message.
11. get_url_forwarding
Gets URL forwarding records for a domain.
Inputs:
domain (string): The domain name.
Returns: An array of URL forward record objects.
12. delete_url_forward
Deletes a URL forward record for a domain by its ID.
Inputs:
domain (string): The domain name.
forward_id (string): The ID of the URL forward record to delete.
Returns: Success message.
13. check_domain
Checks the availability of a domain name.
Inputs:
domain (string): The domain name to check.
Returns: An object detailing the domain's availability, pricing, and premium status.
14. edit_dns_record_by_name_type
Edits all DNS records matching a domain, subdomain (optional), and type.
Inputs:
domain (string): The domain name.
type (string): The type of records to edit.
name (optional string): The subdomain to edit (leave blank for root, \ for wildcard).
content (string): The new answer content for the matching records.
ttl (optional number): The new TTL (default 600, min 600).
prio (optional number): The new priority (for MX/SRV records).
Returns: Success message.
15. delete_dns_record_by_name_type
Deletes all DNS records matching a domain, subdomain (optional), and type.
Inputs:
domain (string): The domain name.
type (string): The type of records to delete.
name (optional string): The subdomain to delete (leave blank for root, \ for wildcard).
Returns: Success message.
16. retrieve_dns_record_by_name_type
Retrieves all DNS records matching a domain, subdomain (optional), and type.
Inputs:
domain (string): The domain name.
type (string): The type of records to retrieve.
name (optional string): The subdomain to retrieve (leave blank for root, \ for wildcard).
Returns: An array of matching DNS record objects.
17. create_dnssec_record
Creates a DNSSEC record at the registry for the domain.
Inputs:
domain (string): The domain name.
keyTag (string): Key Tag.
alg (string): DS Data Algorithm.
digestType (string): Digest Type.
digest (string): Digest.
maxSigLife (optional string): Max Sig Life.
keyDataFlags (optional string): Key Data Flags.
keyDataProtocol (optional string): Key Data Protocol.
keyDataAlgo (optional string): Key Data Algorithm.
keyDataPubKey (optional string): Key Data Public Key.
Returns: Success message.
18. get_dnssec_records
Gets the DNSSEC records associated with the domain at the registry.
Inputs:
domain (string): The domain name.
Returns: An object containing DNSSEC records, keyed by Key Tag.
19. delete_dnssec_record
Deletes a DNSSEC record associated with the domain at the registry by Key Tag.
Inputs:
domain (string): The domain name.
keyTag (string): The Key Tag of the DNSSEC record to delete.
Returns: Success message.
Prerequisites
Node.js (v18 or later recommended)
npm (usually included with Node.js)
Porkbun API Key and Secret Key (generate here)
Setup
1. Clone the repository:
git clone https://github.com/miraclebakelaser/porkbun-mcp-server.git
cd porkbun-mcp-server
2. Install dependencies:
npm install
3. Configure API Keys:
You can provide your Porkbun API Key and Secret Key in multiple ways (highest precedence first):
System Environment Variables: Set PORKBUN_API_KEY and PORKBUN_SECRET_API_KEY in your system environment.
Custom .env File: Create a .env file at a custom location and specify its path using the --dotenv-path (or -p) command-line argument when running the server (see Running the Server section).
Default .env File: Create a file named .env in the project root directory (porkbun-mcp-server/.env) with the following content:
PORKBUN_API_KEY=YOUR_API_KEY
PORKBUN_SECRET_API_KEY=YOUR_SECRET_API_KEY
Replace
YOUR_API_KEY and YOUR_SECRET_API_KEY with your actual keys.Important: Add
.env files to your .gitignore if you plan to commit this project to version control.
Building
Compile the TypeScript code to JavaScript:
npm run build
This will create the executable JavaScript file in the build/ directory.
Running the Server
You can run the compiled server directly using Node.js.
Standard Start:
Uses the default .env location or system environment variables.
```bash
npm start
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



