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 | 削除された環境を返す | boolean | false |
| json | 完全な JSON 出力を表示する | boolean | false |
| name | アプリケーション名でフィルタリング | string | |
| org-name | 組織名でフィルタリング(複数組織に所属している場合) | string | デフォルト組織 |
| page | 要求するページ番号 | int | 1 |
| page-size | 要求するページサイズ | int | 20 |
| 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 出力を表示する | boolean | false |
| 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 | ログ出力を追跡する | boolean | false |
| tail | 表示する最近のログ行数 | int | 3000 |
ボリュームの操作
環境内のすべてのボリュームを一覧表示する
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" }