porkbun-mcp
Servidor MCP para dominios y DNS de Porkbun
Documentación
porkbun-mcp

Servidor MCP para dominios y DNS de Porkbun.
Úsalo desde cualquier cliente compatible con MCP para inspeccionar y gestionar:
- dominios y servidores de nombres
- registros DNS
- DNSSEC
- paquete de certificados SSL
- redirección de URL
Diseñado para operaciones seguras:
- comportamiento de solo lectura por defecto
- las herramientas de mutación requieren modo de escritura explícito
- las herramientas de escenarios por defecto usan
dry_run: true
Por Qué Existe
Las operaciones de Porkbun suelen ser repetitivas y arriesgadas bajo presión de tiempo. Este proyecto expone las APIs de Porkbun como herramientas MCP para que los asistentes de IA puedan ejecutar flujos de trabajo de dominios de forma consistente y con salvaguardas.
Configuración en 3 Minutos
1) Requisitos previos
- Node.js
>=20 - Credenciales de API de Porkbun:
PORKBUN_API_KEYPORKBUN_SECRET_KEY
- En el panel de Porkbun, el dominio objetivo debe estar marcado como accesible por API ("available via API"). Las claves a nivel de cuenta no son suficientes si el acceso API a nivel de dominio está deshabilitado.
Dónde obtener las claves:
- Inicia sesión en Porkbun.
- Abre la configuración de la cuenta y ve a API Access.
- Genera/copia:
PORKBUN_API_KEY(API Key)PORKBUN_SECRET_KEY(Secret API Key)
- En la configuración del dominio, asegúrate de que el acceso API esté habilitado para cada dominio que quieras gestionar.
Instala las dependencias localmente (para desarrollo):
npm install
npm run build
2) Ejecución local rápida (stdio)
Modo de solo lectura:
PORKBUN_API_KEY=your_key \
PORKBUN_SECRET_KEY=your_secret \
node dist/index.js
Habilitar operaciones de escritura:
PORKBUN_API_KEY=your_key \
PORKBUN_SECRET_KEY=your_secret \
PORKBUN_GET_MUDDY=true \
node dist/index.js --get-muddy
3) Verificar la configuración de CLI
node dist/index.js --help
Integraciones con Clientes MCP
El README de GitHub no admite pestañas nativas, por lo que esta sección usa bloques plegables tipo "pestaña". Si luego mueves la documentación a un sitio de documentación (Docusaurus/Nextra), puedes reutilizar los mismos fragmentos como pestañas reales.
Fragmento base del servidor (solo lectura seguro)
{
"porkbun-mcp": {
"command": "npx",
"args": ["-y", "porkbun-mcp"],
"env": {
"PORKBUN_API_KEY": "your_porkbun_api_key",
"PORKBUN_SECRET_KEY": "your_porkbun_secret_api_key"
}
}
}
Cursor
Añade un servidor MCP en la configuración de Cursor y pega el fragmento anterior como configuración del servidor. Si tu configuración espera un objeto externo, envuélvelo en:
{
"mcpServers": {
"porkbun-mcp": {
"command": "npx",
"args": ["-y", "porkbun-mcp"],
"env": {
"PORKBUN_API_KEY": "your_porkbun_api_key",
"PORKBUN_SECRET_KEY": "your_porkbun_secret_api_key"
}
}
}
}
Claude Desktop (macOS)
Actualiza ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"porkbun-mcp": {
"command": "npx",
"args": ["-y", "porkbun-mcp"],
"env": {
"PORKBUN_API_KEY": "your_porkbun_api_key",
"PORKBUN_SECRET_KEY": "your_porkbun_secret_api_key"
}
}
}
}
Otros clientes MCP (Windsurf, Cline, etc.)
La mayoría de los clientes usan la misma forma de mcpServers:
{
"mcpServers": {
"porkbun-mcp": {
"command": "npx",
"args": ["-y", "porkbun-mcp"],
"env": {
"PORKBUN_API_KEY": "your_porkbun_api_key",
"PORKBUN_SECRET_KEY": "your_porkbun_secret_api_key"
}
}
}
}
Modo de escritura con npx
{
"mcpServers": {
"porkbun-mcp": {
"command": "npx",
"args": ["-y", "porkbun-mcp", "--get-muddy"],
"env": {
"PORKBUN_API_KEY": "your_porkbun_api_key",
"PORKBUN_SECRET_KEY": "your_porkbun_secret_api_key"
}
}
}
}
Creación de dominio habilitada (peligroso)
{
"mcpServers": {
"porkbun-mcp": {
"command": "npx",
"args": ["-y", "porkbun-mcp", "--get-muddy", "--enable-domain-create"],
"env": {
"PORKBUN_API_KEY": "your_porkbun_api_key",
"PORKBUN_SECRET_KEY": "your_porkbun_secret_api_key"
}
}
}
}
Importante (requisitos previos para el registro de dominios en la API de Porkbun):
- Tu cuenta de Porkbun debe haber registrado al menos un dominio anteriormente (para cuentas nuevas, la primera compra puede necesitar hacerse a través de la interfaz web).
- Tu dirección de correo electrónico y número de teléfono deben estar verificados.
- Debes tener suficiente crédito en la cuenta (los registros por API se facturan desde el crédito de la cuenta).
costdebe proporcionarse en céntimos y debe coincidir con el valor devuelto por la verificación del dominio (duración mínima * precio).- Debes aceptar explícitamente los términos (
agree_to_terms=trueen este servidor, que se asigna aagreeToTerms="yes"para Porkbun).
Referencia:
- Documentación de la API v3 de Porkbun (ver "Domain Create" y "Domain Check"): https://porkbun.com/api/json/v3/documentation
Primera Llamada Exitosa
Una vez configurado en tu cliente MCP, comienza con:
pingpricing_get
Luego prueba un flujo de lectura:
dns_listpara tu dominio
Antes de cualquier llamada de escritura, ejecuta primero una herramienta de escenario en modo dry_run.
Modelo de Seguridad
- Las acciones de escritura están bloqueadas a menos que se establezca
--get-muddyoPORKBUN_GET_MUDDY=true. - Las herramientas de escenarios están diseñadas para planificar antes de aplicar.
- Las herramientas destructivas incluyen límites explícitos y confirmaciones.
- Las credenciales de API son a nivel de cuenta. Los permisos de API a nivel de dominio en Porkbun siguen aplicándose.
- El registro de dominios (
domains_create) está deshabilitado por defecto. Requiere:- modo de escritura (
--get-muddy) - indicador de habilitación explícito (
--enable-domain-createoPORKBUN_ENABLE_DOMAIN_CREATE=true) dry_run=false+confirm_apply=true+agree_to_terms=true
- modo de escritura (
Variables de Entorno
PORKBUN_API_KEY(obligatorio)PORKBUN_SECRET_KEY(obligatorio)PORKBUN_GET_MUDDY(opcional)PORKBUN_ENABLE_DOMAIN_CREATE(opcional, peligroso)
Opciones de CLI
--get-muddy--enable-domain-create(peligroso)--transport stdio--ipv4-only-api--help
Qué Significa --get-muddy
--get-muddy habilita el modo de escritura.
Sin él, el servidor permanece en comportamiento seguro de solo lectura. Con él, se permiten herramientas de mutación (operaciones de crear/editar/eliminar/actualizar para DNS y configuración de dominios).
Usa este modo solo cuando:
- estés listo para aplicar cambios reales de infraestructura
- tu dominio esté habilitado por API en Porkbun
- ya hayas validado el plan con llamadas de lectura o flujos de
dry_run
Cobertura de Herramientas
- Conectividad:
ping,pricing_get - Dominios: listar, servidores de nombres, redirección de URL, registros glue (obtener/crear/actualizar/eliminar), disponibilidad
- DNS: listar/obtener/crear/editar/eliminar (incluyendo por nombre/tipo)
- DNSSEC: listar/crear/eliminar
- SSL: obtención del paquete de certificados
Herramientas de escenarios:
dns_querydns_upsertdomain_health_checkdns_removedomain_redirect_ensuredomain_cutover_webdns_batch_apply
Ayudantes para principiantes:
dns_auditdns_setupemail_dns_setupupdate_server_ipsubdomain_setup
Documentación detallada: docs/scenario-tools.md
Ejemplos Prácticos
dns_query por ID de registro:
{
"domain": "example.com",
"selector": {
"record_id": "123456789"
}
}
dns_upsert modo de plan:
{
"domain": "example.com",
"match": {
"type": "A",
"subdomain": "www"
},
"target": {
"content": "203.0.113.10",
"ttl": 300
},
"dry_run": true
}
domains_check_bulk:
{
"domains": ["example.com", "example.net", "example.org"],
"concurrency": 1,
"respect_limits": true,
"delay_ms": 11000,
"stop_on_rate_limit": true
}
dns_batch_apply plan:
{
"domain": "example.com",
"desired_records": [
{
"type": "A",
"subdomain": "",
"content": "198.51.100.42",
"ttl": 300
}
],
"mode": "plan",
"strategy": "merge",
"max_changes": 5
}
Notas de Seguridad
- Nunca confirmes claves API reales en git.
- Prefiere variables de entorno locales o un gestor de secretos.
- Trata el modo de escritura como acceso de producción.
Desarrollo
npm install
npm run build
Ejecutar localmente:
npm run dev
Contribuciones
Las contribuciones son bienvenidas.
Lee CONTRIBUTING.md antes de abrir un PR.
Licencia
MIT