Shipyard MCP Server

公式

Shipyard CLIは、エージェントがShipyard環境を直接管理するためのMCPサーバーを提供します。ログの取得、ブランチの比較、テストの実行、環境の停止/開始が可能です。

ドキュメント

Shipyard CLI

Shipyard プラットフォーム上の Ephemeral Environment を管理するためのツールです。

インストール

  • Linux および macOS

    curl https://www.shipyard.sh/install.sh | bash
    
  • Windows リリースページにアクセスし、Windows 用の実行ファイルをダウンロードしてください。

  • Homebrew

    brew tap shipyard/tap
    brew install shipyard
    

ログイン

shipyard login を実行して CLI を初期化します。ブラウザで Shipyard へのログインが求められます。CLI は API トークンをローカル設定に保存します。これでコマンドを実行する準備が整います。

または手動でトークンを設定する

Shipyard API トークンを SHIPYARD_API_TOKEN 環境変数の値として設定します。

トークンはプロフィールページから取得できます。

組織で API アクセスを有効にしたい場合は、[email protected] までご連絡ください。その他ご質問がある場合は、コミュニティ Slack にご参加ください。

shipyard set token

または、デフォルトで $HOME/.shipyard/config.yaml に保存される設定ファイルを使用することもできます。 CLI を初めて実行すると、デフォルトの空の設定ファイルが作成され、それを編集できます。

任意のコマンドに --config {path} フラグを追加して、デフォルト以外の設定パスを指定することもできます。

設定ファイルに設定値を追加し、ファイルが YAML 構文に従っていることを確認してください。 例:

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

環境変数の値は、設定ファイル内の対応する値よりも優先されます。

基本的な使い方

所属しているすべての組織を取得する

shipyard get orgs

グローバルデフォルト組織を設定する

shipyard set org {org-name}

現在設定されている組織を取得する

shipyard get org

すべての環境を一覧表示する

shipyard get environments

利用可能なフラグ:

名前説明デフォルト値
branchブランチ名でフィルタリングstring
deleted削除された環境を返すbooleanfalse
json完全な JSON 出力を表示するbooleanfalse
nameアプリケーション名でフィルタリングstring
org-name組織名でフィルタリング(複数組織に所属している場合)stringデフォルト組織
page要求するページ番号int1
page-size要求するページサイズint20
pull-request-numberプルリクエスト番号でフィルタリングstring
repo-nameリポジトリ名でフィルタリングstring

例:

  • リポジトリ flask-backend のブランチ main で実行中のすべての環境を一覧表示する:
shipyard get environments --repo-name flask-backend --branch main
  • 削除されたすべての環境を一覧表示する:
shipyard get environments --deleted

UUID で特定の環境の詳細を取得する

shipyard get environment {environment_uuid}

利用可能なフラグ:

名前説明デフォルト値
json完全な JSON 出力を表示するbooleanfalse
org-name組織名でフィルタリング(複数組織に所属している場合)stringデフォルト組織

実行中の環境を停止する

shipyard stop environment {environment_uuid}

停止した環境を再起動する

shipyard restart environment {environment_uuid}

環境の進行中のビルドをキャンセルする

shipyard cancel environment {environment_uuid}

環境を再ビルドする

shipyard rebuild environment {environment_uuid}

削除された環境を復活させる

shipyard revive environment {environment_uuid}

環境のすべてのサービスと公開ポートを取得する

shipyard get services --env {environment_uuid}

実行中の環境のサービスに Exec する

実行中の環境の特定のサービスで、任意のコマンドを引数とフラグ付きで実行します。コマンド引数はダブルスラッシュの後に渡します。

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

実行中の環境のサービスポートをポートフォワードする

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

実行中の環境のサービスのログを取得する

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

環境にアクセスする

shipyard visit {environment_uuid}

利用可能なフラグ:

名前説明デフォルト値
followログ出力を追跡するbooleanfalse
tail表示する最近のログ行数int3000

ボリュームの操作

環境内のすべてのボリュームを一覧表示する

shipyard get volumes --env {environment_uuid}

環境内のすべてのボリュームスナップショットを一覧表示する

shipyard get snapshots --env {environment_uuid}

環境内のボリュームをリセットする

shipyard reset volume --env {environment_uuid}

環境内にスナップショットを作成する

shipyard create snapshot --env {environment_uuid}

環境内のボリュームスナップショットをロードする

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

環境内のボリュームにファイルをアップロードする

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

Telepresence に接続する

shipyard telepresence connect --env {environment_uuid}

そこから、名前空間内のすべての Pod と直接通信できるようになります。サービスと通信するには、名前空間のホスト名を使用する必要がある_場合があります_。これは telepresence status の Namespace フィールドで取得できます。たとえば、Redis と通信するには、redis.shipyard-app-build-{uuid} を使用します。

コードから実行ファイルをビルドする:

次のコマンドを実行して実行ファイルを作成できます:

make

この新しい実行ファイルを実行するには:

./shipyard

自動補完を有効にする

Bash

このスクリプトは bash-completion パッケージに依存しています。まだインストールされていない場合は、OS のパッケージマネージャーを使用してインストールできます。 現在のシェルセッションで補完を読み込むには:

source <(shipyard completion bash)

新しいセッションごとに補完を読み込むには、以下を一度実行します。

Linux の場合:

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

macOS の場合:

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

Zsh

環境でシェル補完がまだ有効になっていない場合は、有効にする必要があります。以下を一度実行します:

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

現在のシェルセッションで補完を読み込むには:

source <(shipyard completion zsh); compdef _shipyard shipyard

新しいセッションごとに補完を読み込むには、以下を一度実行します。

Linux の場合:

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

macOS の場合:

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

この設定を有効にするには、新しいシェルを開始する必要があります。

Fish

現在のシェルセッションで補完を読み込むには:

$ shipyard completion fish | source

セッションごとに補完を読み込むには、以下を一度実行します:

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

PowerShell

現在のシェルセッションで補完を読み込むには:

shipyard completion powershell | Out-String | Invoke-Expression

新しいセッションごとに補完を読み込むには、以下を実行します:

shipyard completion powershell > shipyard.ps1

そして、PowerShell プロファイルからこのファイルをソースします。

Model Context Protocol (MCP) 統合

Shipyard CLI は、AI アシスタント統合のための MCP サーバーを提供します。これにより、Claude などの AI アシスタントが Shipyard 環境を直接管理できるようになります。

サポートされている MCP ツール

環境管理 (7 ツール)

  • get_environments - フィルタリングして環境を一覧表示
  • get_environment - 特定の環境の詳細を取得
  • stop_environment - 実行中の環境を停止
  • restart_environment - 停止した環境を再起動
  • rebuild_environment - 最新のコミットで再ビルド
  • cancel_environment - 環境の最新ビルドをキャンセル
  • revive_environment - 削除された環境を復活

サービス管理 (2 ツール)

  • get_services - 環境内のサービスを一覧表示
  • get_logs - サービスからログを取得

ボリューム管理 (5 ツール)

  • get_volumes - 環境内のボリュームを一覧表示
  • reset_volume - ボリュームを初期状態にリセット
  • get_snapshots - ボリュームスナップショットを一覧表示
  • create_snapshot - ボリュームスナップショットを作成
  • load_snapshot - ボリュームスナップショットをロード

組織管理 (3 ツール)

  • get_orgs - すべての組織を一覧表示
  • get_org - 現在のデフォルト組織を取得
  • set_org - デフォルト組織を設定

制限付きツール

これらのツールは、CLI コマンドを代わりに使用するようユーザーに指示するヘルプテキストを返します:

  • exec_service - サービスコンテナでコマンドを実行
  • port_forward - サービスをローカルマシンにポートフォワード
  • telepresence_connect - Telepresence に接続

Claude への追加

API トークンと組織名を使用する場合:

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

CLI で既に設定されている場合:

claude mcp add shipyard -- shipyard mcp serve

Codex CLI への追加

~/.codex/config.toml を編集し、以下を追加します:

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