关于 Domeneshop
Domeneshop 是通过 API 让助手管理 Domeneshop 账户的 MCP 服务,涵盖域名、DNS、HTTP 转发、动态 DNS 和发票,并可配置只读访问和工具筛选。
主要功能
- 01查询和列出域名
- 02管理 DNS 记录
- 03管理 HTTP 转发
- 04更新动态 DNS
- 05查询和筛选发票
- 06只读模式与工具允许列表
适用场景
- 01查看域名及续费信息
- 02添加或修改 DNS 记录
- 03配置域名 HTTP 转发
- 04更新动态 DNS 并检查发票
MCP 相关
它通过 MCP stdio 将 Domeneshop API 操作作为工具提供给兼容客户端。只读模式和工具允许列表可限制可用工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y domeneshop-mcpDOMENESHOP_API_TOKEN密钥API token from https://www.domeneshop.no/admin?view=apiDOMENESHOP_API_SECRET密钥The matching API secretDOMENESHOP_READ_ONLYSet to true to expose only read-only toolsDOMENESHOP_TOOLSComma-separated allowlist of tool names to exposeDOMENESHOP_DISABLED_TOOLSComma-separated tool names to hideDOMENESHOP_TIMEOUT_MSPer-request timeout in millisecondsDOMENESHOP_DEBUGSet to true to log each API request to stderr本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
17收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| filter | string | 否 | 仅返回名称包含此文本的域名,例如 '.no' |
详细介绍
Quick start · Client setup · Tools · Access control · Troubleshooting · Get API credentials
一个 MCP 服务,可将 Domeneshop API 转换为助手可调用的工具。 API 提供的所有操作都已覆盖——涵盖域名、DNS、HTTP 转发、动态 DNS 和发票等领域的 17 个工具。
它通过 stdio 使用 MCP,因此适用于任何兼容 MCP 的客户端:Claude Code、Claude Desktop、Cursor、VS Code、Codex、Windsurf、Cline 等。
初次接触 MCP?从这里开始
MCP(Model Context Protocol)是一种开放标准,可让 AI 应用调用外部工具。这个软件包是一个 MCP 服务: 一个由 AI 应用在后台启动并与之通信的小程序。注册后,你只需用日常语言提出请求——“将 blog.example.no 指向 203.0.113.10”——助手就会选择合适的工具,向你展示即将执行的操作,并在更改任何内容前征求你的同意。
你无需自行运行该服务,也不需要知道工具名称。你需要:
- Domeneshop API 令牌和密钥:一对允许程序操作你账户的密钥。请像对待密码一样妥善保管。
- MCP 客户端:你用来聊天的应用。下文以 Claude Code 为例;其他客户端也可以(请参阅客户端设置)。
- Node.js 20.3+(下载 LTS 版本)或 Homebrew。Claude Desktop 捆绑包无需此项。
如果你不确定是否要让助手更改正在使用的 DNS,可以从只读模式开始:它可以查看所有内容,但无法进行更改。
快速开始
你需要一个 Domeneshop 账户,以及 Node.js 20.3 或更高版本(用于 npx)或
Homebrew。
1. 创建 API 令牌和密钥,访问 domeneshop.no/admin?view=api。
2. 在 Claude Code 中注册该服务, 将占位符替换为你的令牌和密钥:
claude mcp add domeneshop \
--env DOMENESHOP_API_TOKEN=<your-api-token> \
--env DOMENESHOP_API_SECRET=<your-api-secret> \
-- npx -y domeneshop-mcp
添加 --env DOMENESHOP_READ_ONLY=true,即可仅启用只读工具;添加
--scope user,即可让它在每个项目中都可用(默认仅在当前项目中可用)。
3. 提出请求。 启动新的 claude 会话,并尝试说“列出我的
Domeneshop 域名”。在 Claude Code 中运行 /mcp 可查看服务是否已连接。
使用 Homebrew 而非 npx? 安装一次,然后在第 2 步注册二进制文件时,将
-- npx -y domeneshop-mcp 替换为 -- domeneshop-mcp:
brew install martinzachariassen/tap/domeneshop-mcp
使用其他客户端? Claude Desktop 提供一键安装包,无需 Node.js;Cursor 和 VS Code 则在本页顶部提供一键安装按钮。Codex 和其他客户端需要添加一小段配置。请参阅 客户端设置。
你可以提出哪些请求
| 领域 | 示例提示词 |
|---|---|
| 域名 | “我的账户中有哪些域名?它们何时续费?” |
| DNS | “显示 example.no 的所有 DNS 记录” |
| DNS | “将 blog.example.no 指向 203.0.113.10” |
| DNS | “将 example.no 的 www 记录 TTL 缩短为 5 分钟” |
| DNS | “添加 Google 提供给我的域名验证 TXT 记录” |
| DNS | “在 example.no 上设置 Fastmail 的 MX 记录” |
| 转发 | “将 old.example.no 转发到 https://example.no” |
| 动态 DNS | “将 home.example.no 更新为我当前的 IP” |
| 发票 | “列出我未支付的 Domeneshop 发票” |
客户端设置
该服务由客户端启动,无需手动运行。它需要两个环境变量:DOMENESHOP_API_TOKEN 和
DOMENESHOP_API_SECRET;可选环境变量列于配置下。
大多数客户端都使用相同的标准配置。将占位符替换为你的令牌和密钥;如果文件中已列出其他服务,请将
"domeneshop" 条目添加到现有的 "mcpServers" 对象中:
{
"mcpServers": {
"domeneshop": {
"command": "npx",
"args": ["-y", "domeneshop-mcp"],
"env": {
"DOMENESHOP_API_TOKEN": "<your-api-token>",
"DOMENESHOP_API_SECRET": "<your-api-secret>"
}
}
}
}
大多数客户端还可以将服务限定为仅在当前项目中使用,或设为全局可用,通常只需选择要写入的配置文件。下方的配置片段会在适用之处注明相关说明。
Claude Code
使用快速入门中的 CLI 命令。默认使用
--scope local,仅对你和此项目可见。使用 --scope project 可改为写入
<your-project>/.mcp.json,并通过版本控制共享;使用 --scope user 则适用于你账户下的所有项目。
你也可以将标准配置作为原始 JSON 传入:
claude mcp add-json domeneshop '{"command":"npx","args":["-y","domeneshop-mcp"],"env":{"DOMENESHOP_API_TOKEN":"<your-api-token>","DOMENESHOP_API_SECRET":"<your-api-secret>"}}'
或者直接将标准配置写入 <your-project>/.mcp.json。
claude mcp list 会显示已注册的服务及其连接状态。
Claude Desktop
最简单的方式是一键安装包,无需 Node.js:
- 从最新版本下载
domeneshop-mcp-<version>.mcpb。 - 打开它(双击,或将其拖入 Claude Desktop)。
- 粘贴你的令牌和密钥,可选开启只读模式,然后安装。
Claude Desktop 会安全地存储凭据。
若要手动配置,请将标准配置添加到 claude_desktop_config.json。可通过“设置” →“开发者”→“编辑配置”找到该文件,然后重启 Claude Desktop:
| 平台 | 完整路径 |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux(非官方构建) | ~/.config/Claude/claude_desktop_config.json |
Cursor
该按钮会使用占位凭据安装服务。Cursor 无法提示你输入凭据,因此安装后请打开 设置 → MCP,编辑 domeneshop 条目,并将 <your-api-token> 和 <your-api-secret> 替换为你自己的值。
若要手动设置,请将标准配置添加到 mcp.json 文件:
| 作用范围 | 完整路径 |
|---|---|
| 仅此项目 | <your-project>/.cursor/mcp.json |
| 所有项目(macOS/Linux) | ~/.cursor/mcp.json |
| 所有项目(Windows) | %USERPROFILE%\.cursor\mcp.json |
VS Code (GitHub Copilot)
[](https://insiders.vscode.dev/redirect/mcp/install?name=domeneshop&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22domeneshop_api_token%22%2C%22description%22%3A%22Domeneshop%20API%20token%22%2C%22password%22%3Atrue%7D%2C%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22domeneshop_api_secret%22%2C%22description%22%3A%22Domeneshop%20API%20secret%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22domeneshop-mcp%22%5D%2C%22env%22%3A%7B%22DOMENESHOP_API_TOKEN%22%3A%22%24%7Binput%3Adomeneshop_api_token%7D%22%2C%22DOMENESHOP_API_SECRET%22%3A%22%24%7Binput%3Adomeneshop_api_secret%7D%22%7D%7D) [](https://insiders.vscode.dev/redirect/mcp/install?name=domeneshop&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22domeneshop_api_token%22%2C%22description%22%3A%22Domeneshop%20API%20token%22%2C%22password%22%3Atrue%7D%2C%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22domeneshop_api_secret%22%2C%22description%22%3A%22Domeneshop%20API%20secret%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22domeneshop-mcp%22%5D%2C%22env%22%3A%7B%22DOMENESHOP_API_TOKEN%22%3A%22%24%7Binput%3Adomeneshop_api_token%7D%22%2C%22DOMENESHOP_API_SECRET%22%3A%22%24%7Binput%3Adomeneshop_api_secret%7D%22%7D%7D&quality=insiders)这些按钮会将服务安装到用户配置中。随后,VS Code 会提示你输入 token 和 secret,并安全地存储它们,因此不会以明文形式写入配置文件。
如果要手动设置,请注意,VS Code 使用 servers 键而不是 mcpServers,并且要求显式指定 type。仅针对本项目,请将其添加到 <your-project>/.vscode/mcp.json:
{
"servers": {
"domeneshop": {
"type": "stdio",
"command": "npx",
"args": ["-y", "domeneshop-mcp"],
"env": {
"DOMENESHOP_API_TOKEN": "<your-api-token>",
"DOMENESHOP_API_SECRET": "<your-api-secret>"
}
}
}
}
若要应用于每个项目,请运行命令面板操作 MCP: Open User Configuration 并在那里添加相同的代码块,或者用一行命令注册:
code --add-mcp '{"name":"domeneshop","command":"npx","args":["-y","domeneshop-mcp"],"env":{"DOMENESHOP_API_TOKEN":"<your-api-token>","DOMENESHOP_API_SECRET":"<your-api-secret>"}}'
Codex
Codex CLI 从配置文件中的 mcp_servers 读取 MCP 服务:
| 平台 | 完整路径 |
|---|---|
| macOS/Linux | ~/.codex/config.toml |
| Windows | %USERPROFILE%\.codex\config.toml |
[mcp_servers.domeneshop]
command = "npx"
args = ["-y", "domeneshop-mcp"]
env = { DOMENESHOP_API_TOKEN = "<your-api-token>", DOMENESHOP_API_SECRET = "<your-api-secret>" }
codex mcp add domeneshop -- npx -y domeneshop-mcp 会通过命令行注册服务,但不接受 env 标志,因此请在它创建的 [mcp_servers.domeneshop] 代码块中设置这两个变量。
其他 MCP 客户端
Windsurf、Cline、Continue、LM Studio,以及任何可通过 stdio 运行 MCP 服务的程序都适用。大多数程序使用与上述标准配置相同的格式;请查阅客户端文档,确认配置文件和键名,然后将其指向:
- command:
npx - args:
["-y", "domeneshop-mcp"] - env:
DOMENESHOP_API_TOKEN和DOMENESHOP_API_SECRET
跳过 npx(npm 或 Homebrew)
若要避免每次启动时都解析软件包,请先安装一次,然后将 domeneshop-mcp 用作不带参数的命令。使用 npm:
npm install -g domeneshop-mcp
或者,在 macOS 或 Linux 上使用 Homebrew;如果尚未安装 Node.js,它也会为你安装:
brew install martinzachariassen/tap/domeneshop-mcp
brew upgrade domeneshop-mcp 可获取新版本。Claude Desktop 等 GUI 应用通常无法看到 Homebrew 的 PATH,因此请提供完整路径(brew --prefix 会打印前缀:Apple 芯片 Mac 上为 /opt/homebrew,Intel Mac 上为 /usr/local,Linux 上为 /home/linuxbrew/.linuxbrew):
{
"mcpServers": {
"domeneshop": {
"command": "/opt/homebrew/bin/domeneshop-mcp",
"env": {
"DOMENESHOP_API_TOKEN": "<your-api-token>",
"DOMENESHOP_API_SECRET": "<your-api-secret>"
}
}
}
}
所有设置均为环境变量,通过 Claude Code 中的 --env 或上述配置的 env 块传入。前两项为必填项。
| 变量 | 必填 | 说明 |
|---|---|---|
DOMENESHOP_API_TOKEN | 是 | 从 Domeneshop 控制面板获取的 API 令牌 |
DOMENESHOP_API_SECRET | 是 | 与之匹配的 API 密钥 |
DOMENESHOP_READ_ONLY | 否 | 设为 true 以仅公开只读工具 |
DOMENESHOP_TOOLS | 否 | 以逗号分隔的允许公开的工具名称列表 |
DOMENESHOP_DISABLED_TOOLS | 否 | 以逗号分隔的要隐藏的工具名称 |
DOMENESHOP_TIMEOUT_MS | 否 | 每个请求的超时时间,单位为毫秒(默认值为 30000) |
DOMENESHOP_DEBUG | 否 | 设为 true 以将每个 API 请求记录到 stderr |
工具
每个工具都会声明 MCP 注释和标题,以便客户端了解哪些工具可以在无需事先询问的情况下安全运行。下方的访问权限列与这些注释相对应。将内容发送到 Domeneshop 之前,会先验证参数(TTL 范围、URL 协议、IP 地址以及各记录类型所需的字段);只读工具还会为支持结构化输出的客户端返回结构化输出。
域名
| 工具 | 访问权限 | 说明 |
|---|---|---|
list_domains | 只读 | 列出帐户中的所有域名,可按名称筛选 |
get_domain | 只读 | 获取指定 Domeneshop 域名 ID 对应的域名 |
DNS
| 工具 | 访问权限 | 说明 |
|---|---|---|
list_dns_records | 只读 | 列出域名的记录,可按主机名和类型筛选 |
get_dns_record | 只读 | 按 ID 获取单条记录 |
create_dns_record | 新增 | 创建记录并返回存储后的内容 |
update_dns_record | 覆盖 | 替换记录并返回存储后的内容——请参阅下方警告 |
patch_dns_record | 覆盖 | 仅修改记录中指定的字段;其余字段保留存储值 |
upsert_dns_record | 覆盖 | 更新指定主机名和类型的唯一记录;若不存在则创建 |
delete_dns_record | 删除 | 删除记录 |
注意:
update_dns_record会替换整条记录,而不是进行部分修改。任何未提供的字段都会被删除;省略ttl会将其重置为默认值 3600 秒。要仅修改部分字段,请使用patch_dns_record。如果某个主机名有多条相同类型的记录(MX和TXT中较常见),upsert_dns_record会拒绝操作并列出这些记录的 ID。
HTTP 转发
| 工具 | 访问权限 | 说明 |
|---|---|---|
list_forwards | 只读 | 列出域名的 HTTP 转发 |
get_forward | 只读 | 获取指定主机名的转发 |
create_forward | 新增 | 创建转发 |
update_forward | 覆盖 | 更新转发 |
delete_forward | 删除 | 删除转发 |
动态 DNS
| 工具 | 访问权限 | 说明 |
|---|---|---|
update_dyndns | 覆盖 | 将一个或多个以逗号分隔的主机名指向最多九个 IPv4/IPv6 地址,或调用方检测到的 IP 地址;若记录不存在则创建 |
发票
| 工具 | 访问权限 | 说明 |
|---|---|---|
list_invoices | 只读 | 列出过去三年的发票,可按状态筛选 |
get_invoice | 只读 | 获取单张发票 |
访问控制
Domeneshop API 不支持范围受限的令牌:令牌可以执行账户所能执行的所有操作。若要限制助手能执行的操作,请限制服务公开的工具。隐藏的工具根本不会注册,因此模型也看不到它们。
- 只读模式。 设置
DOMENESHOP_READ_ONLY=true,仅公开八个只读工具。如果你主要是询问域名、DNS 和账单相关问题,或首次试用此服务,这会是不错的默认设置。 - 允许列表。 设置
DOMENESHOP_TOOLS=list_domains,list_dns_records,patch_dns_record,仅公开这些工具。 - 拒绝列表。 设置
DOMENESHOP_DISABLED_TOOLS=delete_dns_record,delete_forward,隐藏指定工具。
这些设置会组合生效;如果工具名称拼写错误,服务会在启动时停止,而不会静默忽略。
大多数客户端在运行未标注为只读的工具前都会先征求确认。请为此服务保留确认功能:写入工具会更改实际 DNS,错误的记录可能导致网站或邮箱无法访问。
凭据只会发送到 api.domeneshop.no,绝不会记录到日志中。若要撤销访问权限,请在 Domeneshop 控制面板中删除令牌。
故障排除
- 看不到工具:重启客户端(大多数客户端只在启动时加载服务),或者在 Claude Code 中检查
/mcp。运行npx -y domeneshop-mcp --version,检查 Node.js 20.3+ 和 npx 是否正常工作。如果你手动编辑了 JSON 配置,请确认它仍是有效的 JSON。启用DOMENESHOP_DEBUG=true后,服务会将每次 API 请求(方法、路径、状态和耗时,不包括凭据)记录到 stderr;大多数客户端会在其 MCP 日志中捕获这些内容。 API returned status 401:令牌或密钥有误。请从 domeneshop.no/admin?view=api 重新复制两者。首尾空格会自动去除。API returned status 404:此账户中不存在该域名或记录 ID。请先让助手列出域名或记录。- 超时:请求会在 30 秒后放弃。遇到速率限制和临时错误时,会重试幂等请求。如有需要,可通过
DOMENESHOP_TIMEOUT_MS调高限制。 - DNS 更改未生效:DNS 会按记录的 TTL 缓存(默认 3600 秒),因此其他解析器可能会在最多一小时内返回旧值。请让助手显示该记录,以确认 Domeneshop 已保存更改。
仍然无法解决?提交问题。
参考
支持的 DNS 记录类型
Domeneshop 支持的 11 种记录类型均已支持,并包含各类型专属字段:
| 类型 | 除 host、data 和 ttl 外的字段 |
|---|---|
A、AAAA、ANAME、CNAME、NS、TXT | — |
MX | priority |
SRV | priority、weight、port |
TLSA | usage、selector、dtype |
DS | tag、alg、digest |
CAA | flags、tag |
tag 字段有意不指定类型:对于 DS,它是数字密钥标签;对于 CAA,它是 issue 这类属性标签,而 Domeneshop 对两者都未作说明。
Domeneshop API 未公开的行为
此服务依赖的部分行为未包含在 Domeneshop 发布的 OpenAPI 规范中,但已得到支持,并由其自有客户端库使用:
- 规范记录了 7 种记录类型;从
domeneshop.js 和
python-domeneshop 中的记录验证可以看出,
ANAME、CAA、DS和NS也可用。 GET /invoices接受status筛选条件,domeneshop.js 会使用该条件。POST /forwards/返回201和空响应体,并且只在Location标头中提供新转发项的名称。GET /dyndns/update返回204且没有响应体,而不是 JSON,因此客户端不会尝试解码响应。
分发
- npm 包
- Homebrew tap
- MCP Registry
- Claude Desktop 安装包(每个版本均附带
.mcpb)
开发
npm install # install dependencies
npm run dev # run the server from source with tsx
npm run build # compile to ./dist
npm run typecheck # type-check without emitting
npm run lint # lint with Biome
npm run format # format with Biome
npm test # run the test suite (vitest)
测试使用本地 node:http 服务模拟 Domeneshop API,并通过内存传输驱动 MCP 服务,因此无需凭据,也不会发出网络请求。
项目结构
src/
domeneshop/ Domeneshop API client (HTTP transport + one resource per endpoint group)
mcp/ MCP server: tool registration, schemas, result/error helpers
index.ts CLI entry point
test/
domeneshop/ Client tests, against a local HTTP server
mcp/ End-to-end tool tests, against an in-memory MCP transport
贡献
欢迎提交问题和拉取请求——请参阅 CONTRIBUTING.md,了解开发工作流和变更日志规范。所有参与者都应遵守行为准则。
安全
请参阅 SECURITY.md,了解如何报告漏洞。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。