Spaceship MCP kết nối trợ lý AI của bạn (chẳng hạn như Claude) với tài khoản Spaceship của bạn. Thông qua đó, trợ lý có thể kiểm tra và đăng ký tên miền, quản lý liên hệ tên miền, đồng thời đọc hoặc chỉnh sửa bản ghi DNS thay cho bạn — bạn chỉ cần yêu cầu bằng ngôn ngữ thông thường, và trợ lý sẽ gọi đúng công cụ.
Bạn cần có tài khoản Spaceship. Spaceship MCP có tại https://mcp.spaceship.com/mcp.
Cách bạn kết nối phụ thuộc vào trợ lý AI của bạn:
Claude (web và desktop) — mở Settings, chọn Connectors, tìm Spaceship trong thư mục connectors và thêm nó. Claude của Anthropic hiện là ứng dụng khách mà chúng tôi đã xác minh là Spaceship MCP hoạt động cùng.
Các ứng dụng khách MCP khác — thêm một máy chủ MCP từ xa và trỏ nó tới https://mcp.spaceship.com/mcp. Các ứng dụng khách khác có thể hoạt động, nhưng chúng tôi chưa xác minh chúng.
Khi bạn kết nối, bạn sẽ được yêu cầu đăng nhập vào Spaceship và cấp cho trợ lý quyền truy cập vào tài khoản của bạn. Trợ lý có thể sử dụng công cụ nào phụ thuộc vào quyền truy cập bạn phê duyệt — nếu một công cụ bị từ chối vì chưa được cấp quyền truy cập, hãy kết nối lại và phê duyệt quyền truy cập mà công cụ đó cần.
Công cụ: contacts_save
Chức năng: Lưu chi tiết liên hệ và nhận ID liên hệ
Công cụ: contacts_get
Chức năng: Đọc một liên hệ đã lưu theo ID của nó
Công cụ: domains_list
Chức năng: Liệt kê các tên miền của bạn hoặc tra cứu một tên miền
Công cụ: domains_check_availability
Chức năng: Kiểm tra xem tên miền có sẵn để đăng ký hay không
Công cụ: domain_register
Chức năng: Đăng ký (mua) một tên miền — tốn tiền
Công cụ: domain_set_contacts
Chức năng: Gán liên hệ cho một tên miền bạn sở hữu
Công cụ: dns_records_get
Chức năng: Đọc bản ghi DNS cho một tên miền
Công cụ: dns_records_save
Chức năng: Thêm bản ghi DNS hoặc cập nhật TTL của chúng
Công cụ: dns_records_delete
Chức năng: Xóa bản ghi DNS
Công cụ: async_operation_get
Chức năng: Kiểm tra trạng thái của một thao tác chạy lâu
Một số công cụ được thiết kế để dùng cùng nhau: đầu ra của công cụ này trở thành đầu vào của công cụ tiếp theo.
domains_check_availability — kiểm tra (các) tên bạn muốn. Chỉ tiếp tục khi result là available; tên cao cấp bao gồm giá trong premiumPricing.
contacts_save — lưu chi tiết liên hệ cho việc đăng ký. Trả về một contactId. Dùng lại một contactId cho mọi vai trò hoặc lưu nhiều liên hệ.
domain_register — đăng ký tên miền, truyền (các) ID liên hệ dưới dạng contacts.registrant, contacts.admin, contacts.tech, và contacts.billing. Thao tác này sẽ tính phí vào phương thức thanh toán mặc định của tài khoản bạn và không thể hoàn tác. Công cụ trả về ngay lập tức với một operationId và status: pending — việc đăng ký sẽ hoàn tất ở chế độ nền.
async_operation_get — truyền operationId từ bước 3 để kiểm tra tiến trình. Lặp lại cho đến khi status trở thành success hoặc failed.
domains_check_availability ──▶ contacts_save ──▶ domain_register ──▶ async_operation_get(available?) (contactId) (operationId) (pending → success/failed)
contacts_save — lưu chi tiết liên hệ mới; trả về một contactId (hoặc dùng lại một ID hiện có, có thể đọc qua contacts_get).
domain_set_contacts — gán (các) ID liên hệ cho tên miền. Thao tác này hoàn tất ngay lập tức và trả về verificationStatus: verification nghĩa là người đăng ký phải xác nhận địa chỉ email của họ trước khi thay đổi được áp dụng hoàn toàn (một email sẽ được gửi cho họ), success nghĩa là đã được xác nhận, và null nghĩa là không cần xác nhận cho tên miền đó.
domains_list — tìm tên miền bạn muốn quản lý (hoặc truyền trực tiếp tên của nó nếu bạn biết).
dns_records_get — đọc các bản ghi hiện tại của tên miền.
dns_records_save hoặc dns_records_delete — thêm, cập nhật hoặc xóa bản ghi. Các bản ghi được trả về bởi dns_records_get có cùng hình dạng mà công cụ lưu và xóa chấp nhận (xóa chỉ bỏ qua ttl), vì vậy trợ lý có thể đọc, điều chỉnh và ghi lại. Việc đối sánh không phân biệt chữ hoa chữ thường ngoại trừ bản ghi TXT, vốn phân biệt chữ hoa chữ thường.
domains_list — duyệt qua tất cả tên miền của bạn với sắp xếp, hoặc lấy một tên miền duy nhất theo tên. Mỗi tên miền bao gồm ngày hết hạn, cài đặt tự động gia hạn, trạng thái, máy chủ tên, bảo vệ quyền riêng tư và các ID liên hệ được gán.
contacts_get — tra cứu chi tiết đằng sau bất kỳ ID liên hệ nào bạn thấy trên một tên miền.
Mỗi công cụ trả về kết quả dưới dạng JSON có cấu trúc. Các thao tác chạy lâu (hiện tại chỉ có domain_register) trả về một ID thao tác để thăm dò bằng async_operation_get; tất cả các công cụ khác hoàn tất ngay lập tức.
Liên hệ là những người hoặc tổ chức gắn với một đăng ký tên miền (người đăng ký, quản trị viên, kỹ thuật, thanh toán). Một liên hệ được tham chiếu ở mọi nơi bằng ID liên hệ — một chuỗi chữ và số dài 27–32 ký tự.
contacts_save — Lưu liên hệLưu chi tiết liên hệ và trả về ID liên hệ được tạo. Việc xác thực một số trường (chẳng hạn như stateProvince và postalCode) phụ thuộc vào quốc gia đã chọn.
Tham số: firstName
Bắt buộc: Có
Kiểu & ràng buộc: Chuỗi, 1–64 ký tự. Có thể bao gồm dấu gạch nối và dấu nháy đơn.
Tham số: lastName
Bắt buộc: Có
Kiểu & ràng buộc: Chuỗi, 1–64 ký tự. Có thể bao gồm dấu gạch nối và dấu nháy đơn.
Tham số: email
Bắt buộc: Có
Kiểu & ràng buộc: Địa chỉ email hợp lệ, tối đa 254 ký tự.
Tham số: address1
Bắt buộc: Có
Kiểu & ràng buộc: Dòng địa chỉ 1. Chuỗi, 1–128 ký tự.
Tham số: city
Bắt buộc: Có
Kiểu & ràng buộc: Chuỗi, 1–64 ký tự.
Tham số: country
Bắt buộc: Có
Kiểu & ràng buộc: Mã quốc gia gồm hai chữ cái (ISO 3166-1 alpha-2), ví dụ: US.
Tham số: phone
Bắt buộc: Có
Kiểu & ràng buộc: Định dạng quốc tế +CountryCode.Number, ví dụ: +1.2025551234. Tối đa 32 ký tự.
Tham số: organization
Bắt buộc: Không
Kiểu & ràng buộc: Tên tổ chức/công ty. 1–128 ký tự.
Tham số: address2
Bắt buộc: Không
Kiểu & ràng buộc: Dòng địa chỉ 2. 1–128 ký tự.
Tham số: stateProvince
Bắt buộc: Không
Kiểu & ràng buộc: Tên bang/tỉnh, 1–64 ký tự. Có thể bắt buộc tùy theo quốc gia.
Tham số: postalCode
Bắt buộc: Không
Kiểu & ràng buộc: 1–16 ký tự. Có thể bắt buộc tùy theo quốc gia.
Tham số: phoneExt
Bắt buộc: Không
Kiểu & ràng buộc: Số máy lẻ điện thoại, 1–16 ký tự.
Tham số: fax
Bắt buộc: Không
Kiểu & ràng buộc: Số fax, cùng định dạng +CountryCode.Number, tối đa 32 ký tự.
Tham số: faxExt
Bắt buộc: Không
Kiểu & ràng buộc: Số máy lẻ fax, 1–16 ký tự.
Tham số: taxNumber
Bắt buộc: Không
Loại & ràng buộc: Mã số thuế, 1–32 ký tự.
Trả về
{ "contactId": "..." }
contactId (27–32 ký tự chữ và số) là giá trị bạn truyền vào domain_register, domain_set_contacts và contacts_get.
contacts_get — Lấy liên hệĐọc thông tin chi tiết của một liên hệ đã lưu theo ID liên hệ của nó. (Không có công cụ liệt kê tất cả liên hệ — ID liên hệ đến từ contacts_save hoặc từ trường contacts trong kết quả của domains_list.)
Tham số: contactId
Bắt buộc: Có
Kiểu & ràng buộc: ID liên hệ, 27–32 ký tự chữ và số.
Trả về — { contact } với:
Trường: firstName, lastName, email, address1, city, country, phone, postalCode
Kiểu: Chuỗi
Trường: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
Kiểu: Chuỗi hoặc null
domains_list — Liệt kê tên miềnTruy xuất danh sách tên miền của bạn có phân trang. Truyền domain để thay vào đó lấy một tên miền duy nhất theo tên (khi đó phân trang và sắp xếp sẽ bị bỏ qua, và kết quả sẽ bao gồm một note cho biết điều đó nếu chúng đã được cung cấp).
Tham số: domain
Bắt buộc: Không
Kiểu & ràng buộc: Tên miền đầy đủ điều kiện (ASCII/A-label) để lấy một tên miền duy nhất.
Tham số: take
Bắt buộc: Không
Kiểu & ràng buộc: Số mục trên mỗi trang, 1–100. Mặc định là 10.
Tham số: skip
Bắt buộc: Không
Kiểu & ràng buộc: Số mục cần bỏ qua, từ 0 trở lên. Mặc định là 0.
Tham số: orderBy
Bắt buộc: Không
Kiểu & ràng buộc: Tối đa 8 khóa sắp xếp: name, unicodeName, registrationDate, expirationDate; thêm tiền tố - để sắp xếp giảm dần (ví dụ: -expirationDate).
Trả về — { items, total } trong đó mỗi mục mô tả một tên miền:
Trường: name / unicodeName
Ý nghĩa: Tên miền ở dạng ASCII và Unicode.
Trường: isPremium
Ý nghĩa: Tên miền có phải là tên premium hay không.
Trường: autoRenew
Ý nghĩa: Tự động gia hạn có được bật hay không.
Trường: registrationDate / expirationDate
Ý nghĩa: Dấu thời gian đăng ký và hết hạn.
Trường: lifecycleStatus
Ý nghĩa: creating, registered, grace1, grace2, hoặc redemption.
Trường: verificationStatus
Ý nghĩa: verification, success, failed, hoặc null khi không áp dụng.
Trường: eppStatuses
Ý nghĩa: Mã trạng thái registry (ví dụ: khóa chuyển nhượng).
Trường: suspensions
Ý nghĩa: Các trạng thái tạm ngưng đang hoạt động, mỗi trạng thái có một reasonCode.
Trường: privacyProtection
Ý nghĩa: { level: "public" | "high", contactForm: boolean }.
Trường: nameservers
Ý nghĩa: { provider: "basic" | "custom", hosts: [...] }.
Trường: contacts
Ý nghĩa: ID liên hệ: registrant, cùng với admin/tech/billing/attributes (có thể là null). Có thể đọc qua contacts_get.
domains_check_availability — Kiểm tra tính khả dụng của tên miềnKiểm tra xem một hoặc nhiều tên miền có sẵn để đăng ký hay không.
Tham số: domains
Bắt buộc: Có
Kiểu & ràng buộc: 1–20 tên miền đầy đủ điều kiện (ASCII/A-label).
Trả về — { results }, một mục cho mỗi tên được yêu cầu:
Trường: domain
Ý nghĩa: Tên đã được kiểm tra.
Trường: result
Ý nghĩa: available, taken, invalidDomainName, tldNotSupported, hoặc unexpectedError.
Trường: premiumPricing
Ý nghĩa: Đối với tên premium: danh sách { operation, price, currency } trong đó operation là register, transfer, renew, hoặc restore. Trống đối với tên thông thường.
domain_register — Đăng ký tên miềnĐăng ký (mua) một tên miền. Thao tác này sẽ tính phí vào phương thức thanh toán mặc định của tài khoản bạn và không thể hoàn tác. Trình tự được khuyến nghị: domains_check_availability → contacts_save → domain_register. Công cụ trả về ngay lập tức với trạng thái đang chờ; bản thân việc đăng ký sẽ hoàn tất ở chế độ nền — hãy kiểm tra bằng async_operation_get.
Tham số: domain
Bắt buộc: Có
Kiểu & ràng buộc: Tên miền đầy đủ điều kiện để đăng ký, ví dụ: example.com.
Tham số: years
Bắt buộc: Có
Kiểu & ràng buộc: Thời hạn đăng ký tính theo năm, 1–10.
Tham số: autoRenew
Bắt buộc: Có
Kiểu & ràng buộc: Boolean. Khi true, tên miền sẽ tự động gia hạn khi hết hạn bằng phương thức thanh toán mặc định của tài khoản.
Tham số: privacy.level
Bắt buộc: Có
Kiểu & ràng buộc: high ẩn thông tin liên hệ của người đăng ký khỏi WHOIS công khai; public công bố chúng.
Tham số: privacy.userConsent
Bắt buộc: Có
Kiểu & ràng buộc: Boolean. Phải xác nhận rằng bạn đồng ý với cài đặt quyền riêng tư đã chọn.
Tham số: contacts.registrant
Bắt buộc: Có
Kiểu & ràng buộc: ID liên hệ (từ contacts_save).
Tham số: contacts.admin
Bắt buộc: Có
Kiểu & ràng buộc: ID liên hệ.
Tham số: contacts.tech
Bắt buộc: Có
Kiểu & ràng buộc: ID liên hệ.
Tham số: contacts.billing
Bắt buộc: Có
Kiểu & ràng buộc: ID liên hệ.
Tham số: contacts.attributes
Bắt buộc: Không
Kiểu & ràng buộc: Tối đa 5 ID liên hệ bổ sung, chỉ bắt buộc đối với một số TLD nhất định.
Trả về
{"operationId": "...","domain": "example.com","years": 1,"status": "pending","note": "Registration of example.com submitted. ..."}
Truyền operationId cho async_operation_get để kiểm tra xem việc đăng ký có thành công hay không.
domain_set_contacts — Đặt liên hệ tên miềnThay đổi các liên hệ được gán cho một tên miền bạn sở hữu. Hoàn tất ngay lập tức (không có ID thao tác).
Tham số: domainName
Bắt buộc: Có
Kiểu & ràng buộc: Tên miền đầy đủ điều kiện (ASCII/A-label).
Tham số: registrant
Bắt buộc: Có
Kiểu & ràng buộc: ID liên hệ.
Tham số: admin
Bắt buộc: Không
Kiểu & ràng buộc: ID liên hệ, hoặc null.
Tham số: tech
Bắt buộc: Không
Kiểu & ràng buộc: ID liên hệ, hoặc null.
Tham số: billing
Bắt buộc: Không
Kiểu & ràng buộc: ID liên hệ, hoặc null.
Tham số: attributes
Bắt buộc: Không
Kiểu & ràng buộc: Tối đa 5 ID liên hệ, hoặc null.
Trả về
{ "verificationStatus": "verification" }
verification — người đăng ký phải xác nhận địa chỉ email của họ (một email xác nhận sẽ được gửi); success — đã xác nhận; null — không yêu cầu xác nhận đối với tên miền này.
dns_records_get — Lấy bản ghi DNSTruy xuất danh sách có phân trang của các bản ghi tài nguyên DNS cho một tên miền.
Tham số: domainName
Bắt buộc: Có
Kiểu & ràng buộc: Tên miền có các bản ghi cần lấy.
Tham số: take
Bắt buộc: Không
Kiểu & ràng buộc: Số mục trên mỗi trang, 1–500. Mặc định là 100.
Tham số: skip
Bắt buộc: Không
Kiểu & ràng buộc: Số mục cần bỏ qua, từ 0 trở lên. Mặc định là 0.
Tham số: orderBy
Bắt buộc: Không
Kiểu & ràng buộc: Tối đa 8 khóa sắp xếp: type, -type, name, -name.
Trả về — { items, total }. Mỗi mục là một bản ghi như được mô tả trong Hình dạng bản ghi, cùng với trường group tùy chọn cho biết bản ghi đến từ đâu (custom — do bạn tạo, product — do một sản phẩm Spaceship quản lý, personalNs — máy chủ tên cá nhân).
dns_records_save — Lưu bản ghi DNSThêm các bản ghi DNS tùy chỉnh hoặc cập nhật TTL của các bản ghi hiện có. Các bản ghi được đối sánh không phân biệt chữ hoa chữ thường, ngoại trừ bản ghi TXT (phân biệt chữ hoa chữ thường).
Tham số: domainName
Bắt buộc: Có
Kiểu & ràng buộc: Tên miền có các bản ghi cần cập nhật.
Tham số: records
Bắt buộc: Có
Kiểu & ràng buộc: 1–500 bản ghi — xem Hình dạng bản ghi. Mỗi bản ghi có thể bao gồm trường ttl tùy chọn.
Tham số: force
Bắt buộc: Không
Kiểu & ràng buộc: Boolean. Bỏ qua bước kiểm tra giải quyết xung đột và buộc cập nhật zone.
Trả về — { "saved": <number> }, số lượng bản ghi đã gửi. Phản hồi thành công nghĩa là tất cả bản ghi đã được chấp nhận; nếu bất kỳ bản ghi nào thất bại, toàn bộ lệnh gọi sẽ trả về lỗi.
dns_records_delete — Xóa bản ghi DNSXóa các bản ghi DNS tùy chỉnh. Không thể hoàn tác việc xóa. Các bản ghi được đối sánh không phân biệt chữ hoa chữ thường, ngoại trừ bản ghi TXT (phân biệt chữ hoa chữ thường).
Tham số: domainName
Bắt buộc: Có
Kiểu & ràng buộc: Tên miền có các bản ghi cần xóa.
Tham số: records
Bắt buộc: Có
Kiểu & ràng buộc: 1–500 bản ghi xác định các bản ghi hiện có — cùng hình dạng như khi lưu, nhưng không có ttl.
Trả về — { "deleted": <number> }, số lượng bản ghi đã gửi.
Mỗi bản ghi có:
type — một trong 13 loại được hỗ trợ bên dưới.
name — tên bản ghi không bao gồm tên miền: dùng @ cho chính tên miền (apex) và * cho ký tự đại diện.
ttl (chỉ lưu, tùy chọn) — thời gian lưu cache tính bằng giây, 60–3600.
Các trường theo từng loại:
Loại: A
Trường: address — địa chỉ IPv4.
Loại: AAAA
Trường: address — địa chỉ IPv6.
Loại: CNAME
Trường: cname — tên miền chuẩn (tối đa 253 ký tự).
Loại: ALIAS
Trường: aliasName — tên miền chuẩn; hành vi giống CNAME cho apex, nơi không cho phép CNAME.
Loại: NS
Trường: nameserver — tên máy chủ tên.
Loại: PTR
Trường: pointer — tên miền cho địa chỉ IP đã cho.
Loại: TXT
Trường: value — giá trị văn bản (đối sánh phân biệt chữ hoa chữ thường).
Loại: MX
Trường: exchange — máy chủ thư; preference — mức ưu tiên (0–65535, số thấp hơn được ưu tiên hơn).
Loại: CAA
Trường: flag — 0 hoặc 128 (bit quan trọng); tag — issue, issuewild, hoặc iodef; value — mã định danh CA với các tham số tùy chọn.
Loại: SRV
Trường: service (ví dụ: _sip); protocol (ví dụ: _tcp); priority và weight (0–65535); port (1–65535); target — tên miền máy chủ.
Loại: TLSA
Trường: usage, selector, matching (mỗi giá trị 0–255); port — * hoặc _<1–65535>; protocol (ví dụ: _tcp); associationData — hàm băm hoặc dữ liệu chứng chỉ.
Loại: HTTPS
Trường: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN hoặc .; tùy chọn port (* hoặc _<1–65535>), scheme (phải là _https khi port được đặt), svcParams.
Loại: SVCB
Trường: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN hoặc .; tùy chọn port, scheme (ví dụ: _tcp), svcParams.
async_operation_get — Lấy trạng thái thao tác bất đồng bộKiểm tra một thao tác chạy lâu được bắt đầu bởi công cụ khác (hiện tại là domain_register). Gọi công cụ này với operationId mà công cụ đó trả về, và lặp lại cho đến khi status là success hoặc failed.
Tham số: operationId
Bắt buộc: Có
Kiểu & ràng buộc: Chuỗi chữ và số, tối đa 36 ký tự, được trả về bởi công cụ đã bắt đầu thao tác.
Trả về
Trường: operationId
Ý nghĩa: Thao tác đang được thăm dò.
Trường: status
Ý nghĩa: pending, success, hoặc failed.
Trường: type
Ý nghĩa: Loại thao tác, hoặc null.
Trường: details
Ý nghĩa: Chi tiết bổ sung về thao tác, hoặc null.
Trường: createdAt / modifiedAt
Ý nghĩa: Thời điểm thao tác được tạo / cập nhật lần cuối (modifiedAt có thể là null).
Khi một lệnh gọi thất bại, công cụ trả về lỗi với mã và detail dễ hiểu cho con người giải thích điều gì đã xảy ra — ví dụ: đầu vào không hợp lệ (tên miền hoặc ID liên hệ sai định dạng), tên miền hoặc liên hệ không tồn tại, hoặc xung đột với trạng thái hiện tại. Nếu một công cụ bị từ chối vì trợ lý chưa được cấp quyền truy cập, hãy kết nối lại Spaceship MCP và phê duyệt quyền truy cập mà công cụ yêu cầu.