Shipwright构建MCP服务器
Shipwright Build项目的模型上下文协议(MCP)服务器。此服务器提供用于与Shipwright构建资源交互的工具,包括构建、构建运行、构建策略和集群构建策略。
概述
此MCP服务器通过MCP客户端可以使用的标准化工具公开Shipwright Build功能。它旨在与Shipwright Build Kubernetes原生CI/CD框架配合使用,从源代码构建容器映像。
特性
构建管理
- list_builds -列表在具有筛选选项的命名空间中构建
- get_build -获取特定版本的详细信息
- 创建_构建 -从源创建新的构建资源
- 删除_构建 -删除构建资源
BuildRun管理
- list_buildruns -在具有筛选选项的命名空间中列出构建运行
- get_buildrun -获取特定构建运行的详细信息
- create_buildrun -创建新的BuildRun(从现有的Build或内联规范)
- restart_buildrun -通过创建新的buildrun来重新启动buildrun
- delete_buildrun -删除BuildRun资源
战略管理
- 列表_构建策略 -列出具有筛选选项的命名空间范围的构建策略
- list_clusterbuild策略 -列出具有筛选选项的集群范围的构建策略
先决条件
- 转到1.23或更高版本
- 安装Shipwright Build后访问Kubernetes集群
- 正确的Kubernetes配置(kubeconfig或集群配置)
安装
- 构建服务器:
go build -o shipwright-build-mcp-server main.go用法
该服务器作为标准MCP服务器在stdin/stdout上运行。您可以将其与任何MCP客户端一起使用。
运行服务器
./shipwright-build-mcp-server客户端配置示例
请参考本项目根目录下的config.example.json
可用工具
构建工具
list_builds -使用筛选选项在命名空间中构建列表
namespace:要列出生成的命名空间(字符串,必填)prefix:筛选器构建的名称前缀(字符串,可选)label-selector:用于筛选构建的标签选择器(字符串,可选)
get_build –按名称获取特定版本
name:要获取的版本名称(字符串,必填)namespace:构建所在的命名空间(字符串,可选,默认值:“default”)
create_build –创建新的构建资源
name:要创建的版本名称(字符串,必填)namespace:将创建构建的命名空间(字符串,可选,默认值:“default”)source-type:源类型-“Git”或“OCI”(字符串,必填)source-url:源URL(Git存储库或OCI映像)(字符串,必填)context-dir:源中的上下文目录(字符串,可选)revision:Git修订版(分支、标记或提交SHA)(字符串,可选)strategy:构建策略名称(字符串,必填)strategy-kind:构建策略类型-“构建策略”或“集群构建策略”(字符串,可选,默认值:“集群构建战略”)output-image:输出容器图像引用(字符串,必填)parameters:将参数构建为键值对(对象,可选)timeout:构建超时持续时间,例如“30m”、“1h”(字符串,可选)
delete_build –删除构建资源
name:要删除的版本名称(字符串,必填)namespace:构建所在的命名空间(字符串,可选,默认值:“default”)
BuildRun工具
list_buildruns –列表构建在具有筛选选项的命名空间中运行
namespace:用于列出构建运行的命名空间(字符串,必填)prefix:筛选构建运行的名称前缀(字符串,可选)label-selector:筛选构建运行的标签选择器(字符串,可选)
get_buildrun –按名称获取特定的BuildRun
name:要获取的构建运行的名称(字符串,必填)namespace:buildrun所在的命名空间(字符串,可选,默认值:“default”)
create_buildrun –创建新的BuildRun资源
此工具支持两种模式:
模式1:参考现有版本
name:构建运行的名称(字符串,可选-如果未提供,则自动生成)namespace:将创建buildrun的命名空间(字符串,可选,默认值:“default”)build-name:要运行的现有版本的名称(字符串,此模式需要)parameters:构建要覆盖的参数(对象,可选)timeout:BuildRun超时持续时间(字符串,可选)service-account:构建运行的服务帐户(字符串,可选)
模式2:内联构建规范
name:构建运行的名称(字符串,可选-如果未提供,则自动生成)namespace:将创建buildrun的命名空间(字符串,可选,默认值:“default”)source-type:源类型-“Git”或“OCI”(字符串,此模式需要)source-url:源URL(字符串,此模式需要)context-dir:上下文目录(字符串,可选)revision:Git版本(字符串,可选)strategy:构建策略名称(字符串,此模式需要)strategy-kind:构建策略类型(字符串,可选,默认值:“ClusterBuildStrategy”)output-image:输出图像(字符串,此模式需要)parameters:构建参数(对象,可选)timeout:BuildRun超时持续时间(字符串,可选)service-account:构建运行的服务帐户(字符串,可选)
restart_buildrun –通过创建新的BuildRun重新启动BuildRun
name:要重新启动的构建运行的名称或引用(字符串,必填)namespace:buildrun所在的命名空间(字符串,可选,默认值:“default”)
delete_buildrun –删除BuildRun资源
name:要删除的构建运行的名称(字符串,必填)namespace:buildrun所在的命名空间(字符串,可选,默认值:“default”)
战略工具
list_buildstrategies –在命名空间中列出带有筛选选项的构建策略
namespace:用于列出生成策略的命名空间(字符串,必填)prefix:筛选构建策略的名称前缀(字符串,可选)label-selector:用于筛选构建策略的标签选择器(字符串,可选)
list_clusterbuildstrategies –列出带有过滤选项的集群构建策略
prefix:用于筛选集群构建策略的名称前缀(字符串,可选)label-selector:用于筛选集群构建策略的标签选择器(字符串,可选)
例子
创建构建
{
"name": "my-app-build",
"namespace": "default",
"source-type": "Git",
"source-url": "https://github.com/my-org/my-app",
"context-dir": ".",
"revision": "main",
"strategy": "buildah",
"strategy-kind": "ClusterBuildStrategy",
"output-image": "quay.io/my-org/my-app:latest",
"parameters": {
"dockerfile": "Dockerfile"
},
"timeout": "30m"
}从现有版本创建BuildRun
{
"name": "my-app-build-run-1",
"namespace": "default",
"build-name": "my-app-build",
"service-account": "build-sa"
}使用内联规范创建BuildRun
{
"namespace": "default",
"source-type": "Git",
"source-url": "https://github.com/my-org/my-app",
"strategy": "buildah",
"output-image": "quay.io/my-org/my-app:v1.0.0",
"parameters": {
"dockerfile": "Dockerfile.prod"
}
}删除内部版本
{
"name": "my-app-build",
"namespace": "default"
}删除BuildRun
{
"name": "my-app-build-run-1",
"namespace": "default"
}配置
服务器会自动检测并使用Kubernetes配置:
- 在集群配置中 -在Kubernetes pod中运行时
- Kubeconfig文件 -在集群外运行时(使用
~/.kube/config默认情况下)
Docker支持
您还可以在容器中运行服务器:
podman build -t shipwright-build-mcp-server .
podman run shipwright-build-mcp-server发展
从源头运行
go run main.go添加新工具
要添加新工具,请修改 main.go:
- 为工具定义参数结构
- 执行工具功能
- 使用在服务器上注册该工具
mcp.AddTool()
与Shipwright Build集成
此服务器旨在与Shipwright Build v0.13.0及更高版本配合使用。它使用 v1beta1 API版本,即当前的稳定版本。
支持的资源
- 构建 (
builds.shipwright.io/v1beta1)-构建定义 - BuildRun (
buildruns.shipwright.io/v1beta1)-构建执行实例 - 构建策略 (
buildstrategies.shipwright.io/v1beta1)-命名空间范围的构建策略 - 集群建设策略 (
clusterbuildstrategies.shipwright.io/v1beta1)-集群范围的构建策略
错误处理
服务器通过描述性消息提供全面的错误处理:
- 验证错误 -缺少必需的参数,格式无效
- Kubernetes错误 -找不到资源,权限被拒绝,API错误
- 网络错误 -连接问题、超时错误
所有错误都以MCP错误响应的形式返回,并带有有用的上下文。
