mcpField
D
Domeneshop

Domeneshop

本地服务
github.com云与基础设施41 天前更新

关于 Domeneshop

Domeneshop 是通过 API 让助手管理 Domeneshop 账户的 MCP 服务,涵盖域名、DNS、HTTP 转发、动态 DNS 和发票,并可配置只读访问和工具筛选。

主要功能

  1. 01查询和列出域名
  2. 02管理 DNS 记录
  3. 03管理 HTTP 转发
  4. 04更新动态 DNS
  5. 05查询和筛选发票
  6. 06只读模式与工具允许列表

适用场景

  1. 01查看域名及续费信息
  2. 02添加或修改 DNS 记录
  3. 03配置域名 HTTP 转发
  4. 04更新动态 DNS 并检查发票

MCP 相关

它通过 MCP stdio 将 Domeneshop API 操作作为工具提供给兼容客户端。只读模式和工具允许列表可限制可用工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"martinzachariassen-domeneshop": {
"command": "npx",
"args": [
"-y",
"domeneshop-mcp"
],
"env": {
"DOMENESHOP_API_TOKEN": "<DOMENESHOP_API_TOKEN>",
"DOMENESHOP_API_SECRET": "<DOMENESHOP_API_SECRET>",
"DOMENESHOP_READ_ONLY": "<DOMENESHOP_READ_ONLY>",
"DOMENESHOP_TOOLS": "<DOMENESHOP_TOOLS>",
"DOMENESHOP_DISABLED_TOOLS": "<DOMENESHOP_DISABLED_TOOLS>",
"DOMENESHOP_TIMEOUT_MS": "<DOMENESHOP_TIMEOUT_MS>",
"DOMENESHOP_DEBUG": "<DOMENESHOP_DEBUG>"
}
}
}
}
启动命令npx -y domeneshop-mcp
需要配置的环境变量
DOMENESHOP_API_TOKEN密钥API token from https://www.domeneshop.no/admin?view=api
DOMENESHOP_API_SECRET密钥The matching API secret
DOMENESHOP_READ_ONLYSet to true to expose only read-only tools
DOMENESHOP_TOOLSComma-separated allowlist of tool names to expose
DOMENESHOP_DISABLED_TOOLSComma-separated tool names to hide
DOMENESHOP_TIMEOUT_MSPer-request timeout in milliseconds
DOMENESHOP_DEBUGSet to true to log each API request to stderr

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmdomeneshop-mcp1.1.6

工具

17

收录的工具列表 · 更新于 今天

参数类型必填说明
filterstring否仅返回名称包含此文本的域名,例如 '.no'

详细介绍

domeneshop-mcp — MCP server for Domeneshop domains, DNS, HTTP forwards, dynamic DNS and invoices

CI npm version npm downloads Node.js version CodeQL OpenSSF Scorecard License

Quick start  ·  Client setup  ·  Tools  ·  Access control  ·  Troubleshooting  ·  Get API credentials

Install in Cursor Install in VS Code Install in VS Code Insiders

一个 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:

  1. 从最新版本下载 domeneshop-mcp-<version>.mcpb。
  2. 打开它(双击,或将其拖入 Claude Desktop)。
  3. 粘贴你的令牌和密钥,可选开启只读模式,然后安装。

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 中安装

该按钮会使用占位凭据安装服务。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) [![在 VS Code 中安装](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](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) [![在 VS Code Insiders 中安装](https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24BFA5?style=flat-square&logo=visualstudiocode&logoColor=white)](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—
MXpriority
SRVpriority、weight、port
TLSAusage、selector、dtype
DStag、alg、digest
CAAflags、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 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,了解如何报告漏洞。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。