{
  "markdown": "# porkbun-mcp\n\nMCP server for the [Porkbun](https://porkbun.com/) DNS API.\n\nManage DNS records, domains, DNSSEC, SSL certificates, and more via the Model Context Protocol.\n\n[![CI](https://github.com/major/porkbun-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/major/porkbun-mcp/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/major/porkbun-mcp/branch/main/graph/badge.svg)](https://codecov.io/gh/major/porkbun-mcp)\n[![PyPI version](https://badge.fury.io/py/porkbun-mcp.svg)](https://pypi.org/project/porkbun-mcp/)\n[![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Configuration\n\nSet your Porkbun API credentials as environment variables:\n\n```bash\nexport PORKBUN_API_KEY=\"pk1_...\"\nexport PORKBUN_SECRET_KEY=\"sk1_...\"\n```\n\nGet your API keys from the [Porkbun API Access page](https://porkbun.com/account/api).\n\n## Read-Only Mode (Default)\n\nBy default, porkbun-mcp runs in **read-only mode** for safety. Write operations\n(create, edit, delete) will return an error until explicitly enabled.\n\n### Enabling Write Operations\n\nTo let the pig get muddy and make changes:\n\n**Environment variable:**\n\n```bash\nexport PORKBUN_GET_MUDDY=true\n```\n\n**CLI flag:**\n\n```bash\nuvx porkbun-mcp --get-muddy\n```\n\n## Usage\n\nRun directly with [uvx](https://docs.astral.sh/uv/) (no installation required):\n\n```bash\nuvx porkbun-mcp\n```\n\n### SSE transport\n\n```bash\nuvx porkbun-mcp --transport sse\n```\n\n## MCP Client Configuration\n\n### Claude Desktop\n\nAdd to `~/.config/claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"porkbun\": {\n      \"command\": \"uvx\",\n      \"args\": [\"porkbun-mcp\", \"--get-muddy\"],\n      \"env\": {\n        \"PORKBUN_API_KEY\": \"pk1_...\",\n        \"PORKBUN_SECRET_KEY\": \"sk1_...\"\n      }\n    }\n  }\n}\n```\n\n> **Note:** Remove `--get-muddy` from args for read-only mode (recommended for safety).\n\n### Claude Code / Codex\n\nAdd to `~/.claude/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"porkbun\": {\n      \"command\": \"uvx\",\n      \"args\": [\"porkbun-mcp\", \"--get-muddy\"],\n      \"env\": {\n        \"PORKBUN_API_KEY\": \"pk1_...\",\n        \"PORKBUN_SECRET_KEY\": \"sk1_...\"\n      }\n    }\n  }\n}\n```\n\n### VS Code\n\nAdd to `.vscode/mcp.json` in your workspace (or use `MCP: Add Server` command):\n\n```json\n{\n  \"servers\": {\n    \"porkbun\": {\n      \"command\": \"uvx\",\n      \"args\": [\"porkbun-mcp\", \"--get-muddy\"],\n      \"env\": {\n        \"PORKBUN_API_KEY\": \"pk1_...\",\n        \"PORKBUN_SECRET_KEY\": \"sk1_...\"\n      }\n    }\n  }\n}\n```\n\n### OpenCode\n\nAdd to your `opencode.json` configuration:\n\n```json\n{\n  \"mcp\": {\n    \"porkbun\": {\n      \"type\": \"local\",\n      \"command\": [\"uvx\", \"porkbun-mcp\", \"--get-muddy\"],\n      \"environment\": {\n        \"PORKBUN_API_KEY\": \"pk1_...\",\n        \"PORKBUN_SECRET_KEY\": \"sk1_...\"\n      }\n    }\n  }\n}\n```\n\n## Available Tools\n\n### DNS\n\n- `dns_list` - List all DNS records for a domain\n- `dns_get` - Get a specific DNS record by ID\n- `dns_get_by_name_type` - Get DNS records by subdomain and type\n- `dns_create` - Create a new DNS record\n- `dns_edit` - Edit a DNS record by ID\n- `dns_edit_by_name_type` - Edit DNS records by subdomain and type\n- `dns_delete` - Delete a DNS record by ID\n- `dns_delete_by_name_type` - Delete DNS records by subdomain and type\n\n### Domains\n\n- `domains_list` - List all domains in your account\n- `domains_get_nameservers` - Get nameservers for a domain\n- `domains_update_nameservers` - Update nameservers for a domain\n- `domains_get_url_forwards` - Get URL forwarding rules\n- `domains_add_url_forward` - Add a URL forwarding rule\n- `domains_delete_url_forward` - Delete a URL forwarding rule\n- `domains_check_availability` - Check domain availability and pricing\n- `domains_get_glue_records` - Get glue records for a domain\n\n### DNSSEC\n\n- `dnssec_list` - List DNSSEC records for a domain\n- `dnssec_create` - Create a DNSSEC record\n- `dnssec_delete` - Delete a DNSSEC record\n\n### SSL\n\n- `ssl_retrieve` - Retrieve the SSL certificate bundle for a domain\n\n### Pricing\n\n- `pricing_get` - Get pricing for all available TLDs\n\n### Utility\n\n- `ping` - Test API connectivity and get your public IP\n\n## Prompts\n\nPre-defined workflows to guide common DNS operations:\n\n- `dns_setup` - Set up basic DNS for a new server (root A + www records)\n- `dns_audit` - Audit DNS configuration for issues (duplicates, missing email records, low TTLs)\n- `email_dns_setup` - Configure email DNS (MX, SPF, DKIM, DMARC)\n- `update_server_ip` - Update DNS records when migrating to a new server IP\n- `subdomain_setup` - Create A/CNAME records for a new subdomain\n\n## Development\n\n```bash\n# Install dependencies\nuv sync --dev\n\n# Run all checks\nmake check\n\n# Individual commands\nmake lint       # ruff check\nmake format     # ruff format\nmake typecheck  # ty check\nmake test       # pytest with coverage\n```\n\n## License\n\nMIT\n\n<!-- mcp-name: io.github.major/porkbun -->\n",
  "bytes": 4969,
  "sha": "513b3cd467afa316264bb85f65fc71f2fcb3921ada8655b3f86ce218c366068d",
  "repo_slug": "major/porkbun-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_major_porkbun_b8f64487/readme"
}