Porkbun域名管理工具

一个用于管理和操作Porkbun域名和DNS记录的MCP服务器工具,支持安全读写操作,适用于AI助手执行的域名工作流程。

  • by korobkov-v
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 korobkov-v/porkbun-mcp

使用说明

porkbun mcp

用于Porkbun域和DNS的MCP服务器。

从任何兼容MCP的客户端使用它来检查和管理:

  • 域名和名称服务器
  • DNS记录
  • 域名系统安全扩展
  • SSL证书包
  • URL转发

专为安全操作而设计:

  • 默认情况下为只读行为
  • 变异工具需要显式写入模式
  • 场景工具默认为 dry_run: true

为什么存在

在时间压力下,Porkbun手术往往是重复性的,有风险的。 该项目将Porkbun API作为MCP工具公开,这样AI助手就可以一致地执行域工作流,并设置护栏。

3分钟设置

1) 先决条件

  • Node.js >=20
  • Porkbon API证书:
    • PORKBUN_API_KEY
    • PORKBUN_SECRET_KEY
  • 在Porkbon面板中,目标域必须标记为API可访问(“可通过API访问”)。 如果域级API访问被禁用,则帐户级密钥是不够的。

在哪里可以拿到钥匙:

  • 登录Porkbun。
  • 打开帐户设置并转到API访问。
  • 生成/复制:
    • PORKBUN_API_KEY (API密钥)
    • PORKBUN_SECRET_KEY (API密钥)
  • 在域设置中,确保为要管理的每个域启用API访问。

在本地安装依赖项(用于开发):

npm install
npm run build

2) 快速本地运行(stdio)

只读模式:

PORKBUN_API_KEY=your_key \
PORKBUN_SECRET_KEY=your_secret \
node dist/index.js

启用写入操作:

PORKBUN_API_KEY=your_key \
PORKBUN_SECRET_KEY=your_secret \
PORKBUN_GET_MUDDY=true \
node dist/index.js --get-muddy

3) 验证CLI接线

node dist/index.js --help

MCP客户端集成

GitHub README不支持本机选项卡,因此本节使用可折叠的“类似选项卡”块。 如果稍后将文档移动到文档站点(Docusaurus/Nextra),则可以将相同的代码段重用为真正的选项卡。

基本服务器代码段(安全只读)

{
  "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

在游标设置中添加MCP服务器,并将上面的代码段粘贴为服务器配置。 如果您的设置需要一个外部对象,请将其包装成:

{
  "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)

更新 ~/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"
      }
    }
  }
}
Other MCP clients (Windsurf, Cline, etc.)

大多数客户使用相同的 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"
      }
    }
  }
}

写入模式 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"
      }
    }
  }
}

已启用域创建(危险)

{
  "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"
      }
    }
  }
}

重要信息(Porkbun API域名注册前提条件):

  • 您的Porkbun帐户过去必须至少注册过一个域名(对于新帐户,可能需要通过web UI进行首次购买)。
  • 您的电子邮件地址和电话号码必须经过验证。
  • 您必须有足够的帐户信用(API注册是根据帐户信用付费的)。
  • cost 必须以便士的形式提供,并且必须与域名检查返回的值相匹配(最短持续时间*价格)。
  • 您必须明确接受条款(agree_to_terms=true 在此服务器中,它映射到 agreeToTerms="yes" Porkbun)。

参考:

  • Porkbun API v3文档(请参阅“域创建”和“域检查”):https://porkbun.com/api/json/v3/documentation

首次成功通话

在MCP客户端中配置后,从以下步骤开始:

  • ping
  • pricing_get

然后尝试一个阅读流程:

  • dns_list 对于您的域名

在任何写调用之前,请在中运行场景工具 dry_run 模式第一。

安全模型

  • 写入操作被阻止,除非 --get-muddy 或 PORKBUN_GET_MUDDY=true 已设置。
  • 场景工具旨在应用前进行规划。
  • 破坏性工具包括明确的限制和确认。
  • API证书是帐户级别的。Porkbon中的域级API权限仍然适用。
  • 域名注册(domains_create)默认情况下禁用。它要求:
    • 写入模式(--get-muddy)
    • 显式启用标志(--enable-domain-create 或 PORKBUN_ENABLE_DOMAIN_CREATE=true)
    • dry_run=false + confirm_apply=true + agree_to_terms=true

环境变量

  • PORKBUN_API_KEY (必填)
  • PORKBUN_SECRET_KEY (必填)
  • PORKBUN_GET_MUDDY (可选)
  • PORKBUN_ENABLE_DOMAIN_CREATE (可选,危险)

CLI选项

  • --get-muddy
  • --enable-domain-create (危险)
  • --transport stdio
  • --ipv4-only-api
  • --help

什么 --get-muddy 手段

--get-muddy 启用写入模式。

没有它,服务器将保持安全的只读行为。 有了它,就可以使用变异工具(DNS和域设置的创建/编辑/删除/更新操作)。

仅在以下情况下使用此模式:

  • 您已准备好应用真正的基础架构更改
  • 您的域在Porkbun中启用了API
  • 您已经通过read调用或 dry_run 流动

工具覆盖范围

  • 连接性: ping, pricing_get
  • 域名:列表、域名服务器、URL转发、粘贴记录(获取/创建/更新/删除)、可用性
  • DNS:列表/获取/创建/编辑/删除(包括按名称/类型)
  • DNSSEC:列出/创建/删除
  • SSL:证书包检索

场景工具:

  • dns_query
  • dns_upsert
  • domain_health_check
  • dns_remove
  • domain_redirect_ensure
  • domain_cutover_web
  • dns_batch_apply

初学者助手:

  • dns_audit
  • dns_setup
  • email_dns_setup
  • update_server_ip
  • subdomain_setup

详细文档: docs/scenario-tools.md

实际例子

dns_query 按记录id:

{
  "domain": "example.com",
  "selector": {
    "record_id": "123456789"
  }
}

dns_upsert 计划模式:

{
  "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 计划:

{
  "domain": "example.com",
  "desired_records": [
    {
      "type": "A",
      "subdomain": "",
      "content": "198.51.100.42",
      "ttl": 300
    }
  ],
  "mode": "plan",
  "strategy": "merge",
  "max_changes": 5
}

安全说明

  • 永远不要将真正的API密钥提交给git。
  • 更喜欢本地环境变量或秘密管理器。
  • 将写入模式视为生产访问。

发展

npm install
npm run build

在本地运行:

npm run dev

贡献

欢迎捐款。 阅读 CONTRIBUTING.md 在打开PR之前。

许可证

麻省理工学院