关于 Official Porkbun MCP Server
Porkbun 官方 MCP 服务将 Porkbun v3 API 封装为 AI Agent 可调用的工具,面向域名和 DNS 管理场景。它提供托管连接,也可在沙盒或模拟环境中运行。
主要功能
- 01查询域名可用性与价格
- 02注册、续费和转移域名
- 03管理 DNS、DNSSEC 与转发
- 04管理联系人、名称服务器和 Webhook
- 05查询 Porkbun API 文档
- 06提供沙盒与模拟服务
适用场景
- 01查询域名注册或续费价格
- 02迁移域名前扫描并导入 DNS 记录
- 03维护域名的 DNS 和转发设置
- 04让 Agent 在沙盒中测试操作
MCP 相关
作为 MCP 服务,它向兼容客户端暴露 Porkbun v3 API 工具,可通过 Porkbun 托管端点连接,也提供沙盒和无凭据模拟服务。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.porkbun.com/mcpclaude mcp add --transport http official-porkbun https://mcp.porkbun.com/mcp{"mcpServers":{"official-porkbun":{"type":"http","url":"https://mcp.porkbun.com/mcp"}}}在 Cursor 中打开{"servers":{"official-porkbun":{"type":"http","url":"https://mcp.porkbun.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"official-porkbun":{"type":"http","url":"https://mcp.porkbun.com/mcp"}}}{"mcpServers":{"official-porkbun":{"serverUrl":"https://mcp.porkbun.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Porkbun MCP 服务(官方)
由 Porkbun 构建并维护的官方 MCP 服务(由 Owen Borseth,Porkbun 的 CTO 负责)。它以 @porkbunllc/mcp-server 的名称发布在 npm 上,由 Porkbun 托管于 https://mcp.porkbun.com/mcp。GitHub 上以及 MCP 目录中的其他 “Porkbun MCP” 项目都是围绕公共 API 开发的社区封装;它们并非由 Porkbun 制作或支持。在官方 MCP Registry 中,它以 com.porkbun/mcp 列出;Registry 仅向能证明自己控制 porkbun.com 的主体授予这一名称;社区项目则使用 io.github.* 名称。
一个 Model Context Protocol 服务,将 Porkbun v3 API 封装为供 AI Agent 使用的原生工具,可用于 Claude Desktop、Cursor、Cline 以及任何其他兼容 MCP 的客户端。
设置指南、客户端配置和完整工具列表:porkbun.com/mcp
无需安装:使用托管连接器。 Porkbun 在 https://mcp.porkbun.com/mcp 运行此服务。在 ChatGPT 或 Claude 中将该 URL 添加为自定义连接器(或在 Claude Code 中运行 claude mcp add --transport http porkbun https://mcp.porkbun.com/mcp),然后登录 Porkbun 并批准即可。无需复制 API 密钥。(如果应用要求 OAuth 客户端 ID 和密钥,可在 https://porkbun.com/oauth2/register 注册,使用 token_endpoint_auth_method: client_secret_post。不支持 OAuth 的客户端可以改用 X-API-Key + X-Secret-API-Key 标头发送账户的 API 密钥对,或者在只能存储一个密钥时,使用单个密钥 Authorization: Bearer pk1_…:sk1_…。)各客户端的操作步骤:连接 ChatGPT 或 Claude。部署方式:deploy/README.md。ChatGPT 和 Claude 目录中的服务使用功能较精简的版本 /mcp/no-purchases(不提供任何会花费资金或返回密钥的工具);这会改变提供哪些工具,但不会改变连接可以执行的操作。
状态: 完整支持 Porkbun v3(域名、DNS、SSL、托管、webhook;当前版本见上方 npm 徽章)。也以托管方式运行于
https://mcp.porkbun.com/mcp,供 ChatGPT 和 Claude 使用,登录即可,无需 API 密钥(不支持 OAuth 的客户端可以发送 API 密钥对)。可配置 Cloud for WordPress 并生成 WordPress REST API 凭据,让 Agent 管理刚创建的网站。可将域名迁移至客户自己的 Cloudflare 账户,随后管理这些记录、代理和区域设置。隔离的沙盒:使用pk1_sb_密钥运行的所有工具都会针对模拟环境操作,并使用虚拟额度——不会执行真实的注册局操作、DNS 更改或收费——同时仍可发送签名的 webhook。无需凭据的模拟服务可为任何端点返回符合架构的示例响应。
包含内容
读取工具(免费、不花费资金、不改变状态)
| 工具 | 描述 |
|---|---|
ping | 验证 API 连通性和凭据 |
check_domain | 检查单个域名是否可注册及其价格 |
get_registration_requirements | 以 JSON Schema 格式获取 TLD 注册要求——是否可通过 API 注册、创建请求载荷,以及注册局资格字段(.us nexus、.ca 法律类型等) |
get_pricing | 获取所有 TLD 的注册/续费/转移价格(无需身份验证) |
list_marketplace | 浏览 Porkbun Marketplace(Porkbun 客户自行挂牌的域名);可按 TLD、最高价格和名称子串筛选。若要一次搜索所有域名交易平台,请使用 search_aftermarket |
search_closeouts | 搜索过期域名清仓列表;可按注册年限、价格、TLD 和名称长度筛选;按注册日期排序 |
search_aftermarket | 查找已被注册但正在出售的域名(Afternic、Sedo、Atom、NameBright、DAX、Porkbun Marketplace),包括价格、销售类型以及在 porkbun.com 上购买的链接 |
get_closeout | 获取一项清仓域名及其绑定总价(清仓价格 + 一年的续费/转移费用) |
buy_closeout | 直接购买清仓域名。会扣除账户余额 |
list_domains | 分页列出域名;可按 TLD、到期时间、自动续费和 API 访问权限筛选 |
get_domain | 获取账户中单个域名的元数据 |
get_balance | 获取账户余额 |
get_auto_topup | 查看自动充值设置、账户是否已绑定银行卡,以及充值将扣除的金额 |
top_up_with_usdc | 使用 Base 上的 USDC 充值($1-$500;Coinbase 会收取约 1% 的费用,因此请使用 INSUFFICIENT_FUNDS 中的 usdcAmountToCover):返回由 Agent 钱包直接支付的 x402 URL,以及供用户使用的支付页面 |
get_usdc_topup_status | 查看 USDC 充值是否已支付并入账 |
top_up_with_card_mpp | 生成支付链接,Agent 可通过 MPP 使用用户的银行卡支付(Stripe Link Agent 钱包);余额会立即到账 |
send_phone_verification_code | 向账户绑定的电话号码发送短信(或拨打电话)验证码,以解除 VERIFICATION_REQUIRED 状态 |
confirm_phone_verification | 使用用户收到的验证码验证电话号码 |
send_email_verification_code | 向账户绑定的邮箱发送验证码,以解除 VERIFICATION_REQUIRED 状态 |
confirm_email_verification | 使用该邮件中的验证码验证邮箱 |
list_invoices | 按时间倒序列出账户发票:日期、已付款/已退款状态、净总额、域名,以及每张发票在 porkbun.com 上的链接 |
get_invoice | 以数据形式获取一张发票:账单对象、付款方式、包含服务期限和到期日的明细行,以及总额 |
get_invoice_pdf | 获取以嵌入文件形式提供的发票 PDF,以及一个无需登录即可使用的 15 分钟下载链接 |
get_api_settings | 获取实际执行的月度限额(购买的 spendLimit、充值的 topupLimit;默认各为 $100)、本月已支出和已充值金额、提醒及自动充值配置 |
get_nameservers | 获取域名当前的名称服务器 |
list_dns_records | 列出域名的 DNS 记录 |
scan_dns_records | 从域名当前的名称服务器发现其发布的记录(转移前使用——域名转移不会携带区域数据) |
import_dns_records | 根据提供的列表或实时扫描结果批量创建记录;支持幂等操作,已存在的记录会跳过 |
list_dnssec_records | 列出在注册局发布的 DNSSEC DS 记录 |
list_url_forwards | 列出域名的 URL 转发规则(包括准确的 redirectType:301/302/307/隐藏式转发) |
list_email_forwards | 列出域名的邮件转发规则(地址 → 邮箱),以及限额和转发 MX 记录是否已配置 |
list_mailboxes | 列出邮件托管邮箱(包括等待设置的邮箱)、新增邮箱的价格以及邮件客户端设置 |
list_glue_records | 列出域名的 glue 记录(主机到 IP 的映射) |
list_transfers | 列出进行中和近期的入站转移 |
get_transfer_status | 获取特定入站转移的状态 |
get_ssl_bundle | 获取 Porkbun 为域名签发的免费 SSL 套件 |
get_contacts | 获取域名的四类联系人(注册人/管理员/技术联系人/账单联系人)及其当前信息 |
get_webhook_event_types | 列出 Webhook 端点可订阅的事件类型 |
list_webhooks | 列出 Webhook 端点(URL、事件、状态、投递健康状况、密钥) |
get_webhook | 按 ID 获取单个 Webhook 端点 |
list_webhook_deliveries | 列出近期投递尝试(状态、尝试次数、HTTP、错误);约保留 30 天历史记录 |
get_webhook_delivery | 获取单次投递,包括完整的签名载荷 |
list_doc_topics | 列出 Porkbun API 文档主题(文档索引) |
read_doc | 以 Markdown 格式读取文档页面(dns、webhooks 等,或 overview/full) |
search_docs | 在完整参考文档中按关键词搜索;返回最相关的章节 |
list_doc_topics / read_doc / search_docs 工具可让 Agent 在对话中途参考 Porkbun 自己的文档(/llms Markdown 页面)——无需浏览网页,也无需 API 凭据。你可以仅为调研 API 而添加该服务,准备好执行实际操作时再提供密钥。 |
账户充值(从已保存的银行卡扣款,而非使用余额)
| 工具 | 功能 |
|---|---|
configure_auto_topup | 开启或关闭自动充值:低于 threshold_cents 时,从已保存的支付方式扣取 amount_cents。通过 API 设置的金额上限为 $500 |
top_up_account_credit | 立即从已保存的银行卡扣款并增加余额。省略 amount_cents 时使用账户设置的金额(若从未设置,则为 $50);也可传入 amount_cents(500-50000)指定单次金额。请先向用户确认金额(美元)。每天最多 5 次,每月最多 20 次,且不得超过月度支出限额 |
域名生命周期写入操作(使用账户余额)
| 工具 | 描述 |
|---|---|
register_domain | 注册新域名——先调用 check_domain 确认价格。可使用余额、直接以 USDC 支付(pay_with_usdc),或通过银行卡预授权支付(pay_with_card) |
renew_domain | 续订现有域名 |
transfer_domain | 发起转入转移(返回 transferId;需要 5-7 天) |
get_transfer_setup | 查看待处理的转入转移处于什么状态,以及正在等待什么 |
prepare_transfer | 在域名转移前,为待处理的转移创建 DNS 区域 |
start_transfer | 将待处理的转移提交给注册局(区域为空时会拒绝) |
cancel_transfer | 取消待处理的转入转移并退款 |
update_transfer_auth_code | 替换停滞转移的授权码并重新排队 |
域名设置写入操作(免费)
| 工具 | 描述 |
|---|---|
update_auto_renew | 开启或关闭自动续订 |
update_nameservers | 替换域名的名称服务器列表(完全替换,不追加) |
update_contacts | 编辑域名联系人——可修改注册人/管理员/技术联系人/账单联系人中的任意子集;更改注册人会触发向新所有者发送通知邮件。对于需要验证地址的 TLD(.de/.nrw/.uk/.us/.ca/.au/.eu/.in/.nz 系列),会验证注册人地址——使用 address_validation_choice 解决验证问题。.au 域名的注册人姓名/组织变更属于仅限网站操作的所有权转让。 |
DNS / DNSSEC / URL 和邮件转发 / Glue 写入操作(免费)
| 工具 | 描述 |
|---|---|
create_dns_record | 创建新的 DNS 记录(A、AAAA、CNAME、MX、TXT 等) |
update_dns_record | 根据 ID 更新现有 DNS 记录 |
delete_dns_record | 根据 ID 删除 DNS 记录 |
create_dnssec_record | 向注册局提交 DNSSEC DS 记录 |
delete_dnssec_record | 根据密钥标签移除 DNSSEC DS 记录 |
create_url_forward | 创建 URL 转发规则(永久/临时/掩蔽;可选 redirect_type 为 301/302/307/掩蔽) |
delete_url_forward | 根据 ID 删除 URL 转发规则 |
create_email_forward | 将域名下的地址转发到另一个邮箱;替换其他邮件服务的 MX 或重写 SPF 前会先询问(DNS_CHANGE_CONFIRMATION_REQUIRED) |
delete_email_forward | 删除邮件转发;删除最后一条转发时也会移除转发 MX/SPF |
setup_mailbox | 设置待启用的邮件托管邮箱(付费,或使用每次注册都附带的免费试用);若未提供密码,则自动生成 |
set_email_password | 更改邮箱的密码 |
create_glue_record | 创建 Glue 记录(在注册局设置主机到 IP 的映射) |
update_glue_record | 替换 Glue 记录的 IP 列表 |
delete_glue_record | 根据主机名删除 Glue 记录 |
Secure Static Hosting
| 工具 | 描述 |
|---|---|
list_hosting_plans | 列出可通过 API 订购的托管产品和套餐,包括价格(美分)、计费周期、试用时长和功能 |
create_hosting | 根据 sku(来自 list_hosting_plans)为域名开通托管服务——每个域名首次开通可享受 15 天免费试用,之后按套餐价格自动续订;取消后重新开通将从账户余额扣费(每个域名仅限一次免费试用)。将域名切换到 Porkbun NS(需满足 agree_to_nameserver_change);必须提供 acknowledged_cost。支持 dry_run |
create_mailbox | 购买并一次性完成电子邮件托管邮箱的设置(每年 $36,按年续订);cost_cents 必须匹配,dry_run 可用于报价;从账户余额扣费,或使用 pay_with_card / pay_with_usdc 付款 |
renew_mailbox | 按邮箱当前的 renewalPrice 为其续订一年(已设置的邮箱也会自动续订);从账户余额扣费,或使用 pay_with_card / pay_with_usdc 付款 |
get_hosting | 获取域名的托管状态(套餐、试用、到期时间、自动续订) |
deploy_site | 将静态文件(base64 格式,每次调用不超过 10MB)上传到域名的托管空间 |
list_hosting_files | 列出域名托管空间指定路径下的文件 |
delete_hosting_file | 删除域名托管空间中的文件(或空目录) |
make_hosting_dir | 在域名托管空间中创建目录(以及缺失的父目录)(部署会自动创建文件路径中的目录) |
delete_hosting | 取消域名的托管服务 |
Cloud for WordPress
使用 CLOUDWORDPRESS… sku 调用 create_hosting,即可开通托管式 WordPress 站点,而非静态托管(文件工具不适用——请通过 WordPress 管理)。
| 工具 | 描述 |
|---|---|
create_wp_credentials | 创建一个 WordPress 应用程序密码(仅返回一次),以便 Agent 通过 /wp-json/ 和 HTTP Basic 操作站点。默认使用专用的最小权限 editor 用户;使用 administrator 需要明确确认(该用户可以安装插件,即运行代码) |
list_wp_credentials | 列出站点上的应用程序密码(仅限元数据——无法再次读取密码) |
delete_wp_credentials | 按 uuid 撤销一个应用程序密码,或撤销所有密码 |
Cloudflare 连接(将域名迁移到客户自己的 Cloudflare 账户)
连接 Cloudflare 账户本身需要由人工完成——必须在浏览器中完成 Cloudflare 的授权页面——因此,get_cloudflare_connection 会提供一个 URL 供你展示给用户,然后作为轮询目标。之后的所有操作均可自动完成。
get_cloudflare_connection— 查看是否已连接;如果未连接,查看应将人工引导至何处(轮询此工具)list_cloudflare_inventory— 列出所有域名及其是否符合条件和通俗易懂的原因preview_cloudflare_move— 准确预览迁移会复制或丢弃哪些记录,不会将任何内容加入队列connect_domains_to_cloudflare— 将一个或多个域名加入队列(异步:返回 queued,绝不会返回 connected)get_cloudflare_queue/get_cloudflare_domain_status— 查看进度和审计记录retry_cloudflare_domain/rollback_cloudflare_domain— 将失败的域名重新加入队列,或恢复 Porkbun 名称服务器get_cloudflare_records/create_cloudflare_record/edit_cloudflare_record/delete_cloudflare_record— 管理域名迁移后实际响应请求的区域中的 DNSset_cloudflare_proxy— 按记录开启或关闭橙色云朵(迁移时始终仅导入 DNS,不启用代理)get_cloudflare_zone— 查看 Cloudflare 自身的区域状态,以及名称服务器偏差检测结果get_cloudflare_zone_settings/set_cloudflare_zone_settings— 管理 SSL 模式等设置disconnect_cloudflare— 撤销授权(已迁移的域名仍可正常运行)
沙盒 / 测试模式
使用沙盒 API 密钥(公钥前缀为 pk1_sb_,密钥前缀为 sk1_sb_),上述每个工具都会在隔离的测试环境中运行——使用同一服务,只需更换密钥即可。注册、续费、转移、DNS、联系人、胶水记录和 DNSSEC 均会在独立的沙盒数据存储中模拟:不会执行真实的注册局操作、不会更改 DNS、不会签发证书,也不会产生费用。你的沙盒账户初始包含虚拟账户余额,可用性和价格与真实目录一致,且每个响应都包含 "sandbox": true。在 porkbun.com/account/api 创建沙盒密钥。或者使用 create_sandbox_key 立即生成一个——无需注册,无需凭据。(托管和电子邮件端点不会被模拟,使用沙盒密钥时会返回 SANDBOX_UNSUPPORTED。)
| 工具 | 描述 |
|---|---|
request_api_key | 开始创建一个实时 API 密钥,由账户持有人在浏览器中批准(可选择仅授予部分权限);返回批准链接 |
retrieve_api_key | 批准后,一次性获取新的密钥对 |
create_sandbox_key | 无需凭据——立即生成一个临时沙盒密钥对(pk1_sb_/sk1_sb_,含 $1000 虚拟余额),让 Agent 无需任何密钥即可开始测试。可选的 scopes(例如 ["dns"])可生成受限密钥,用于测试最小权限配置 |
sandbox_topup | 仅限沙盒——增加虚拟账户余额(默认 $1000),以便余额耗尽后仍可继续测试付费操作 |
sandbox_reset | 仅限沙盒——清除沙盒账户中的域名、DNS、订单和余额,并重新发放 $1000,以便在测试运行之间恢复干净状态 |
sandbox_trigger_webhook | 仅限沙盒——向已注册的端点发送任意类型的示例签名 Webhook 事件(包括由 cron 触发的 domain.expiring),按需测试你的处理程序和签名验证 |
模拟服务器(无需凭据)
mock_call 可为任何端点返回符合架构的示例响应,无需密钥——无需进行任何设置。传入类似 domain/listAll 或 dns/create/example.com 的 path(省略则列出所有可模拟的端点),或设置 error: true 以获取错误响应格式。响应不会涉及任何数据存储,且与实时 API 的格式完全一致,因此你可以在获取凭据之前构建和测试客户端代码。
| 工具 | 描述 |
|---|---|
mock_call | 无需凭据——为任何端点返回符合架构的示例响应(path 对应实际路由;设置 error: true 可获取错误响应格式;省略 path 则列出所有可模拟的端点) |
Webhook 写入操作(免费)
| 工具 | 描述 |
|---|---|
create_webhook | 注册一个 HTTPS 端点以接收签名事件负载;返回签名密钥 |
update_webhook | 更改端点的 URL、事件或状态(ACTIVE/DISABLED) |
rotate_webhook_secret | 为端点生成新的签名密钥 |
test_webhook | 发送 webhook.test 事件,以确认端点可访问且签名验证正常 |
resend_webhook | 重新排队发送过去的投递(复用原始事件 ID) |
delete_webhook | 删除 Webhook 端点 |
订阅的事件发生时,Porkbun 会向你的端点 POST 签名 JSON 负载(domain.registered、domain.renewed、domain.transfer.completed、domain.expiring、dns.record.created|updated|deleted、cloudflare.connect.completed|failed、account.verification.code_sent|completed;各事件的字段参见:https://porkbun.com/llms/webhooks)。验证 X-Porkbun-Signature 标头——其值为 sha256= 加上 {timestamp}.{rawBody} 的 HMAC-SHA256,使用端点密钥计算,其中 {timestamp} 来自 X-Porkbun-Webhook-Timestamp 标头。
Claude 插件
plugin/ 是一个 Claude 插件(claude.ai、Cowork 和 Claude Code):托管连接器 https://mcp.porkbun.com/mcp/no-purchases,以及四个技能:
publish-website(将 Claude 构建的网站发布到 Porkbun Secure Static
Hosting,而不是提供上传步骤)、change-dns-safely、diagnose-domain
(网站宕机、邮件退回、DNS 未更新)和 move-dns-to-porkbun。它不包含任何代码。可在 Claude Code 中使用 /plugin marketplace add oborseth/Porkbun-MCP
然后运行 /plugin install porkbun@porkbun 安装(仓库根目录包含一个市场清单文件
.claude-plugin/marketplace.json,指向 ./plugin),也可以使用 claude --plugin-dir ./plugin 试用工作副本。每次更改此文件夹时,都要提高
plugin/.claude-plugin/plugin.json 中的 version
值。
Gemini CLI
gemini extensions install https://github.com/oborseth/Porkbun-MCP
添加托管服务(位于仓库根目录的 gemini-extension.json)和包含使用规则的简短
GEMINI.md。然后运行 /mcp auth porkbun,使用你的 Porkbun 账户登录。保持
gemini-extension.json 中的 version 与 package.json 一致:扩展程序库会获取已标记的版本。
安装
你需要 Node.js 18 或更高版本。
npx -y @porkbunllc/mcp-server
这会按需下载并运行最新版本,无需全局安装。
配置 MCP 客户端
Claude Desktop
将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"porkbun": {
"command": "npx",
"args": ["-y", "@porkbunllc/mcp-server"],
"env": {
"PORKBUN_API_KEY": "pk1_your_public_key_here",
"PORKBUN_SECRET_API_KEY": "sk1_your_secret_key_here"
}
}
}
}
重启 Claude Desktop。工具选择器中应会显示 Porkbun 工具。
仅文档,无需密钥: 文档工具(
search_docs、read_doc、list_doc_topics)无需凭据即可使用,因此如果只想用此服务进行 API 研究,可以完全省略env块。在添加密钥之前,经过身份验证的工具会返回清晰的「设置 PORKBUN_API_KEY」提示。
Cursor / Cline / Continue
Cursor,一键安装: 将 Porkbun 添加到 Cursor 会添加托管服务(https://mcp.porkbun.com/mcp);首次使用时使用 Porkbun 登录,无需 API 密钥。如果此处的链接无法打开(某些网站会移除 cursor:// 链接),请使用 https://porkbun.com/mcp 上的按钮。
对于本地服务,大多数支持 MCP 的编辑器都使用与上述相同的 mcpServers 配置块。确切位置请参阅客户端文档。安装它的 Agent 可以参阅 llms-install.md。
获取 API 密钥
在 porkbun.com/account/api 创建 API 密钥。你需要公钥(pk1_…)和密钥(sk1_…)。
也可以让助手获取密钥:服务无需密钥即可启动,request_api_key(无需凭据)会返回一个链接,你可以通过该链接批准创建新密钥,并可选择仅授予部分权限;随后 retrieve_api_key 会向助手提供一次密钥对。将其填入下方配置并重启服务。
默认情况下,API 访问权限按域名单独选择加入。若要使用 API 管理所有域名,请在同一设置页面启用「Opt In All Domains」开关。否则,你需要在「Domain Management」下为每个域名单独启用 API 访问权限。
推荐:限制 Agent 使用的密钥
每个 API 密钥都支持三项可选限制。创建密钥时可在 porkbun.com/account/api 设置,也可之后点击密钥旁边的齿轮图标设置:
- 允许的 IP — 每行一个条目;支持纯 IPv4/IPv6 地址以及 CIDR 范围(
198.51.100.0/24、2001:db8::/32)。来自其他 IP 的请求会在运行任何其他检查前失败,并返回 HTTP 403IP_NOT_ALLOWED。 - 允许的域名 — 每行一个条目,精确匹配。针对列表中未包含的域名执行操作会失败,并返回 HTTP 403
DOMAIN_NOT_ALLOWED。 - 权限 — 完全访问、只读、可管理,但不可购买,或自定义范围(
read、dns、domains、email、hosting、purchase、funding、account)。超出权限范围的工具调用会失败,并返回 HTTP 403INSUFFICIENT_SCOPE,且不会产生任何更改;ping会显示密钥的scopes。
字段留空 = 不设限制(与当前行为一致)。向 MCP 服务提供密钥时,建议采用以下做法:
- 创建一个专供 Agent 使用的新密钥(不要使用主密钥)。
- 列出 Agent 应管理的特定域名。
- 仅授予其所需权限(通常为可管理,但不可购买)。
- 如果知道 Agent 的出口 IP,也将其列出。
这样一来,意外泄露密钥造成的影响范围就会从“账户上的任何操作”缩小到“来自此 IP、针对这些域名的操作”。
环境变量
| 变量 | 必需 | 用途 |
|---|---|---|
PORKBUN_API_KEY | 用于实时操作 | 你的 Porkbun 公共 API 密钥。省略后只能使用无需凭据的工具(文档、create_sandbox_key、request_api_key / retrieve_api_key)。 |
PORKBUN_SECRET_API_KEY | 用于实时操作 | 你的 Porkbun 私有 API 密钥。省略后只能使用无需凭据的工具(文档、create_sandbox_key、request_api_key / retrieve_api_key)。 |
PORKBUN_BASE_URL | 否 | 覆盖 API 基础 URL(例如,用于针对 api-betamax.porkbun.com/api/json/v3 进行测试) |
PORKBUN_DOCS_BASE | 否 | 覆盖 *_doc(s) 工具使用的文档主机(默认为 https://porkbun.com) |
PORKBUN_X402_PRIVATE_KEY | 否 | 持有 USDC 的 Base 钱包私钥(0x…)。让购买工具能通过 pay_with_usdc: true 在一次调用中直接付款。请使用仅持有你愿意花费金额的钱包。 |
PORKBUN_X402_MAX_CENTS | 否 | 服务端将签署的单笔 USDC 付款上限,以美分为单位(默认为 5000,即 50 美元)。 |
本地开发
git clone https://github.com/oborseth/Porkbun-MCP.git
cd Porkbun-MCP
npm install
npm run build
npm start # or: node dist/index.js
该服务通过标准输入输出使用 JSON-RPC 2.0。从 shell 进行冒烟测试:
(printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}') \
| PORKBUN_API_KEY=pk1_… PORKBUN_SECRET_API_KEY=sk1_… node dist/index.js
直接使用 USDC 支付购买费用(x402)
register_domain、renew_domain、transfer_domain、buy_closeout、create_hosting、create_mailbox 和 renew_mailbox 支持 pay_with_usdc: true,可完全跳过账户余额。API 会返回 x402 付款要求(在 Base 网络上使用 USDC,金额为确切价格),并且:
- 设置了
PORKBUN_X402_PRIVATE_KEY时,此服务会为其签名,并在同一次工具调用中完成购买。它只会对价格与报价完全一致、以 Base 网络上的 USDC 支付的条款签名,且金额绝不会超过PORKBUN_X402_MAX_CENTS; - 未设置该变量时(以及始终如此的托管连接器,因为它不持有任何人的密钥),工具会返回包含
checkoutId、x402Url和payUrl的status: PAYMENT_REQUIRED。使用钱包工具支付x402Url(例如 Coinbase 的awal x402 pay <x402Url> --scheme auth-capture),或让用户通过payUrl页面付款,然后再次调用同一工具并传入usdc_checkout_id。
如果购买在付款后失败,款项不会退回钱包,而是保留为 Porkbun 账户余额(错误信息会说明这一点并显示新的余额),可用于重试购买或支付其他费用。指南:使用 USDC 付款(x402)。
使用银行卡支付购买,先进行预授权(Stripe MPP)
同样的五个工具支持为使用 Stripe Link Agent 钱包的用户设置 pay_with_card: true。工具会返回 status: PAYMENT_REQUIRED,其中包含一次性 payUrl 和 cardPaymentId;使用 MPP 钱包工具支付该链接(link-cli mpp pay <payUrl> -X POST --context "...";用户在 Link 中批准),这只会对银行卡进行预授权。再次调用同一工具并传入 card_payment_id:如果购买成功,就会扣款;如果失败,则会解除预授权(不扣款)。指南:使用用户的银行卡支付(MPP)。
金额参数以美分为单位,并明确说明
每个金额参数都以 _cents 结尾,接受整数形式的美分:cost_cents: 1108 表示 $11.08,amount_cents: 803 表示 $8.03。参数名中包含单位,是因为有些客户端会根据原始参数生成确认提示词,而单独的 amount: 803 曾被显示为“$803”。旧名称(cost、amount、threshold、acknowledged_cost、price_min、price_max)仍会以相同单位接受;如果同时传入新旧名称且值不同,请求会在到达 API 前被拒绝。
可靠性
写操作会自动附加每次调用专用的 Idempotency-Key 标头。24 小时内重试的调用会返回缓存的响应,因此 Agent 可以在发生网络错误时安全重试,不会重复扣款或重复注册。
隐私
此 MCP 服务是一个轻量客户端,在本地运行(在你的机器上或你托管它的任何位置),并通过 HTTPS 将请求直接转发至 Porkbun API。它不会自行收集任何数据:
- 发送内容及接收方。 你的 API 密钥/密钥和每次工具调用的参数只会发送至
https://api.porkbun.com(对于无需凭据的文档和模拟工具,则发送至https://porkbun.com)。不会发送到其他任何地方。 - 存储。 服务会在进程运行期间将你的凭据保存在内存中(从环境变量读取);不会将它们写入磁盘、记录到日志或缓存你的数据。
- 托管连接器。 在
mcp.porkbun.com上,同一代码运行于 Porkbun 的基础设施中。它不会存储 API 密钥:每个请求都会携带用户的 OAuth 访问令牌(或者,对于无法使用 OAuth 的客户端,携带用户的 API 密钥对),并将其转发至 Porkbun API;令牌只会在内存中短暂保留(按哈希值索引,有效期为 30 秒)。请求日志会记录方法、路径、状态和耗时,绝不会记录令牌、密钥或请求正文。 - 无遥测。 此连接器不会进行分析、跟踪或与第三方共享数据。
- 通过此连接器访问的数据(域名、DNS、联系人、账单等)属于你的 Porkbun 账户数据,由 Porkbun 按其政策处理。
完整的数据处理、保留、第三方及联系信息,请参阅 Porkbun 的隐私政策:https://porkbun.com/legal/agreement/privacy_policy
许可证
MIT
链接
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。