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 | 返回已删除的环境 | 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}
在正在运行的环境的服务中执行命令
在正在运行的环境的指定服务中执行任何带有参数和标志的命令。在双斜杠后传递任何命令参数。
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 包。如果尚未安装,您可以通过操作系统的包管理器进行安装。
要在当前 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" }