Shipyard MCP について
Shipyard MCPは、開発者やエージェント向けのShipyard CLI用MCPインターフェースです。エフェメラル環境の操作、サービスへのアクセス、ログ確認、リモートの問題調査に対応します。
主な機能
- 01環境の一覧と詳細確認
- 02環境の開始、停止、再起動、再構築
- 03サービス内でのコマンド実行
- 04サービスログの表示と追跡
- 05ボリュームとスナップショットの管理
活用シーン
- 01ブランチやプルリクエスト環境の確認
- 02サービス内でのテストやコマンド実行
- 03リモートの問題調査中のログ追跡
MCP 対応
Shipyard CLIにはAIアシスタント向けのMCPサーバーが含まれています。MCPクライアントにShipyard環境の管理機能を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Shipyard CLI
Shipyard プラットフォームでエフェメラル環境を管理するツールです。
AI アシスタントをお使いですか? CLI には MCP サーバーが含まれています。AI アシスタントから Shipyard を使用するをご覧ください。
インストール
-
Linux and macOS
curl https://www.shipyard.sh/install.sh | bash/usr/local/binにインストールされます。書き込みができない場合にのみsudoが使用されます。自分が所有するディレクトリなど、別の場所にインストールするには、SHIPYARD_INSTALL_DIRを設定します。curl https://www.shipyard.sh/install.sh | SHIPYARD_INSTALL_DIR="$HOME/.local/bin" bash -
Windows リリースページに移動し、Windows 用の実行ファイルをダウンロードします。
-
Homebrew
brew tap shipyard/tap brew install shipyard
ダウンロードの検証
各リリースでは、各バイナリの SHA-256 を記載した checksums.txt が公開されます。インストールスクリプトはバイナリを照合し、一致しない場合はインストールを拒否します。自分でダウンロードしたバイナリを確認するには、次のコマンドを実行します。
grep " shipyard-darwin-arm64$" checksums.txt | shasum -a 256 -c -
checksums.txt はバイナリと同じリリースから取得されるため、破損または不完全なダウンロードは検出できますが、ファイルが差し替えられたリリースは検出できません。以下のアテステーションは、このリポジトリのリリースワークフローでバイナリがビルドされたことを確認するためのものです。
1.9.0 以降のリリースでは、各バイナリに署名付きビルド来歴アテステーションも付属しています。これは、ビルドに使用されたワークフローの実行、コミット、タグを示します。また、ビルド元を記載した SPDX SBOM(Windows では shipyard-<os>-<arch>.sbom.json、.exe.sbom.json)も付属しています。ダウンロードしたリリースを指定して(ここでは v1.10.0)、GitHub CLI でアテステーションを検証します。
gh attestation verify shipyard-darwin-arm64 -R shipyard/shipyard-cli \
--signer-workflow shipyard/shipyard-cli/.github/workflows/release.yaml \
--source-ref refs/tags/v1.10.0
--source-ref は必ず付けてください。これがないと、そのリリースのタグビルドだけでなく、任意のブランチでワークフローのコピーが署名したものも検証に通ります。
この検証で指定するのはコミットではなくタグです。取り下げられたリリースのアテステーションは削除されないため、同じタグでバージョンが再リリースされた場合、取り下げられたバイナリも検証に通ります。コミットも固定するには、タグが指すコミットを指定して --source-digest <commit SHA> を追加します。
アップグレード
shipyard upgrade
shipyard update も同じ処理を行います。最新リリースをインストールし、リリースノートを表示します。Homebrew でインストールした場合は brew upgrade shipyard でアップグレードされます。それ以外のインストール方法では、リリースバイナリをダウンロードし、リリースの checksums.txt と照合してから、実行中のバイナリを置き換えます。/usr/local/bin など、書き込みできないディレクトリにバイナリがある場合は、sudo shipyard upgrade を実行します。
プレリリースも対象にするには --prerelease を追加します。現在のリリースを再インストールするには --force を追加します(Homebrew でインストールした場合は、代わりに brew reinstall shipyard を使用してください)。
1.9.0 以前からのアップグレード
1.9.0 以前の shipyard update はバージョンをテキストとして比較するため、1.10.0 以降をインストール済みのバージョンより古いと判定します。インストール時と同じ方法で一度アップグレードすれば、それ以降は shipyard upgrade を使用できます。
- Linux and macOS:
curl https://www.shipyard.sh/install.sh | bash - Windows: リリースページから実行ファイルをダウンロードします
- Homebrew:
brew upgrade shipyard
更新通知
新しいリリースがある場合、コマンドの終了後に CLI が通知します。通知は1日につき最大1回です。
A new version of shipyard is available: 1.9.0 → 1.10.0
Run `shipyard upgrade` to install it. Release notes: https://github.com/shipyard/shipyard-cli/releases/tag/v1.10.0
質問したり、入力を待ったりすることはありません。チェックはコマンドの実行中にバックグラウンドで行われます。コマンドの終了時にチェックが完了していない場合、CLI は最大1秒間待機します。これは、GitHub への問い合わせが発生する場合、つまり1日に1回程度、または見逃したリリースノートを取得する場合に限られます。brew upgrade など、ほかの方法でアップグレードした後の初回実行時には、それらのノートが表示されます。
通知は stderr に出力され、stderr がターミナルの場合にのみ表示されます。CI、識別情報を通知する AI コーディングエージェント(Claude Code、Codex、Cursor のエージェント、Gemini CLI)、および shipyard mcp serve では表示されません。無効にするには、SHIPYARD_NO_UPDATE_CHECK=1 を設定するか、~/.shipyard/config.yaml に update_check: false を追加します。
ログイン
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 |
例:
- ブランチ
mainでリポジトリflask-backendを実行しているすべての環境を一覧表示する:
shipyard get environments --repo-name flask-backend --branch main
- 削除済みの環境をすべて一覧表示する:
shipyard get environments --deleted
UUID で特定の環境の詳細を取得する
shipyard get environment {environment_uuid}
利用可能なフラグ:
| 名前 | 説明 | 型 | デフォルト値 |
|---|---|---|---|
| json | JSON 出力全体を表示する | boolean | false |
| org | 複数の組織に所属している場合の、環境の組織 | string | デフォルトの組織 |
| bypass-token | 環境のバイパストークンのみをスクリプト向けに表示する | boolean | false |
--bypass-token を使うと、誰もトークンを入力したり表示したりすることなく、スクリプトでトークンを使用できます。
SHIPYARD_TOKEN=$(shipyard get environment {environment_uuid} --bypass-token) && \
export SHIPYARD_TOKEN && curl -b "shipyard_token=$SHIPYARD_TOKEN" https://your-environment-url/
実行中の環境を停止する
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 detached deploy {application_build_uuid} --name my-detached-env
リポジトリごとにブランチを上書きし、新しいコミット時にデタッチ環境を再ビルドするかどうかを設定します。
# Override the branch for a repo, and never rebuild on new commits
shipyard detached deploy {application_build_uuid} --name my-detached-env --branch web=feature-x --build-on-commit never
# Per-repo build-on-commit settings (always | inherit | never)
shipyard detached deploy {application_build_uuid} --build-on-commit-for web=always --build-on-commit-for api=never
環境のすべてのサービスと公開ポートを取得する
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}
REST API を直接呼び出す
shipyard api /api/v1/environment
shipyard api -X PUT /api/v1/environment/{environment_uuid}/env-vars --input body.json
パスは /api/v1 または /api/v2 で始まる必要があります。トークンと組織は自動的に追加されます。
bypass_token と kubeconfig の認証情報は、--include-secrets を指定しない限り、表示されないように処理されます。
Telepresence に接続する
shipyard telepresence connect --env {environment_uuid}
接続すると、名前空間内のすべてのポッドと直接通信できます。サービスとの通信には、名前空間のホスト名が必要な場合があります。ホスト名は 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 プロファイルから読み込みます。
AI アシスタントから Shipyard を使用する(MCP)
shipyard mcp serve を実行すると、Model Context Protocol サーバーが起動します。Claude Code、Claude Desktop、Cursor、Codex などのアシスタントは、このサーバーを使って環境の一覧表示、確認、再ビルド、設定、サービスログの読み取り、ボリュームの管理を行い、プッシュした変更を環境で検証できます。
CLI にログインした状態で、Claude Code に追加します:
claude mcp add shipyard -- shipyard mcp serve
次のような質問をしてみてください:
- "
webリポジトリで実行中の環境はどれですか?" - "自分のブランチの環境にある
apiサービスのログを表示してください。" - "この環境の最新のビルドが失敗したのはなぜですか?"
- "この環境で
FEATURE_FLAGS=betaを設定し、workerサービスを再起動してください。" - "変更をプッシュしました。その環境で検証してください。"(または
/mcp__shipyard__verify)
他のクライアントでのセットアップ方法、設定、ツールの全一覧、verify プロンプト、トラブルシューティングについては、MCP ガイド をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。