返回 MCP 目录
public公开dns本地运行

porkbun-mcp

Porkbun DNS API的MCP服务器,提供域名、DNS记录、DNSSEC和SSL证书的管理功能,支持只读和读写两种安全模式。

article

README

🚀 porkbun-mcp

porkbun-mcp 是一个适用于 Porkbun DNS API 的 MCP 服务器。借助模型上下文协议,它能够管理 DNS 记录、域名、DNSSEC、SSL 证书等内容。

CI codecov PyPI version Python 3.13+ License: MIT

🚀 快速开始

你可以直接使用 uvx 运行该项目(无需安装):

uvx porkbun-mcp

SSE 传输

uvx porkbun-mcp --transport sse

✨ 主要特性

  • 支持通过模型上下文协议管理 Porkbun 的 DNS 记录、域名、DNSSEC、SSL 证书等。
  • 具备只读模式,保障操作安全,可按需启用写操作。
  • 提供多种 MCP 客户端配置方式,方便集成到不同的开发环境中。
  • 拥有丰富的工具集,涵盖 DNS、域名、DNSSEC、SSL、定价等多个方面的操作。
  • 提供预定义的工作流,指导常见的 DNS 操作。

📦 安装指南

配置 Porkbun API 凭证

将你的 Porkbun API 凭证设置为环境变量:

export PORKBUN_API_KEY="pk1_..."
export PORKBUN_SECRET_KEY="sk1_..."

你可以从 Porkbun API 访问页面 获取 API 密钥。

只读模式(默认)

为了安全起见,porkbun-mcp 默认以只读模式运行。在显式启用之前,写操作(创建、编辑、删除)将返回错误。

启用写操作

你可以通过以下两种方式启用写操作:

环境变量方式:

export PORKBUN_GET_MUDDY=true

CLI 标志方式:

uvx porkbun-mcp --get-muddy

💻 使用示例

MCP 客户端配置

Claude Desktop

~/.config/claude/claude_desktop_config.json 中添加以下内容:

{
  "mcpServers": {
    "porkbun": {
      "command": "uvx",
      "args": ["porkbun-mcp", "--get-muddy"],
      "env": {
        "PORKBUN_API_KEY": "pk1_...",
        "PORKBUN_SECRET_KEY": "sk1_..."
      }
    }
  }
}

⚠️ 重要提示:为了安全起见,建议在只读模式下移除 args 中的 --get-muddy

Claude Code / Codex

~/.claude/settings.json 中添加以下内容:

{
  "mcpServers": {
    "porkbun": {
      "command": "uvx",
      "args": ["porkbun-mcp", "--get-muddy"],
      "env": {
        "PORKBUN_API_KEY": "pk1_...",
        "PORKBUN_SECRET_KEY": "sk1_..."
      }
    }
  }
}

VS Code

在你的工作区的 .vscode/mcp.json 中添加以下内容(或者使用 MCP: Add Server 命令):

{
  "servers": {
    "porkbun": {
      "command": "uvx",
      "args": ["porkbun-mcp", "--get-muddy"],
      "env": {
        "PORKBUN_API_KEY": "pk1_...",
        "PORKBUN_SECRET_KEY": "sk1_..."
      }
    }
  }
}

OpenCode

在你的 opencode.json 配置文件中添加以下内容:

{
  "mcp": {
    "porkbun": {
      "type": "local",
      "command": ["uvx", "porkbun-mcp", "--get-muddy"],
      "environment": {
        "PORKBUN_API_KEY": "pk1_...",
        "PORKBUN_SECRET_KEY": "sk1_..."
      }
    }
  }
}

📚 详细文档

可用工具

DNS

  • dns_list - 列出域名的所有 DNS 记录
  • dns_get - 通过 ID 获取特定的 DNS 记录
  • dns_get_by_name_type - 通过子域名和类型获取 DNS 记录
  • dns_create - 创建新的 DNS 记录
  • dns_edit - 通过 ID 编辑 DNS 记录
  • dns_edit_by_name_type - 通过子域名和类型编辑 DNS 记录
  • dns_delete - 通过 ID 删除 DNS 记录
  • dns_delete_by_name_type - 通过子域名和类型删除 DNS 记录

域名

  • domains_list - 列出账户中的所有域名
  • domains_get_nameservers - 获取域名的名称服务器
  • domains_update_nameservers - 更新域名的名称服务器
  • domains_get_url_forwards - 获取 URL 转发规则
  • domains_add_url_forward - 添加 URL 转发规则
  • domains_delete_url_forward - 删除 URL 转发规则
  • domains_check_availability - 检查域名可用性和定价
  • domains_get_glue_records - 获取域名的胶水记录

DNSSEC

  • dnssec_list - 列出域名的 DNSSEC 记录
  • dnssec_create - 创建 DNSSEC 记录
  • dnssec_delete - 删除 DNSSEC 记录

SSL

  • ssl_retrieve - 获取域名的 SSL 证书捆绑包

定价

  • pricing_get - 获取所有可用 TLD 的定价

实用工具

  • ping - 测试 API 连接性并获取你的公共 IP

预定义工作流

预定义的工作流可指导常见的 DNS 操作:

  • dns_setup - 为新服务器设置基本 DNS(根 A + www 记录)
  • dns_audit - 审核 DNS 配置是否存在问题(重复记录、缺少电子邮件记录、低 TTL 等)
  • email_dns_setup - 配置电子邮件 DNS(MX、SPF、DKIM、DMARC)
  • update_server_ip - 在迁移到新服务器 IP 时更新 DNS 记录
  • subdomain_setup - 为新子域名创建 A/CNAME 记录

🔧 技术细节

开发

# 安装依赖
uv sync --dev

# 运行所有检查
make check

# 单独的命令
make lint       # ruff 检查
make format     # ruff 格式化
make typecheck  # ty 类型检查
make test       # 带覆盖率的 pytest 测试

📄 许可证

本项目采用 MIT 许可证。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端