Spaceship MCP connecte votre assistant IA (tel que Claude) à votre compte Spaceship. Grâce à lui, l’assistant peut vérifier et enregistrer des domaines, gérer les contacts de domaine, et lire ou modifier des enregistrements DNS en votre nom — il vous suffit de demander en langage naturel, et l’assistant appelle les bons outils.
Vous avez besoin d’un compte Spaceship. Spaceship MCP est disponible à l’adresse https://mcp.spaceship.com/mcp.
La façon de vous connecter dépend de votre assistant IA :
Claude (web et bureau) — ouvrez Paramètres, choisissez Connecteurs, trouvez Spaceship dans le répertoire des connecteurs et ajoutez-le. Claude d’Anthropic est actuellement le client avec lequel nous avons vérifié le fonctionnement de Spaceship MCP.
Autres clients MCP — ajoutez un serveur MCP distant et pointez-le vers https://mcp.spaceship.com/mcp. D’autres clients peuvent fonctionner, mais nous ne les avons pas encore vérifiés.
Lorsque vous vous connectez, il vous sera demandé de vous connecter à Spaceship et d’accorder à l’assistant l’accès à votre compte. Les outils que l’assistant peut utiliser dépendent de l’accès que vous approuvez — si un outil est rejeté parce que l’accès n’a pas été accordé, reconnectez-vous et approuvez l’accès nécessaire.
Outil : contacts_save
Ce qu’il fait : Enregistrer les coordonnées du contact et obtenir un ID de contact
Outil : contacts_get
Ce qu’il fait : Lire un contact enregistré à partir de son ID
Outil : domains_list
Ce qu’il fait : Lister vos domaines ou rechercher un domaine
Outil : domains_check_availability
Ce qu’il fait : Vérifier si des domaines sont disponibles à l’enregistrement
Outil : domain_register
Ce qu’il fait : Enregistrer (acheter) un domaine — dépense de l’argent
Outil : domain_set_contacts
Ce qu’il fait : Attribuer des contacts à un domaine que vous possédez
Outil : dns_records_get
Ce qu’il fait : Lire les enregistrements DNS d’un domaine
Outil : dns_records_save
Ce qu’il fait : Ajouter des enregistrements DNS ou mettre à jour leur TTL
Outil : dns_records_delete
Ce qu’il fait : Supprimer des enregistrements DNS
Outil : async_operation_get
Ce qu’il fait : Vérifier le statut d’une opération de longue durée
Plusieurs outils sont conçus pour être utilisés ensemble : la sortie de l’un devient l’entrée du suivant.
domains_check_availability — vérifiez le ou les noms souhaités. Ne poursuivez que lorsque result est available ; les noms premium incluent les tarifs dans premiumPricing.
contacts_save — enregistrez les coordonnées pour l’enregistrement. Renvoie un contactId. Réutilisez un contactId pour tous les rôles ou enregistrez plusieurs contacts.
domain_register — enregistrez le domaine en transmettant le ou les ID de contact comme contacts.registrant, contacts.admin, contacts.tech et contacts.billing. Cela facture le moyen de paiement par défaut de votre compte et est irréversible. L’outil renvoie immédiatement un operationId et status: pending — l’enregistrement se termine en arrière-plan.
async_operation_get — transmettez l’operationId de l’étape 3 pour vérifier la progression. Répétez jusqu’à ce que status devienne success ou failed.
domains_check_availability ──▶ contacts_save ──▶ domain_register ──▶ async_operation_get(available?) (contactId) (operationId) (pending → success/failed)
contacts_save — enregistrez les nouvelles coordonnées ; renvoie un contactId (ou réutilisez-en un existant, consultable via contacts_get).
domain_set_contacts — attribuez le ou les ID de contact au domaine. Cela se termine immédiatement et renvoie un verificationStatus : verification signifie que le titulaire doit confirmer son adresse e-mail avant que le changement ne s’applique complètement (un e-mail lui est envoyé), success signifie qu’elle est déjà confirmée, et null signifie qu’aucune confirmation n’est requise pour ce domaine.
domains_list — trouvez le domaine que vous souhaitez gérer (ou transmettez directement son nom si vous le connaissez).
dns_records_get — lisez les enregistrements actuels du domaine.
dns_records_save ou dns_records_delete — ajoutez, mettez à jour ou supprimez des enregistrements. Les enregistrements renvoyés par dns_records_get ont la même forme que celle acceptée par les outils d’enregistrement et de suppression (la suppression omet simplement ttl), afin que l’assistant puisse lire, ajuster et réécrire. La mise en correspondance ne tient pas compte de la casse, sauf pour les enregistrements TXT, qui sont sensibles à la casse.
domains_list — parcourez tous vos domaines avec tri, ou récupérez un seul domaine par son nom. Chaque domaine inclut sa date d’expiration, le paramètre de renouvellement automatique, le statut, les serveurs de noms, la protection de la confidentialité et les ID de contact attribués.
contacts_get — consultez les détails associés à tout ID de contact que vous voyez sur un domaine.
Chaque outil renvoie son résultat sous forme de JSON structuré. Les opérations de longue durée (actuellement uniquement domain_register) renvoient un ID d’opération à interroger avec async_operation_get ; tous les autres outils se terminent immédiatement.
Les contacts sont les personnes ou organisations associées à un enregistrement de domaine (titulaire, admin, tech, facturation). Un contact est référencé partout par son ID de contact — une chaîne alphanumérique de 27 à 32 caractères.
contacts_save — Enregistrer le contactEnregistre les coordonnées du contact et renvoie l’ID de contact généré. La validation de certains champs (tels que stateProvince et postalCode) dépend du pays sélectionné.
Paramètre : firstName
Obligatoire : Oui
Type et contraintes : Chaîne, 1–64 caractères. Peut inclure des traits d’union et des apostrophes.
Paramètre : lastName
Obligatoire : Oui
Type et contraintes : Chaîne, 1–64 caractères. Peut inclure des traits d’union et des apostrophes.
Paramètre : email
Obligatoire : Oui
Type et contraintes : Adresse e-mail valide, 254 caractères max.
Paramètre : address1
Obligatoire : Oui
Type et contraintes : Ligne d’adresse 1. Chaîne, 1–128 caractères.
Paramètre : city
Obligatoire : Oui
Type et contraintes : Chaîne, 1–64 caractères.
Paramètre : country
Obligatoire : Oui
Type et contraintes : Code pays à deux lettres (ISO 3166-1 alpha-2), p. ex. US.
Paramètre : phone
Obligatoire : Oui
Type et contraintes : Format international +CountryCode.Number, p. ex. +1.2025551234. 32 caractères max.
Paramètre : organization
Obligatoire : Non
Type et contraintes : Nom de l’organisation/de l’entreprise. 1–128 caractères.
Paramètre : address2
Obligatoire : Non
Type et contraintes : Ligne d’adresse 2. 1–128 caractères.
Paramètre : stateProvince
Obligatoire : Non
Type et contraintes : Nom de l’État/de la province, 1–64 caractères. Peut être requis selon le pays.
Paramètre : postalCode
Obligatoire : Non
Type et contraintes : 1–16 caractères. Peut être requis selon le pays.
Paramètre : phoneExt
Obligatoire : Non
Type et contraintes : Poste téléphonique, 1–16 caractères.
Paramètre : fax
Obligatoire : Non
Type et contraintes : Numéro de fax, même format +CountryCode.Number, 32 caractères max.
Paramètre : faxExt
Obligatoire : Non
Type et contraintes : Extension de fax, 1–16 caractères.
Paramètre : taxNumber
Obligatoire : Non
Type et contraintes : Numéro fiscal, 1–32 caractères.
Renvoie
{ "contactId": "..." }
contactId (27–32 caractères alphanumériques) est ce que vous transmettez à domain_register, domain_set_contacts et contacts_get.
contacts_get — Obtenir le contactLit les détails d’un contact enregistré à partir de son ID de contact. (Il n’existe pas d’outil pour lister tous les contacts — les ID de contact proviennent de contacts_save ou du champ contacts dans les résultats de domains_list.)
Paramètre : contactId
Obligatoire : Oui
Type et contraintes : ID de contact, 27 à 32 caractères alphanumériques.
Renvoie — { contact } avec :
Champ : firstName, lastName, email, address1, city, country, phone, postalCode
Type : Chaîne
Champ : organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
Type : Chaîne ou null
domains_list — Lister les domainesRécupère une liste paginée de vos domaines. Passez domain pour récupérer à la place un seul domaine par son nom (la pagination et le tri sont alors ignorés, et le résultat inclut une note l’indiquant s’ils ont été fournis).
Paramètre : domain
Obligatoire : Non
Type et contraintes : Nom de domaine pleinement qualifié (ASCII/A-label) pour récupérer un seul domaine.
Paramètre : take
Obligatoire : Non
Type et contraintes : Éléments par page, de 1 à 100. Valeur par défaut 10.
Paramètre : skip
Obligatoire : Non
Type et contraintes : Éléments à ignorer, 0 ou plus. Valeur par défaut 0.
Paramètre : orderBy
Obligatoire : Non
Type et contraintes : Jusqu’à 8 clés de tri : name, unicodeName, registrationDate, expirationDate ; préfixez avec - pour un ordre décroissant (par ex. -expirationDate).
Renvoie — { items, total } où chaque élément décrit un domaine :
Champ : name / unicodeName
Signification : Nom de domaine au format ASCII et Unicode.
Champ : isPremium
Signification : Indique si le domaine est un nom premium.
Champ : autoRenew
Signification : Indique si le renouvellement automatique est activé.
Champ : registrationDate / expirationDate
Signification : Horodatages d’enregistrement et d’expiration.
Champ : lifecycleStatus
Signification : creating, registered, grace1, grace2 ou redemption.
Champ : verificationStatus
Signification : verification, success, failed ou null lorsque non applicable.
Champ : eppStatuses
Signification : Codes d’état du registre (par ex. verrous de transfert).
Champ : suspensions
Signification : Suspensions actives, chacune avec un reasonCode.
Champ : privacyProtection
Signification : { level: "public" | "high", contactForm: boolean }.
Champ : nameservers
Signification : { provider: "basic" | "custom", hosts: [...] }.
Champ : contacts
Signification : ID de contact : registrant, plus admin/tech/billing/attributes (peut être null). Lisible via contacts_get.
domains_check_availability — Vérifier la disponibilité du domaineVérifie si un ou plusieurs noms de domaine sont disponibles à l’enregistrement.
Paramètre : domains
Obligatoire : Oui
Type et contraintes : 1 à 20 noms de domaine pleinement qualifiés (ASCII/A-label).
Renvoie — { results }, une entrée par nom demandé :
Champ : domain
Signification : Le nom vérifié.
Champ : result
Signification : available, taken, invalidDomainName, tldNotSupported ou unexpectedError.
Champ : premiumPricing
Signification : Pour les noms premium : liste de { operation, price, currency } où operation vaut register, transfer, renew ou restore. Vide pour les noms standard.
domain_register — Enregistrer le domaineEnregistre (achète) un domaine. Cela facture le moyen de paiement par défaut de votre compte et est irréversible. Séquence recommandée : domains_check_availability → contacts_save → domain_register. L’outil renvoie immédiatement un statut en attente ; l’enregistrement lui-même se termine en arrière-plan — vérifiez-le avec async_operation_get.
Paramètre : domain
Obligatoire : Oui
Type et contraintes : Nom de domaine pleinement qualifié à enregistrer, par ex. example.com.
Paramètre : years
Obligatoire : Oui
Type et contraintes : Période d’enregistrement en années, de 1 à 10.
Paramètre : autoRenew
Obligatoire : Oui
Type et contraintes : Booléen. Lorsque true, le domaine se renouvelle automatiquement à l’expiration en utilisant le moyen de paiement par défaut du compte.
Paramètre : privacy.level
Obligatoire : Oui
Type et contraintes : high masque les coordonnées du titulaire dans le WHOIS public ; public les publie.
Paramètre : privacy.userConsent
Obligatoire : Oui
Type et contraintes : Booléen. Doit confirmer que vous acceptez le paramètre de confidentialité sélectionné.
Paramètre : contacts.registrant
Obligatoire : Oui
Type et contraintes : ID de contact (provenant de contacts_save).
Paramètre : contacts.admin
Obligatoire : Oui
Type et contraintes : ID de contact.
Paramètre : contacts.tech
Obligatoire : Oui
Type et contraintes : ID de contact.
Paramètre : contacts.billing
Obligatoire : Oui
Type et contraintes : ID de contact.
Paramètre : contacts.attributes
Obligatoire : Non
Type et contraintes : Jusqu’à 5 ID de contact supplémentaires, requis uniquement pour certains TLD.
Renvoie
{"operationId": "...","domain": "example.com","years": 1,"status": "pending","note": "Registration of example.com submitted. ..."}
Passez operationId à async_operation_get pour vérifier si l’enregistrement a réussi.
domain_set_contacts — Définir les contacts du domaineModifie les contacts attribués à un domaine que vous possédez. S’exécute immédiatement (pas d’ID d’opération).
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Nom de domaine pleinement qualifié (ASCII/A-label).
Paramètre : registrant
Obligatoire : Oui
Type et contraintes : ID de contact.
Paramètre : admin
Obligatoire : Non
Type et contraintes : ID de contact, ou null.
Paramètre : tech
Obligatoire : Non
Type et contraintes : ID de contact, ou null.
Paramètre : billing
Obligatoire : Non
Type et contraintes : ID de contact, ou null.
Paramètre : attributes
Obligatoire : Non
Type et contraintes : Jusqu’à 5 ID de contact, ou null.
Renvoie
{ "verificationStatus": "verification" }
verification — le titulaire doit confirmer son adresse e-mail (un e-mail de confirmation est envoyé) ; success — déjà confirmé ; null — la confirmation n’est pas requise pour ce domaine.
dns_records_get — Obtenir les enregistrements DNSRécupère une liste paginée des enregistrements de ressources DNS pour un domaine.
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Le domaine dont il faut récupérer les enregistrements.
Paramètre : take
Obligatoire : Non
Type et contraintes : Éléments par page, de 1 à 500. Valeur par défaut 100.
Paramètre : skip
Obligatoire : Non
Type et contraintes : Éléments à ignorer, 0 ou plus. Valeur par défaut 0.
Paramètre : orderBy
Obligatoire : Non
Type et contraintes : Jusqu’à 8 clés de tri : type, -type, name, -name.
Retourne — { items, total }. Chaque élément est un enregistrement tel que décrit dans Formes d’enregistrement, plus un champ facultatif group indiquant d’où provient l’enregistrement (custom — créé par vous, product — géré par un produit Spaceship, personalNs — serveurs de noms personnels).
dns_records_save — Enregistrer les enregistrements DNSAjoute des enregistrements DNS personnalisés ou met à jour le TTL de ceux existants. Les enregistrements sont mis en correspondance sans tenir compte de la casse, sauf les enregistrements TXT (sensibles à la casse).
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Le domaine dont les enregistrements doivent être mis à jour.
Paramètre : records
Obligatoire : Oui
Type et contraintes : 1–500 enregistrements — voir Formes d’enregistrement. Chacun peut inclure un champ facultatif ttl.
Paramètre : force
Obligatoire : Non
Type et contraintes : Booléen. Ignore la vérification de résolution des conflits et force la mise à jour de la zone.
Retourne — { "saved": <number> }, le nombre d’enregistrements soumis. Une réponse réussie signifie que tous les enregistrements ont été acceptés ; si un enregistrement échoue, l’appel entier renvoie une erreur à la place.
dns_records_delete — Supprimer les enregistrements DNSSupprime les enregistrements DNS personnalisés. Les suppressions ne peuvent pas être annulées. Les enregistrements sont mis en correspondance sans tenir compte de la casse, sauf les enregistrements TXT (sensibles à la casse).
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Le domaine dont les enregistrements doivent être supprimés.
Paramètre : records
Obligatoire : Oui
Type et contraintes : 1–500 enregistrements identifiant des enregistrements existants — mêmes formes que pour l’enregistrement, mais sans ttl.
Retourne — { "deleted": <number> }, le nombre d’enregistrements soumis.
Chaque enregistrement comporte :
type — l’un des 13 types pris en charge ci-dessous.
name — le nom de l’enregistrement hors domaine : utilisez @ pour le domaine lui-même (apex) et * pour un joker.
ttl (enregistrement uniquement, facultatif) — durée de cache en secondes, 60–3600.
Champs spécifiques au type :
Type : A
Champs : address — adresse IPv4.
Type : AAAA
Champs : address — adresse IPv6.
Type : CNAME
Champs : cname — nom de domaine canonique (253 caractères max.).
Type : ALIAS
Champs : aliasName — nom de domaine canonique ; comportement semblable à CNAME pour l’apex, où CNAME n’est pas autorisé.
Type : NS
Champs : nameserver — nom du serveur de noms.
Type : PTR
Champs : pointer — nom de domaine pour l’adresse IP donnée.
Type : TXT
Champs : value — valeur texte (mise en correspondance sensible à la casse).
Type : MX
Champs : exchange — serveur de messagerie ; preference — priorité (0–65535, la plus basse étant préférée).
Type : CAA
Champs : flag — 0 ou 128 (bit critique) ; tag — issue, issuewild ou iodef ; value — identifiant d’AC avec paramètres facultatifs.
Type : SRV
Champs : service (p. ex. _sip) ; protocol (p. ex. _tcp) ; priority et weight (0–65535) ; port (1–65535) ; target — nom de domaine du serveur.
Type : TLSA
Champs : usage, selector, matching (chacun 0–255) ; port — * ou _<1–65535> ; protocol (p. ex. _tcp) ; associationData — hachage ou données du certificat.
Type : HTTPS
Champs : svcPriority (0–65535 ; 0 = AliasMode) ; targetName — FQDN ou . ; facultatif port (* ou _<1–65535>), scheme (doit être _https lorsque port est défini), svcParams.
Type : SVCB
Champs : svcPriority (0–65535 ; 0 = AliasMode) ; targetName — FQDN ou . ; facultatif port, scheme (p. ex. _tcp), svcParams.
async_operation_get — Obtenir le statut d’une opération asynchroneVérifie une opération de longue durée démarrée par un autre outil (actuellement domain_register). Appelez-le avec l’operationId renvoyé par cet outil, puis répétez jusqu’à ce que status soit success ou failed.
Paramètre : operationId
Obligatoire : Oui
Type et contraintes : Chaîne alphanumérique, 36 caractères max., renvoyée par l’outil qui a démarré l’opération.
Retourne
Champ : operationId
Signification : L’opération interrogée.
Champ : status
Signification : pending, success ou failed.
Champ : type
Signification : Type d’opération, ou null.
Champ : details
Signification : Détails supplémentaires sur l’opération, ou null.
Champ : createdAt / modifiedAt
Signification : Moment où l’opération a été créée / mise à jour pour la dernière fois (modifiedAt peut être null).
Lorsqu’un appel échoue, l’outil renvoie une erreur avec un code et un detail lisible par l’humain expliquant ce qui s’est mal passé — par exemple une entrée invalide (un nom de domaine ou un ID de contact mal formé), un domaine ou un contact inexistant, ou un conflit avec l’état actuel. Si un outil est rejeté parce que l’assistant n’a pas reçu l’accès correspondant, reconnectez Spaceship MCP et approuvez l’accès demandé.