Spaceship MCP — 도구 참조

Spaceship MCP는 AI 어시스턴트(예: Claude)를 Spaceship 계정에 연결합니다. 이를 통해 어시스턴트는 도메인을 확인하고 등록하며, 도메인 연락처를 관리하고, 사용자를 대신해 DNS 레코드를 읽거나 편집할 수 있습니다 — 사용자는 자연어로 요청만 하면 되고, 어시스턴트가 적절한 도구를 호출합니다.

시작하기

Spaceship 계정이 필요합니다. AI 어시스턴트에 Spaceship MCP를 추가하면 Spaceship에 로그인하고 어시스턴트에 계정 접근 권한을 부여하라는 요청을 받게 됩니다. 어시스턴트가 사용할 수 있는 도구는 사용자가 승인한 접근 권한에 따라 달라집니다 — 접근 권한이 부여되지 않아 도구가 거부되면 다시 연결하고 필요한 접근 권한을 승인하세요.

도구 한눈에 보기

  • 도구: contacts_save

    기능: 연락처 세부 정보를 저장하고 연락처 ID 받기

  • 도구: contacts_get

    기능: ID로 저장된 연락처 읽기

  • 도구: domains_list

    기능: 도메인 목록 보기 또는 단일 도메인 조회

  • 도구: domains_check_availability

    기능: 도메인이 등록 가능한지 확인

  • 도구: domain_register

    기능: 도메인 등록(구매) — 비용이 청구됨

  • 도구: domain_set_contacts

    기능: 소유한 도메인에 연락처 할당

  • 도구: dns_records_get

    기능: 도메인의 DNS 레코드 읽기

  • 도구: dns_records_save

    기능: DNS 레코드 추가 또는 TTL 업데이트

  • 도구: dns_records_delete

    기능: DNS 레코드 삭제

  • 도구: async_operation_get

    기능: 장시간 실행 작업의 상태 확인

일반적인 워크플로

여러 도구는 함께 사용되도록 설계되어 있습니다. 하나의 출력이 다음 도구의 입력이 됩니다.

도메인 등록(구매)

  1. domains_check_availability — 원하는 이름을 확인합니다. resultavailable일 때만 진행하세요. 프리미엄 이름의 가격은 premiumPricing에 포함됩니다.

  2. contacts_save — 등록용 연락처 세부 정보를 저장합니다. contactId를 반환합니다. 모든 역할에 하나의 contactId를 재사용하거나 여러 연락처를 저장할 수 있습니다.

  3. domain_register — 도메인을 등록하며 연락처 ID를 contacts.registrant, contacts.admin, contacts.techcontacts.billing로 전달합니다. 이 작업은 계정의 기본 결제 수단으로 청구되며 되돌릴 수 없습니다. 즉시 operationIdstatus: pending를 반환하며 — 등록은 백그라운드에서 완료됩니다.

  4. async_operation_get — 진행 상황을 확인하려면 3단계의 operationId를 전달하세요. statussuccess 또는 failed가 될 때까지 반복합니다.

domains_check_availability ──▶ contacts_save ──▶ domain_register ──▶ async_operation_get
(available?) (contactId) (operationId) (pending → success/failed)

소유한 도메인의 연락처 업데이트

  1. contacts_save — 새 연락처 세부 정보를 저장합니다. contactId를 반환합니다(또는 contacts_get를 통해 확인 가능한 기존 ID를 재사용할 수 있습니다).

  2. domain_set_contacts — 연락처 ID를 도메인에 할당합니다. 이 작업은 즉시 완료되며 verificationStatus를 반환합니다. verification은 등록자가 변경 사항이 완전히 적용되기 전에 이메일 주소를 확인해야 함을 의미하며(이메일이 발송됨), success는 이미 확인되었음을 의미하고, null은 해당 도메인에 확인이 필요 없음을 의미합니다.

DNS 레코드 관리

  1. domains_list — 관리하려는 도메인을 찾습니다(이름을 알고 있다면 직접 전달해도 됩니다).

  2. dns_records_get — 도메인의 현재 레코드를 읽습니다.

  3. dns_records_save 또는 dns_records_delete — 레코드를 추가, 업데이트 또는 제거합니다. dns_records_get가 반환하는 레코드는 저장 및 삭제 도구가 허용하는 것과 동일한 형식입니다(삭제는 ttl만 생략). 따라서 assistant는 읽고, 조정하고, 다시 쓸 수 있습니다. 일치는 TXT 레코드를 제외하고 대소문자를 구분하지 않으며, TXT 레코드는 대소문자를 구분합니다.

포트폴리오 검토

  • domains_list — 정렬과 함께 모든 도메인을 페이지별로 확인하거나 이름으로 단일 도메인을 가져옵니다. 각 도메인에는 만료일, 자동 갱신 설정, 상태, 네임서버, 개인정보 보호, 할당된 연락처 ID가 포함됩니다.

  • contacts_get — 도메인에서 보이는 연락처 ID 뒤에 있는 세부 정보를 조회합니다.

도구 참조

모든 도구는 결과를 구조화된 JSON으로 반환합니다. 장기 실행 작업(현재는 domain_register만 해당)은 async_operation_get로 폴링할 작업 ID를 반환하며, 다른 모든 도구는 즉시 완료됩니다.

연락처

연락처는 도메인 등록에 연결된 개인 또는 조직(등록자, 관리자, 기술 담당자, 청구 담당자)입니다. 연락처는 어디서나 contact ID로 참조됩니다 — 27–32자의 영숫자 문자열입니다.

contacts_save — 연락처 저장

연락처 세부 정보를 저장하고 생성된 연락처 ID를 반환합니다. 일부 필드(예: stateProvincepostalCode)의 유효성 검사는 선택한 국가에 따라 달라집니다.

  • 매개변수: 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_register, domain_set_contactscontacts_get에 전달하는 값입니다.

contacts_get — 연락처 가져오기

연락처 ID로 저장된 연락처의 세부 정보를 읽습니다. (모든 연락처를 나열하는 도구는 없으며 — 연락처 ID는 contacts_save 또는 contacts 필드의 domains_list 결과에서 가져옵니다.)

  • 매개변수: contactId

    필수:

    유형 및 제약 조건: 연락처 ID, 27–32자의 영숫자.

반환값{ contact }, 포함 항목:

  • 필드: firstName, lastName, email, address1, city, country, phone, postalCode

    유형: 문자열

  • 필드: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber

    유형: 문자열 또는 null

도메인

domains_list — 도메인 목록

도메인의 페이지네이션된 목록을 가져옵니다. 대신 단일 도메인을 이름으로 가져오려면 domain을 전달하세요(이 경우 페이지네이션과 정렬은 무시되며, 제공된 경우 결과에 이를 알리는 note가 포함됩니다).

  • 매개변수: domain

    필수 여부: 아니요

    유형 및 제약 조건: 단일 도메인을 가져오기 위한 정규화된 도메인 이름(ASCII/A-label).

  • 매개변수: 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: registrantadmin/tech/billing/attributes(null일 수 있음). contacts_get을 통해 읽을 수 있습니다.

domains_check_availability — 도메인 사용 가능 여부 확인

하나 이상의 도메인 이름이 등록 가능한지 확인합니다.

  • 매개변수: domains

    필수 여부:

    유형 및 제약 조건: 1–20개의 정규화된 도메인 이름(ASCII/A-label).

반환값{ results }, 요청된 각 이름당 하나의 항목:

  • 필드: domain

    의미: 확인한 이름.

  • 필드: result

    의미: available, taken, invalidDomainName, tldNotSupported 또는 unexpectedError.

  • 필드: premiumPricing

    의미: 프리미엄 이름의 경우: { operation, price, currency } 목록이며, 여기서 operationregister, transfer, renew 또는 restore입니다. 일반 이름의 경우 비어 있습니다.

domain_register — 도메인 등록

도메인을 등록(구매)합니다. 이 작업은 계정의 기본 결제 수단으로 청구되며 되돌릴 수 없습니다. 권장 순서: domains_check_availabilitycontacts_savedomain_register. 이 도구는 보류 상태로 즉시 반환하며, 등록 자체는 백그라운드에서 완료됩니다 — async_operation_get으로 확인하세요.

  • 매개변수: domain

    필수 여부:

    유형 및 제약 조건: 등록할 정규화된 도메인 이름, 예: example.com.

  • 매개변수: years

    필수 여부:

    유형 및 제약 조건: 등록 기간(년), 1–10.

  • 매개변수: autoRenew

    필수 여부:

    유형 및 제약 조건: 불리언. true이면 계정의 기본 결제 수단을 사용해 만료 시 도메인이 자동으로 갱신됩니다.

  • 매개변수: privacy.level

    필수 여부:

    유형 및 제약 조건: high는 등록자의 연락처 세부 정보를 공개 WHOIS에서 숨기고, public은 이를 공개합니다.

  • 매개변수: privacy.userConsent

    필수 여부:

    유형 및 제약 조건: 불리언. 선택한 개인정보 보호 설정에 동의함을 확인해야 합니다.

  • 매개변수: contacts.registrant

    필수 여부:

    유형 및 제약 조건: 연락처 ID(contacts_save에서 가져옴).

  • 매개변수: contacts.admin

    필수 여부:

    유형 및 제약 조건: 연락처 ID.

  • 매개변수: contacts.tech

    필수 여부:

    유형 및 제약 조건: 연락처 ID.

  • 매개변수: contacts.billing

    필수 여부:

    유형 및 제약 조건: 연락처 ID.

  • 매개변수: contacts.attributes

    필수 여부: 아니요

    유형 및 제약 조건: 최대 5개의 추가 연락처 ID이며, 특정 TLD에만 필요합니다.

반환값

{
"operationId": "...",
"domain": "example.com",
"years": 1,
"status": "pending",
"note": "Registration of example.com submitted. ..."
}

operationIdasync_operation_get에 전달하여 등록이 성공했는지 확인하세요.

domain_set_contacts — 도메인 연락처 설정

소유한 도메인에 할당된 연락처를 변경합니다. 즉시 완료됩니다(작업 ID 없음).

  • 매개변수: domainName

    필수 여부:

    유형 및 제약 조건: 정규화된 도메인 이름(ASCII/A-label).

  • 매개변수: registrant

    필수 여부:

    유형 및 제약 조건: 연락처 ID.

  • 매개변수: admin

    필수 여부: 아니요

    유형 및 제약 조건: 연락처 ID 또는 null.

  • 매개변수: tech

    필수 여부: 아니요

    유형 및 제약 조건: 연락처 ID 또는 null.

  • 매개변수: billing

    필수 여부: 아니요

    유형 및 제약 조건: 연락처 ID 또는 null.

  • 매개변수: attributes

    필수 여부: 아니요

    유형 및 제약 조건: 최대 5개의 연락처 ID 또는 null.

반환값

{ "verificationStatus": "verification" }

verification — 등록자는 이메일 주소를 확인해야 합니다(확인 이메일이 전송됨); success — 이미 확인됨; null — 이 도메인에는 확인이 필요하지 않습니다.

DNS 레코드

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도메인을 제외한 레코드 이름: 도메인 자체(apex)에는 @를 사용하고 와일드카드에는 *를 사용합니다.

  • ttl (저장 전용, 선택 사항) — 초 단위 캐시 시간, 60–3600입니다.

유형별 필드:

  • 유형: A

    필드: address — IPv4 주소입니다.

  • 유형: AAAA

    필드: address — IPv6 주소입니다.

  • 유형: CNAME

    필드: cname — 정식 도메인 이름(최대 253자)입니다.

  • 유형: ALIAS

    필드: aliasName — 정식 도메인 이름입니다. CNAME이 허용되지 않는 apex에서 CNAME과 유사하게 동작합니다.

  • 유형: NS

    필드: nameserver — 네임서버 이름입니다.

  • 유형: PTR

    필드: pointer — 지정된 IP 주소의 도메인 이름입니다.

  • 유형: TXT

    필드: value — 텍스트 값(대소문자를 구분하여 일치).

  • 유형: MX

    필드: exchange — 메일 서버, preference — 우선순위(0–65535, 낮을수록 우선).

  • 유형: CAA

    필드: flag0 또는 128(critical bit), tagissue, issuewild 또는 iodef, value — 선택적 매개변수가 있는 CA 식별자입니다.

  • 유형: SRV

    필드: service (예: _sip), protocol (예: _tcp), priorityweight (0–65535), port (1–65535), target — 서버 도메인 이름입니다.

  • 유형: TLSA

    필드: usage, selector, matching (각각 0–255), port* 또는 _<165535>, protocol (예: _tcp), associationData — 인증서 해시 또는 데이터입니다.

  • 유형: HTTPS

    필드: svcPriority (0–65535, 0 = AliasMode), targetName — FQDN 또는 ., 선택적 port (* 또는 _<165535>), scheme (_httpsport가 설정된 경우여야 함), svcParams.

  • 유형: SVCB

    필드: svcPriority (0–65535, 0 = AliasMode), targetName — FQDN 또는 ., 선택적 port, scheme (예: _tcp), svcParams.

비동기 작업

async_operation_get — 비동기 작업 상태 가져오기

다른 도구가 시작한 장기 실행 작업(현재는 domain_register만 해당)의 상태를 확인합니다. 해당 도구가 반환한 operationId로 호출하고, statussuccess 또는 failed가 될 때까지 반복합니다.

  • 매개변수: operationId

    필수:

    유형 및 제약 조건: 영숫자 문자열, 최대 36자이며 작업을 시작한 도구가 반환합니다.

반환값

  • 필드: operationId

    의미: 폴링 중인 작업입니다.

  • 필드: status

    의미: pending, success 또는 failed.

  • 필드: type

    의미: 작업 유형 또는 null입니다.

  • 필드: details

    의미: 작업에 대한 추가 세부 정보 또는 null입니다.

  • 필드: createdAt / modifiedAt

    의미: 작업이 생성된 시점 / 마지막으로 업데이트된 시점(modifiedAtnull일 수 있음)입니다.

오류

호출이 실패하면 도구는 코드와 사람이 읽을 수 있는 detail을 포함한 오류를 반환하여 무엇이 잘못되었는지 설명합니다. 예를 들어 잘못된 입력(형식이 잘못된 도메인 이름 또는 연락처 ID), 존재하지 않는 도메인 또는 연락처, 또는 현재 상태와의 충돌 등이 있습니다. 도구에 대한 액세스 권한이 assistant에 부여되지 않아 도구가 거부된 경우 Spaceship MCP를 다시 연결하고 요청하는 액세스를 승인하세요.

유효한 이메일이 필요합니다