Spaceship MCP Connector — 工具参考

Spaceship MCP Connector 可将您的 AI 助手(例如 Claude)连接到您的 Spaceship 账户。通过它,助手可以代表您检查域名可用性和价格、管理域名联系人和名称服务器,以及读取或编辑 DNS 记录 — 您只需用自然语言提出请求,助手就会调用正确的工具。

Spaceship MCP Connector 不购买域名。 助手可以检查某个名称是否可用及其价格,但购买本身是在 spaceship.com 上完成的。

入门

您需要一个 Spaceship 账户。Spaceship MCP Connector 可在 https://connector-mcp.spaceship.com/mcp 获取。

  • Claude(网页和桌面版) — 打开“设置”,选择“连接器”,在连接器目录中找到 Spaceship 并添加。Anthropic 的 Claude 是我们目前已验证可与 Spaceship MCP Connector 配合使用的客户端。

  • 其他 MCP 客户端 — 添加远程 MCP 服务器并将其指向 https://connector-mcp.spaceship.com/mcp。其他客户端可能也能使用,但我们尚未验证。

连接时,系统会要求您登录 Spaceship 并授予助手访问您账户的权限。助手可以使用哪些工具取决于您批准的访问权限 — 如果某个工具因未授予访问权限而被拒绝,请重新连接并批准其所需的访问权限。

工具概览

  • 工具:contacts_save

    作用:保存联系人详细信息并获取联系人 ID

  • 工具:contacts_get

    作用:按 ID 读取已保存的联系人

  • 工具:contacts_list

    作用:列出所有已保存的联系人,以便查找并重复使用其中一个

  • 工具:domains_list

    作用:列出您的域名,或查找单个域名

  • 工具:domains_check_availability

    作用:检查域名是否可注册及其价格

  • 工具:domain_set_contacts

    作用:为您拥有的域名分配联系人

  • 工具:domain_set_nameservers

    作用:将域名切换为基础或自定义名称服务器

  • 工具:dns_records_get

    作用:读取域名的 DNS 记录

  • 工具:dns_records_save

    作用:添加 DNS 记录或更新其 TTL

  • 工具:dns_records_delete

    作用:删除 DNS 记录

  • 工具:async_operation_get

    作用:检查长时间运行操作的状态

这些工具都不会向您的账户收费。

联系人:通过 id 引用

凡是需要联系人的地方(domain_set_contacts),每个角色都接收一个 contactId 字符串 — 绝不要内联联系人详细信息。请先使用 contacts_save 保存联系人(它会返回其 contactId),然后在接受联系人的地方传入该 id。没有内联自动保存;角色不能接收完整的联系人对象。您也可以复用来自 contacts_list 结果中的 contactId,或您从 domains_list 结果中读取到的 contactId。

一个 contactId 是由 27–32 个字母数字字符 组成的字符串。只需在接受联系人的地方将其传回即可。

常见工作流

有些工具被设计为配合使用:一个工具的输出会成为下一个工具的输入。

查找要购买的域名

  1. domains_check_availability — 检查您想要的名称。每个可用名称都包含注册它所需的美元 price(标准和高级域名均如此),或者在无法确定时显示 priceUnavailableReason,另外还包括 minRegisterPeriodInYears 和 maxRegisterPeriodInYears — 即该 TLD 允许的期限。请注意,price 覆盖的是 price.pricedYears 年,这是该 TLD 允许的最短期限,并不总是 1 年。

  2. 请在 spaceship.com 上购买。没有任何工具可以注册域名或生成结账链接,因此助手无法完成购买,也不能声称域名已通过对话注册。购买完成后,domains_list 会显示新域名。

更新您拥有的域名上的联系人

  1. domain_set_contacts — 通过 contactId 将联系人分配给域名(如有需要,请先使用 contacts_save 保存它们)。此操作会立即完成,并返回一个 verificationStatus:verification 表示注册人必须先确认其电子邮件地址,更改才会完全生效(系统会向其发送电子邮件);success 表示已确认;null 表示该域名无需确认。

更改域名的名称服务器

  1. domains_list — 找到该域名并查看其当前的 nameservers({ provider, hosts })。

  2. domain_set_nameservers — 使用 provider: "basic" 将其切换到 Spaceship 的默认名称服务器(不带 hosts),或使用 provider: "custom" 和 2–12 个 hosts 的列表将其指向您自己的名称服务器。它会返回结果 { provider, hosts },随后 domains_list 会反映该更改。对域名已处于的状态重复应用会返回验证错误,而不是无操作 — 请将其视为预期结果,而不是需要重试的失败。

管理 DNS 记录

  1. domains_list — 找到您要管理的域名(如果您知道其名称,也可以直接传入)。

  2. dns_records_get — 读取该域名当前的记录。

  3. dns_records_save 或 dns_records_delete — 添加、更新或删除记录。dns_records_get 返回的记录与保存和删除工具接受的形状相同(删除时仅省略 ttl),因此助手可以读取、调整并写回。除 TXT 记录外,匹配均不区分大小写;TXT 记录区分大小写。

查看您的资产组合

  • domains_list — 通过排序分页查看您的所有域名,或按名称获取单个域名。每个域名都包含其到期日期、自动续费设置、状态、名称服务器、隐私保护以及已分配的联系人 ID。

  • contacts_list — 分页查看保存在您账户中的所有联系人,以查找并复用现有联系人(通过其联系人 ID),而不是创建重复项。

  • contacts_get — 查找您在域名上或 contacts_list 结果中看到的任何联系人 ID 背后的详细信息。

工具参考

每个工具都会以结构化 JSON 形式返回其结果,并且每个工具都会立即完成。

联系人

联系人是附加到域名注册上的个人或组织(注册人、管理员、技术联系人、账单联系人)。联系人在所有地方都通过其 联系人 ID 引用 — 这是一个不透明字符串。

contacts_save — 保存联系人

保存联系人详细信息并返回生成的联系人 ID。某些字段(例如 stateProvince 和 postalCode)的验证取决于所选国家/地区。

  • 参数:firstName

    必填:是

    类型和约束:字符串,1–64 个字符。可以包含连字符和撇号。

  • 参数:lastName

    必填:是

    类型和约束:字符串,1–64 个字符。可以包含连字符和撇号。

  • 参数:email

    必填:是

    类型和约束:有效的电子邮件地址,最多 254 个字符。

  • 参数:address1

    必填:是

    类型和约束:地址第 1 行。字符串,1–128 个字符。

  • 参数:city

    必填:是

    类型和约束:字符串,1–64 个字符。

  • 参数:country

    必填:是

    类型和限制:两位国家/地区代码(ISO 3166-1 alpha-2),例如 US。

  • 参数:phone

    必填:是

    类型和限制:国际格式 +CountryCode.Number,例如 +1.2025551234。最多 32 个字符。

  • 参数:organization

    必填:否

    类型和限制:组织/公司名称。1–128 个字符。

  • 参数:address2

    必填:否

    类型和限制:地址第 2 行。1–128 个字符。

  • 参数:stateProvince

    必填:否

    类型和限制:州/省名称,1–64 个字符。可能会根据国家/地区而要求填写。

  • 参数:postalCode

    必填:否

    类型和限制:1–16 个字符。可能会根据国家/地区而要求填写。

  • 参数:phoneExt

    必填:否

    类型和限制:电话分机号,1–16 个字符。

  • 参数:fax

    必填:否

    类型和限制:传真号码,格式同 +CountryCode.Number,最多 32 个字符。

  • 参数:faxExt

    必填:否

    类型和限制:传真分机号,1–16 个字符。

  • 参数:taxNumber

    必填:否

    类型和约束:税号,1–32 个字符。

返回

{ "contactId": "..." }

contactId(27–32 个字母数字字符)是您传递给 domain_set_contacts 和 contacts_get 的值。

contacts_get — 获取联系人

按联系人 ID 读取已保存联系人的详细信息。联系人 ID 来自 contacts_save、contacts_list,或 contacts 字段(来自 domains_list 的结果)。

  • 参数:contactId

    必填:是

    类型和约束:联系人 ID,27–32 个字母数字字符。

返回 — { contact },包含:

  • 字段:firstName、lastName、email、address1、city、country、phone、postalCode

    类型:字符串

  • 字段:organization、address2、stateProvince、phoneExt、fax、faxExt、taxNumber

    类型:字符串或 null

contacts_list — 列出联系人

列出您账户下保存的所有联系人,以便您查找并重复使用现有联系人(通过其联系人 ID),而不是创建重复项或在您的域名中逐个查找。该列表支持分页和排序,并与 domains_list 保持一致。

  • 参数:take

    必填:否

    类型和约束:每页项目数,1–100。默认值为 10。

  • 参数:skip

    必填:否

    类型和约束:要跳过的项目数,0 或更多。默认值为 0。

  • 参数:orderBy

    必填:否

    类型和约束:最多 8 个排序键:name、email、organization;降序请加前缀 -(例如 -name)。

返回 — { items, total },其中 total 是账户中唯一联系人的数量(按联系人 ID 去重,而不是页面大小),并且每个项目都包含足够的信息来区分联系人,无需后续调用。如果账户中同一联系人 ID 存在重复条目,它们会被合并为一个,因此 total 统计的是不同联系人,而不是服务器端原始行数:

  • 字段:contactId

    类型:字符串(27–32 位字母数字)。传递给 contacts_get 或 domain_set_contacts。

  • 字段:name

    类型:字符串 — 联系人的姓名。

  • 字段:email

    类型:字符串或 null,当联系人没有记录电子邮箱时。

  • 字段:organization

    类型:字符串或 null,当联系人没有记录组织时。

{
"items": [
{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }
],
"total": 1
}

域名

域名输入(domain/domainName)接受 Unicode(IDN)或 ASCII(A-label)— 无论哪种方式,工具都会在使用前自动将名称规范化为 punycode。 domains_check_availability 还要求 TLD 必须是 Spaceship 支持注册的:如果某个域名的 TLD 不受支持,则会被报告为不可用,而不是进行检查。其他域名工具(domains_list、domain_set_contacts、domain_set_nameservers)以及 DNS 工具只会规范化名称,而不会因 TLD 支持情况而拒绝。

domains_list — 列出域名

检索您的域名分页列表。您也可以传入 domain 来按名称获取单个域名(此时会忽略分页和排序;如果提供了这些参数,结果中会包含一个说明此情况的 note)。

  • 参数:domain

    必填:否

    类型和约束:用于获取单个域名的完全限定域名。接受 Unicode(IDN)或 ASCII(A-label)— 自动规范化为 punycode。

  • 参数:take

    必填:否

    类型和约束:每页项目数,1–100。默认值为 10。

  • 参数:skip

    必填:否

    类型和约束:要跳过的项目数,0 或更多。默认值为 0。

  • 参数:orderBy

    必填:否

    类型和约束:最多 8 个排序键:name、unicodeName、registrationDate、expirationDate;降序请加前缀 -(例如 -expirationDate)。

返回 — { items, total },其中每个项目描述一个域名:

  • 字段:name / unicodeName

    含义:ASCII 和 Unicode 形式的域名。

  • 字段:isPremium

    含义:该域名是否为高级域名。

  • 字段:autoRenew

    含义:是否启用了自动续费。

  • 字段:registrationDate / expirationDate

    含义:注册和到期时间戳。

  • 字段:lifecycleStatus

    含义:creating、registered、grace1、grace2 或 redemption。

  • 字段:verificationStatus

    含义:verification、success、failed,或在不适用时为 null。

  • 字段:eppStatuses

    含义:注册局状态代码(例如转移锁)。

  • 字段:suspensions

    含义:活动中的暂停项,每项都带有一个 reasonCode。

  • 字段:privacyProtection

    含义:{ level: "public" | "high", contactForm: boolean }。

  • 字段:nameservers

    含义:{ provider: "basic" | "custom", hosts: [...] }。

  • 字段:contacts

    含义:联系人 ID:registrant,以及 admin/tech/billing(可能为 null)和 attributes(扩展属性联系人 ID 列表,或 null)。可通过 contacts_get 读取。

Spaceship MCP 会填充上述每个字段 — 包括 contacts、eppStatuses、suspensions、verificationStatus、nameservers、真实的 autoRenew,以及当域名存在时单独的 unicodeName — 无论是多项列表还是单个域名获取都是如此。

domains_check_availability — 检查域名可用性

检查一个或多个域名是否可注册。单个名称使用单域名端点,多个名称使用批量端点。对于 TLD 不支持注册的域名,根本不会发送到可用性检查中 — 而是立即作为 tldNotSupported 返回。

  • 参数:domains

    必填:是

    类型和约束:1–20 个完全限定域名。每个都接受 Unicode(IDN)或 ASCII(A-label)— 自动规范化为 punycode。

返回 — { results },每个请求的名称对应一个条目:

  • 字段:domain

    含义:已检查的名称。

  • 字段:result

    含义:available、taken、invalidDomainName、tldNotSupported 或 unexpectedError。

  • 字段:premiumPricing

    含义:对于高级域名:列出 { operation, price, currency },其中 operation 为 register、transfer、renew 或 restore。普通域名则为空。

  • 字段:price

    含义:对于 available 的名称(标准和高级):以美元计的域名注册价格,适用于 该 TLD 允许的最短期限 — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }。 amount 是整个期限的应付总额;pricedYears 说明其覆盖的年数。不报告折扣前价格或“原价”。icannFee 是 ICANN 费用(美元),已包含 在 amount 中,单独返回是为了便于解释费用明细;仅当该 TLD 带有此费用时才会出现。

  • 字段:pricePerYear

    含义:在 price 内:amount 除以 pricedYears,因此始终可提供年度数值用于比较。当 pricedYears 为 1 时,它是真实的一年价格;大于 1 时,它是该期限的年均价格,而不是您可以购买的期限。

  • 字段:minRegisterPeriodInYears / maxRegisterPeriodInYears

    含义:对于 available 的名称:该 TLD 实际允许的最短和最长注册期限,以两个普通数字表示。它们告诉客户可以购买该域名的期限。如果无法确定允许的期限,则两者都会省略。

  • 字段:priceUnavailableReason

    含义:当可用名称的价格无法确定时,会显示此字段而不是 price。检查本身仍然成功。

只有可用名称才会定价;taken/无效结果既不包含 price,也不包含 priceUnavailableReason。

大多数 TLD 允许一年,但有些不允许。.ai 例如,最短期限为两年。对于这些情况,price.amount 是最短期限的总价 — 而不是您可以按一年购买的价格 — 并且 price.pricedYears 会说明这一点:

{
"domain": "example.ai",
"result": "available",
"premiumPricing": [],
"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },
"minRegisterPeriodInYears": 2,
"maxRegisterPeriodInYears": 10
}

pricePerYear 在这里存在 — 159.96 除以其覆盖的两年得到 79.98。这是总价除以期限,而不是您可以为单年支付的价格(无法购买一年期的 .ai 注册)。始终将 amount 与 pricedYears 一起显示(“2 年 $159.96”),绝不要只显示 amount。对于普通 TLD,pricedYears 为 1,且 pricePerYear 等于 amount。

domain_set_contacts — 设置域名联系人

更改分配给您所拥有域名的联系人。立即完成(无需轮询操作)。

  • 参数:domainName

    必填:是

    类型和约束:完全限定域名。接受 Unicode(IDN)或 ASCII(A-label)— 自动规范化为 punycode。

  • 参数:registrant

    必填:是

    类型和约束:contactId 字符串(27–32 位字母数字),来自 contacts_save。

  • 参数:admin

    必填:否

    类型和约束:contactId 字符串(27–32 位字母数字)或 null。

  • 参数:tech

    必填:否

    类型和约束:contactId 字符串(27–32 位字母数字)或 null。

  • 参数:billing

    必填:否

    类型和约束:contactId 字符串(27–32 位字母数字)或 null。

  • 参数:attributes

    必填:否

    类型和约束:扩展属性联系人 ID 数组(最多 5 个);仅某些 TLD 需要,否则请省略或使用 null。

返回

{ "verificationStatus": "verification" }

返回的 verificationStatus 反映 ICANN RAA 电子邮件验证: verification — 注册人必须确认其电子邮件地址(将发送确认邮件); success — 已确认; null — 此域名不适用 RAA 验证。

domain_set_nameservers — 设置域名名称服务器

更改域名在注册商级别的名称服务器。立即完成(无需轮询操作)。更改之后会反映在 domains_list 中。

  • 参数:domainName

    必填:是

    类型和约束:完全限定域名。接受 Unicode(IDN)或 ASCII(A-label)— 自动规范化为 punycode。

  • 参数:provider

    必填:是

    类型和约束:basic(Spaceship 的默认名称服务器)或 custom(您自己的主机)。

  • 参数:hosts

    必填:有条件

    类型和约束:当 provider 为 custom 时必填:2–12 个名称服务器主机名(每个都必须是有效的 FQDN,4–255 个字符)。当 provider 为 basic 时必须省略。

返回

{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }

对域名已处于的状态重复应用(例如,当其已经是 basic 时再次设置 basic)会返回验证错误,而不是无操作成功 — 请将其视为预期结果,而不是需要重试的失败。

DNS 记录

这些工具接受的 domainName 支持 Unicode(IDN)或 ASCII(A-label),并会自动规范化为 punycode;此处不强制执行 TLD 支持。

dns_records_get — 获取 DNS 记录

检索某个域名的 DNS 资源记录分页列表。

  • 参数:domainName

    必填:是

    类型和约束:要获取其记录的域名。

  • 参数:take

    必填:否

    类型和约束:每页项目数,1–500。默认值为 100。

  • 参数:skip

    必填:否

    类型和约束:要跳过的项目数,0 或更多。默认值为 0。

  • 参数:orderBy

    必填:否

    类型和约束:最多 8 个排序键:type、-type、name、-name。

返回 — { items, total }。每个项目都是“记录形状”中描述的一条记录,另外还可能包含一个可选的 group 字段,用于指示记录来源(custom — 由您创建,product — 由 Spaceship 产品管理,personalNs — 个人名称服务器)。

dns_records_save — 保存 DNS 记录

添加自定义 DNS 记录或更新现有记录的 TTL。记录匹配不区分大小写,但 TXT 记录除外(区分大小写)。

  • 参数:domainName

    必填:是

    类型和约束:要更新其记录的域名。

  • 参数:records

    必填:是

    类型和约束:1–500 条记录 — 参见“记录形状”。每条记录都可以包含一个可选的 ttl。

  • 参数:force

    必填:否

    类型和约束:布尔值。跳过冲突解决检查并强制更新区域。

返回 — { "saved": <number> },即已提交记录的数量。成功响应表示所有记录均已被接受;如果任何记录失败,则整个调用会返回错误。

dns_records_delete — 删除 DNS 记录

删除自定义 DNS 记录。删除后无法撤销。记录匹配不区分大小写,但 TXT 记录除外(区分大小写)。

  • 参数:domainName

    必填:是

    类型和约束:要删除其记录的域名。

  • 参数:records

    必填:是

    类型和约束:1–500 条用于标识现有记录的记录 — 形状与保存时相同,但不包含 ttl。

返回 — { "deleted": <number> },即已提交记录的数量。如果任何记录无法匹配,则整个调用失败,且不会删除任何内容。

记录形状

每条记录都包含:

  • type — 以下 13 种受支持类型之一。

  • name — 不含域名的记录名称:对域名本身(根域)使用 @,对通配符使用 *。

  • ttl(仅保存时使用,可选)— 以秒为单位的缓存时间,60–3600。

特定类型字段:

  • 类型:A

    字段:address — IPv4 地址。

  • 类型:AAAA

    字段:address — IPv6 地址。

  • 类型:CNAME

    字段:cname — 规范域名(最多 253 个字符)。

  • 类型:ALIAS

    字段:aliasName — 规范域名;用于根域的类似 CNAME 的行为,因为根域不允许使用 CNAME。

  • 类型:NS

    字段:nameserver — 名称服务器名称。

  • 类型:PTR

    字段:pointer — 给定 IP 地址对应的域名。

  • 类型:TXT

    字段:value — 文本值(区分大小写匹配)。

  • 类型:MX

    字段:exchange — 邮件服务器;preference — 优先级(0–65535,数值越小优先级越高)。

  • 类型:CAA

    字段:flag — 0 或 128(关键位);tag — issue、issuewild 或 iodef;value — 带可选参数的 CA 标识符。

  • 类型:SRV

    字段:service(例如 _sip);protocol(例如 _tcp);priority 和 weight(0–65535);port(1–65535);target — 服务器域名。

  • 类型:TLSA

    字段:usage、selector、matching(每个均为 0–255);port — * 或 _<1–65535>;protocol(例如 _tcp);associationData — 证书哈希或数据。

  • 类型:HTTPS

    字段:svcPriority(0–65535;0 = AliasMode);targetName — FQDN 或 .;可选的 port(* 或 _<1–65535>)、scheme(设置了 port 时必须为 _https)、svcParams。

  • 类型:SVCB

    字段:svcPriority(0–65535;0 = AliasMode);targetName — FQDN 或 .;可选的 port、scheme(例如 _tcp)、svcParams。

异步操作

async_operation_get — 获取异步操作状态

通过其 operationId 检查您账户上的长时间运行操作。重复调用,直到 status 为 success 或 failed。

  • 参数:operationId

    必填:是

    类型和约束:字母数字字符串,最多 36 个字符,由启动该操作的工具返回。

返回

  • 字段:operationId

    含义:被轮询的操作。

  • 字段:status

    含义:pending、success 或 failed。

  • 字段:type

    含义:操作类型,或 null。

  • 字段:details

    含义:有关该操作的额外详细信息,或 null。

  • 字段:createdAt / modifiedAt

    含义:操作创建 / 上次更新的时间(modifiedAt 可能为 null)。

错误

当调用失败时,工具会返回一个带有代码和人类可读 detail 的错误,用于说明出了什么问题 — 例如输入无效(格式错误的域名或联系人 ID)、不存在的域名或联系人,或与当前状态冲突。如果某个工具因未授予助手访问权限而被拒绝,请重新连接 Spaceship MCP 并批准其请求的访问权限。

需要提供有效的电子邮箱