返回 MCP 目录
public公开dns本地运行

shipyard-cli

Shipyard CLI是一个用于管理Shipyard平台上临时环境的命令行工具,支持环境管理、服务操作、日志查看、端口转发等功能,并集成了MCP服务供AI助手使用。

article

README

🚀 Shipyard命令行工具(CLI)

Shipyard命令行工具(CLI)是一款用于管理Shipyard平台上临时环境的实用工具,能帮助用户高效地在平台上进行环境管理操作。

🚀 快速开始

在使用Shipyard CLI之前,你需要完成安装和登录操作。

📦 安装指南

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访问权限,可以通过support@shipyard.build联系我们。如果你还有其他问题,欢迎加入我们的社区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 | 按分支名称过滤 | 字符串 | | | deleted | 返回已删除的环境 | 布尔值 | false | | json | 打印完整的JSON输出 | 布尔值 | false | | name | 按应用程序名称过滤 | 字符串 | | | org-name | 如果你属于多个组织,可以按组织名称过滤 | 字符串 | 你的默认组织 | | page | 请求的页码 | 整数 | 1 | | page-size | 请求的每页数量 | 整数 | 20 | | pull-request-number | 按拉取请求编号过滤 | 字符串 | | | repo-name | 按仓库名称过滤 | 字符串 | |

示例:

  • 列出在main分支上运行flask-backend仓库的所有环境:
shipyard get environments --repo-name flask-backend --branch main
  • 列出所有已删除的环境:
shipyard get environments --deleted

根据环境的UUID获取特定环境的详细信息

shipyard get environment {environment_uuid}

可用的标志参数如下: | 名称 | 描述 | 类型 | 默认值 | |----------|------------------------------------------------------|---------|------------------| | json | 打印完整的JSON输出 | 布尔值 | false | | org-name | 如果你属于多个组织,可以按组织名称过滤 | 字符串 | 你的默认组织 |

停止正在运行的环境

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 | 跟随日志输出 | 布尔值 | false | | tail | 显示最近的日志行数 | 整数 | 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包。如果尚未安装该包,你可以通过操作系统的包管理器进行安装。 要在当前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" }
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端