使用说明
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_KEYPORKBUN_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客户端中配置后,从以下步骤开始:
pingpricing_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_querydns_upsertdomain_health_checkdns_removedomain_redirect_ensuredomain_cutover_webdns_batch_apply
初学者助手:
dns_auditdns_setupemail_dns_setupupdate_server_ipsubdomain_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之前。
许可证
麻省理工学院
