Shipyard MCP Server
officielLe 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 :
| Nom | Description | Type | Valeur par défaut |
|---|---|---|---|
| branch | Filtrer par nom de branche | string | |
| deleted | Retourner les environnements supprimés | boolean | false |
| json | Afficher la sortie JSON complète | boolean | false |
| name | Filtrer par nom de l'application | string | |
| org-name | Filtrer par nom d'organisation, si vous êtes membre de plusieurs organisations | string | votre organisation par défaut |
| page | Numéro de page demandé | int | 1 |
| page-size | Taille de page demandée | int | 20 |
| pull-request-number | Filtrer par numéro de pull request | string | |
| repo-name | Filtrer par nom de dépôt | string |
Exemples :
- Lister tous les environnements exécutant le dépôt
flask-backendsur la branchemain:
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 :
| Nom | Description | Type | Valeur par défaut |
|---|---|---|---|
| json | Afficher la sortie JSON complète | boolean | false |
| org-name | Filtrer par nom d'organisation, si vous êtes membre de plusieurs organisations | string | votre 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 :
| Nom | Description | Type | Valeur par défaut |
|---|---|---|---|
| follow | Suivre la sortie des logs | boolean | false |
| tail | Nombre de lignes de log récentes à afficher | int | 3000 |
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 filtrageget_environment- Obtenir les détails d'un environnement spécifiquestop_environment- Arrêter un environnement en cours d'exécutionrestart_environment- Redémarrer un environnement arrêtérebuild_environment- Reconstruire avec le dernier commitcancel_environment- Annuler la dernière construction d'un environnementrevive_environment- Réactiver un environnement supprimé
Gestion des services (2 outils)
get_services- Lister les services dans un environnementget_logs- Obtenir les logs d'un service
Gestion des volumes (5 outils)
get_volumes- Lister les volumes dans un environnementreset_volume- Réinitialiser le volume à l'état initialget_snapshots- Lister les instantanés de volumecreate_snapshot- Créer un instantané de volumeload_snapshot- Charger un instantané de volume
Gestion des organisations (3 outils)
get_orgs- Lister toutes les organisationsget_org- Obtenir l'organisation par défaut actuelleset_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 serviceport_forward- Rediriger les ports des services vers la machine localetelepresence_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" }