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

示例:

  • 列出在仓库 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}

在正在运行的环境的服务中执行命令

正在运行的环境的指定服务中执行任何带有参数和标志的命令。在双斜杠后传递任何命令参数。

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 提供了一个用于 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" }