Shipyard MCP Server

officiel

Le CLI Shipyard fournit un serveur MCP permettant aux agents de gérer directement les environnements Shipyard : en extrayant les logs, en comparant les branches, en exécutant des tests, et en arrêtant/démarrant les environnements.

Documentation

La CLI Shipyard

Un outil pour gérer les environnements éphémères sur la plateforme Shipyard.

Installation

  • Linux et macOS

    curl https://www.shipyard.sh/install.sh | bash
    
  • Windows Accédez à la page des releases et téléchargez l'exécutable pour Windows.

  • Homebrew

    brew tap shipyard/tap
    brew install shipyard
    

Connexion

Exécutez shipyard login pour initialiser la CLI. Cela vous invitera à vous connecter à Shipyard dans le navigateur. La CLI enregistrera ensuite votre jeton API dans une configuration locale. Vous êtes prêt à exécuter des commandes.

Ou définissez votre jeton manuellement

Définissez votre jeton API Shipyard comme valeur de la variable d'environnement SHIPYARD_API_TOKEN.

Vous pouvez l'obtenir en allant sur votre page de profil.

Vous pouvez nous contacter à [email protected] si vous souhaitez activer l'accès API pour votre organisation. Si vous avez d'autres questions, n'hésitez pas à rejoindre notre communauté Slack.

shipyard set token

Vous pouvez également utiliser un fichier de configuration stocké dans $HOME/.shipyard/config.yaml par défaut. Lorsque vous exécutez la CLI pour la première fois, elle créera une configuration vide par défaut que vous pourrez ensuite modifier.

Vous pouvez également spécifier un chemin de configuration non par défaut avec le drapeau --config {path} ajouté à n'importe quelle commande.

Ajoutez toutes les valeurs de configuration dans votre configuration et assurez-vous que le fichier suit la syntaxe YAML. Par exemple :

api_token: <your-token>
org: <your-non-default-org>

Les valeurs de vos variables d'environnement remplacent leurs valeurs correspondantes dans la configuration.

Utilisation de base

Obtenir toutes les organisations dont vous êtes membre

shipyard get orgs

Définir l'organisation par défaut globale

shipyard set org {org-name}

Obtenir l'organisation actuellement configurée

shipyard get org

Lister tous les environnements

shipyard get environments

Drapeaux disponibles :

NomDescriptionTypeValeur par défaut
branchFiltrer par nom de branchestring
deletedRetourner les environnements supprimésbooleanfalse
jsonAfficher la sortie JSON complètebooleanfalse
nameFiltrer par nom de l'applicationstring
org-nameFiltrer par nom d'organisation, si vous êtes membre de plusieurs organisationsstringvotre organisation par défaut
pageNuméro de page demandéint1
page-sizeTaille de page demandéeint20
pull-request-numberFiltrer par numéro de pull requeststring
repo-nameFiltrer par nom de dépôtstring

Exemples :

  • Lister tous les environnements exécutant le dépôt flask-backend sur la branche main :
shipyard get environments --repo-name flask-backend --branch main
  • Lister tous les environnements supprimés :
shipyard get environments --deleted

Obtenir les détails d'un environnement spécifique par son UUID

shipyard get environment {environment_uuid}

Drapeaux disponibles :

NomDescriptionTypeValeur par défaut
jsonAfficher la sortie JSON complètebooleanfalse
org-nameFiltrer par nom d'organisation, si vous êtes membre de plusieurs organisationsstringvotre organisation par défaut

Arrêter un environnement en cours d'exécution

shipyard stop environment {environment_uuid}

Redémarrer un environnement arrêté

shipyard restart environment {environment_uuid}

Annuler la construction en cours pour un environnement

shipyard cancel environment {environment_uuid}

Reconstruire un environnement

shipyard rebuild environment {environment_uuid}

Réactiver un environnement supprimé

shipyard revive environment {environment_uuid}

Obtenir tous les services et ports exposés pour un environnement

shipyard get services --env {environment_uuid}

Exécuter une commande dans le service d'un environnement en cours d'exécution

Exécutez n'importe quelle commande avec des arguments et des drapeaux dans un service donné pour un environnement en cours d'exécution. Passez tous les arguments de commande après un double slash.

shipyard exec --env {environment_uuid} --service {service_name} -- bash

Rediriger le port d'un service d'un environnement en cours d'exécution

shipyard port-forward --env {environment_uuid} --service {service_name} --ports {local_port}:{service_container_port}

Obtenir les logs pour le service d'un environnement en cours d'exécution

shipyard logs --env {environment_uuid} --service {service_name}

Visiter un environnement

shipyard visit {environment_uuid}

Drapeaux disponibles :

NomDescriptionTypeValeur par défaut
followSuivre la sortie des logsbooleanfalse
tailNombre de lignes de log récentes à afficherint3000

Travailler avec les volumes

Lister tous les volumes dans un environnement

shipyard get volumes --env {environment_uuid}

Lister tous les instantanés de volume dans un environnement

shipyard get snapshots --env {environment_uuid}

Réinitialiser un volume dans un environnement

shipyard reset volume --env {environment_uuid}

Créer un instantané dans un environnement

shipyard create snapshot --env {environment_uuid}

Charger un instantané de volume dans un environnement

shipyard load snapshot --env {environment_uuid} --sequence-number {n}

Téléverser un fichier vers un volume dans un environnement

shipyard upload volume --env {environment_uuid} --volume {volume} --file {filepath.bz2}

Se connecter à Telepresence

shipyard telepresence connect --env {environment_uuid}

À partir de là, vous pourrez communiquer directement avec tous les pods dans l'espace de noms. Vous pourriez avoir à utiliser le nom d'hôte de l'espace de noms pour communiquer avec les services, que vous pouvez obtenir via telepresence status sous le champ Namespace. Par exemple, pour communiquer avec redis, vous utiliseriez redis.shipyard-app-build-{uuid}

Construire un exécutable à partir du code :

Vous pouvez créer un exécutable en exécutant la commande suivante :

make

Pour exécuter ce nouvel exécutable :

./shipyard

Activer l'autocomplétion

Bash

Ce script dépend du paquet bash-completion. S'il n'est pas déjà installé, vous pouvez l'installer via le gestionnaire de paquets de votre OS. Pour charger les complétions dans votre session shell actuelle :

source <(shipyard completion bash)

Pour charger les complétions pour chaque nouvelle session, exécutez ce qui suit une fois.

Sur Linux :

shipyard completion bash > /etc/bash_completion.d/shipyard

Sur macOS :

shipyard completion bash > $(brew --prefix)/etc/bash_completion.d/shipyard

Zsh

Si la complétion shell n'est pas déjà activée dans votre environnement, vous devrez l'activer. Vous pouvez exécuter ce qui suit une fois :

echo "autoload -U compinit; compinit" >> ~/.zshrc

Pour charger les complétions dans votre session shell actuelle :

source <(shipyard completion zsh); compdef _shipyard shipyard

Pour charger les complétions pour chaque nouvelle session, exécutez ce qui suit une fois.

Sur Linux :

shipyard completion zsh > "${fpath[1]}/_shipyard"

Sur macOS :

shipyard completion zsh > $(brew --prefix)/share/zsh/site-functions/_shipyard

Vous devrez démarrer un nouveau shell pour que cette configuration prenne effet.

Fish

Pour charger les complétions dans votre session shell actuelle :

$ shipyard completion fish | source

Pour charger les complétions pour chaque session, exécutez une fois :

shipyard completion fish > ~/.config/fish/completions/shipyard.fish

PowerShell

Pour charger les complétions dans votre session shell actuelle :

shipyard completion powershell | Out-String | Invoke-Expression

Pour charger les complétions pour chaque nouvelle session, exécutez :

shipyard completion powershell > shipyard.ps1

et sourcez ce fichier depuis votre profil PowerShell.

Intégration du Model Context Protocol (MCP)

La CLI Shipyard fournit un serveur MCP pour l'intégration d'assistants IA. Cela permet aux assistants IA comme Claude de gérer directement les environnements Shipyard.

Outils MCP pris en charge

Gestion des environnements (7 outils)

  • get_environments - Lister les environnements avec filtrage
  • get_environment - Obtenir les détails d'un environnement spécifique
  • stop_environment - Arrêter un environnement en cours d'exécution
  • restart_environment - Redémarrer un environnement arrêté
  • rebuild_environment - Reconstruire avec le dernier commit
  • cancel_environment - Annuler la dernière construction d'un environnement
  • revive_environment - Réactiver un environnement supprimé

Gestion des services (2 outils)

  • get_services - Lister les services dans un environnement
  • get_logs - Obtenir les logs d'un service

Gestion des volumes (5 outils)

  • get_volumes - Lister les volumes dans un environnement
  • reset_volume - Réinitialiser le volume à l'état initial
  • get_snapshots - Lister les instantanés de volume
  • create_snapshot - Créer un instantané de volume
  • load_snapshot - Charger un instantané de volume

Gestion des organisations (3 outils)

  • get_orgs - Lister toutes les organisations
  • get_org - Obtenir l'organisation par défaut actuelle
  • set_org - Définir l'organisation par défaut

Outils limités

Ces outils retournent un texte d'aide dirigeant les utilisateurs vers les commandes CLI à la place :

  • exec_service - Exécuter des commandes dans les conteneurs de service
  • port_forward - Rediriger les ports des services vers la machine locale
  • telepresence_connect - Se connecter à Telepresence

Ajouter à Claude

Avec le jeton API et le nom de l'organisation :

claude mcp add shipyard --env SHIPYARD_API_TOKEN=your-token-here --env SHIPYARD_ORG=your-org-name -- shipyard mcp serve

Si déjà configuré avec la CLI :

claude mcp add shipyard -- shipyard mcp serve

Ajouter à Codex CLI

Modifiez ~/.codex/config.toml et ajoutez :

[mcp_servers.shipyard]
command = "shipyard"
args = ["mcp", "serve"]
env = { "SHIPYARD_API_TOKEN" = "your-token-here", "SHIPYARD_ORG" = "your-org-name" }