Namecheap MCP服务器
特性
| 工具 | 说明 |
|---|---|
list_domains | 列出帐户上的所有域及其到期日期和状态 |
get_domain_info | 获取域的详细信息,包括DNS详细信息和名称服务器 |
get_dns_hosts | 获取域的所有DNS主机记录 |
get_nameservers | 获取为域配置的名称服务器 |
add_dns_record | 添加单个DNS记录(保留现有记录) |
remove_dns_record | 按名称、类型和可选地址删除匹配的DNS记录 |
set_dns_hosts | 更换 全部 域的DNS记录(谨慎使用) |
set_nameservers | 设置自定义名称服务器或恢复到Namecheap默认值 |
编写工具(add_dns_record, remove_dns_record, set_dns_hosts, set_nameservers)在响应中始终返回之前的状态,以便可以恢复更改。
支持的记录类型: A, AAAA, CNAME, MX, MXE, TXT, URL, URL301, FRAME.
先决条件
- Java 21+
- Maven 3.6+
- Namecheap帐户 API访问已启用
- 在Namecheap的API设置中将您的服务器的IP列入白名单
设置
1.建造
git clone https://github.com/wrxck/namecheap-mcp.git
cd namecheap-mcp
mvn clean package这会产生一个超级罐子 target/namecheap-mcp-1.0.0.jar.
2.初始化
java -jar target/namecheap-mcp-1.0.0.jar --init这将引导您完成两个步骤:
- API证书 -提示您的Namecheap API用户、密钥和白名单IP。已保存到
~/.namecheap-mcp/config.properties随着600权限。 - 克劳德代码注册 --通过以下方式自动向Claude Code注册服务器
claude mcp add.
init是幂等的。如果配置已存在,则直接跳到注册。如果已经注册,它也会跳过。可以安全地重新运行。
如果Claude Code不在您的 PATH,传递二进制位置:
java -jar target/namecheap-mcp-1.0.0.jar --init --claude-binary ~/.local/bin/claude如果自动注册失败(例如CI环境,未安装Claude),它将打印手动命令:
claude mcp add --scope user --transport stdio namecheap -- \
java -jar /path/to/namecheap-mcp-1.0.0.jar注册后重新启动Claude Code。8个Namecheap工具将立即可用。
使用示例
一旦注册,你可以问克劳德:
- “列出我的域名”
- “显示DNS记录,例如.com”
- “为添加TXT记录
_dmarc.example.com有价值v=DMARC1; p=reject" - “点
www.example.com到1.2.3.4" - “删除的CNAME记录
old.example.com" - “为example.com设置了哪些名称服务器?”
安全
API返回的DNS数据通过LLM的上下文窗口。域名是攻击者可控的(例如,有人可以注册 IGNORE-ALL-INSTRUCTIONS.com),因此服务器应用与 Gmail MCP服务器:
- 随机内容边界 --每个读取工具响应都会生成一个加密随机边界字符串(通过
SecureRandom).不受信任的字段(domainName,name,address,value,host)用此边界包裹,因此LLM可以将DNS数据与系统结构区分开。边界是不可预测的,因此攻击者无法将其嵌入域名中以逃离内容区域。 - 安全背景序言 --每个读取工具响应都包含一个前导文本块,解释边界标记并指示LLM将有界内容仅视为数据。
- XXE预防 --XML解析器禁用DTD、外部通用实体、外部参数实体和外部DTD/模式访问。这可以防止来自恶意API响应的XML外部实体攻击。
- 输入验证 --在构建URL之前,域SLD/TLD会根据严格的规则进行验证。记录类型仅限于已知的枚举。验证A/AAAA记录的IP地址。TTL和MX优先级范围被强制执行。
- 速率限制 -客户端滑动窗口将请求限制为20分钟和700小时,与Namecheap的API限制相匹配。
- API密钥保护 --配置目录使用
rwx------权限,配置文件使用rw-------。API密钥从未被记录。
编写工具响应(set_dns_hosts, add_dns_record, remove_dns_record, set_nameservers)使用没有边界的纯JSON,因为它们只包含系统控制的成功/失败数据。
建筑
Claude Code namecheap-mcp.jar Namecheap API
|
~/.namecheap-mcp/
config.properties- 运输 --stdio(Claude Code将服务器作为子进程生成)
- 认证 -静态API密钥+IP白名单(无OAuth,无令牌刷新)
- API格式 --Namecheap使用XML响应;用强硬的语气解析
DocumentBuilderFactory - 日志记录 --所有日志都转到stderr(stdout保留给MCP JSON-RPC)
配置
凭据存储在 ~/.namecheap-mcp/ 具有受限权限(rwx------):
~/.namecheap-mcp/
config.properties # API credentials (created by --init)配置文件包含:
| 属性 | 描述 |
|---|---|
apiUser | 你的名字廉价用户名 |
apiKey | 您的Namecheap API密钥 |
userName | 通常与 apiUser |
clientIp | 您的白名单IP地址 |
useSandbox | true 使用沙箱API(默认 false) |
发展
# build
mvn clean package
# run tests
mvn test
# run init
java -jar target/namecheap-mcp-1.0.0.jar --init
# run server (blocks on stdio — use with Claude Code or an MCP client)
java -jar target/namecheap-mcp-1.0.0.jar项目结构
src/main/java/com/namecheap/mcp/
NamecheapMcpServer.java # Entry point, server setup
NamecheapTools.java # MCP tool definitions (8 tools)
NamecheapClient.java # HTTP client, XML parsing, API calls
NamecheapAuth.java # Config loading, --init flow, Claude registration
ContentSanitizer.java # Prompt injection mitigations
RateLimiter.java # Sliding window rate limiter
ResultHelper.java # Response serialisation helpers
src/test/java/com/namecheap/mcp/
ContentSanitizerTest.java # Boundary wrapping, field sanitisation
RateLimiterTest.java # Rate limit enforcement
NamecheapClientTest.java # Input validation, domain parsing
NamecheapMcpServerTest.java # Response pipeline (sanitised vs plain JSON)