Shipyard MCP Server

官方

Shipyard CLI 提供了一個 MCP 伺服器,讓代理程式能直接管理 Shipyard 環境:包括拉取日誌、比較分支、執行測試,以及停止/啟動環境。

文件

Shipyard CLI

一個用於管理 Shipyard 平台上短暫環境的工具。

安裝

  • 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

範例:

  • 列出在分支 main 上執行儲存庫 flask-backend 的所有環境:
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}

在執行中環境的服務內執行指令

執行中環境的指定服務中,使用任何引數和旗標執行任何指令。在雙斜線後傳遞任何指令引數。

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 套件。如果尚未安裝,您可以透過作業系統的套件管理器安裝它。 要在目前的 shell 工作階段中載入自動完成:

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

如果您的環境中尚未啟用 shell 自動完成,您需要先啟用它。您可以執行以下指令一次:

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

要在目前的 shell 工作階段中載入自動完成:

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

您需要啟動一個新的 shell 才能使此設定生效。

Fish

要在目前的 shell 工作階段中載入自動完成:

$ shipyard completion fish | source

要為每個工作階段載入自動完成,請執行一次:

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

PowerShell

要在目前的 shell 工作階段中載入自動完成:

shipyard completion powershell | Out-String | Invoke-Expression

要為每個新工作階段載入自動完成,請執行:

shipyard completion powershell > shipyard.ps1

並從您的 PowerShell 設定檔中來源化此檔案。

模型上下文協定 (MCP) 整合

Shipyard CLI 提供一個 MCP 伺服器,用於 AI 助理整合。這讓像 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" }