关于 Tektoncd Model Context Protocol server
Tekton MCP Server 是一个 MCP 服务,将 Kubernetes 集群中的 Tekton 资源暴露给 MCP 客户端,目前主要面向 tektoncd/pipeline。它支持 stdio 和 Streamable HTTP 两种传输方式,适合需要通过 AI 管理 CI/CD 流水线的平台工程师。项目仍在积极开发中。
主要功能
- 01列出、查看、创建、更新和删除 Pipeline 与 Task 等资源
- 02查询 TaskRun 日志
- 03启动与重启 PipelineRun 和 TaskRun
- 04集成 Artifact Hub 安装并触发社区 Task 与 Pipeline
- 05支持 stdio 与 Streamable HTTP 传输
适用场景
- 01通过 MCP 客户端检查集群中的 PipelineRun 状态
- 02排查失败 TaskRun 的日志
- 03从 Artifact Hub 安装社区 Task 并在集群中触发
MCP 相关
该项目是 MCP 服务,向 MCP 客户端提供 list_pipelines、create_pipelinerun 等 Tekton 资源操作工具,并通过 Kubernetes 凭据访问集群。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Tekton Model Context Protocol server
Tekton MCP Server 将 Tekton 资源暴露给
Model Context Protocol (MCP) 客户端。它
目前专注于 tektoncd/pipeline,
并同时支持 stdio 和 Streamable HTTP 传输。
重要
此项目正在积极开发中。请在非生产集群中测试它, 并审查授予服务器和所连接 MCP 客户端的访问权限。
前提条件
服务器需要:
- 访问已安装 Tekton Pipelines 的 Kubernetes 集群
- 用于本地使用的 kubeconfig,或部署到 Kubernetes 时的集群内服务账号
- 从源码构建时,使用
go.mod中指定版本的 Go
从源码构建
git clone https://github.com/tektoncd/mcp-server.git
cd mcp-server
mkdir -p bin
go build -mod=vendor -o bin/tekton-mcp-server ./cmd/tekton-mcp-server
服务器使用标准的 Kubernetes 客户端配置。在运行之前,请确认
kubectl config current-context 指向预期的集群。
本地运行
stdio
当 MCP 客户端将服务器作为子进程启动时,使用 stdio:
./bin/tekton-mcp-server -transport=stdio
典型的 MCP 客户端条目如下所示;请根据所使用的客户端调整周边配置:
{
"mcpServers": {
"tekton": {
"command": "/absolute/path/to/bin/tekton-mcp-server",
"args": ["-transport=stdio"]
}
}
}
Streamable HTTP
对于本地开发,绑定到 localhost:
./bin/tekton-mcp-server -transport=http -address=127.0.0.1:8080
将 MCP 客户端连接到 http://127.0.0.1:8080。
部署到 Kubernetes
将 KO_DOCKER_REPO 设置为集群可访问的镜像仓库,然后构建
镜像并应用清单:
export KO_DOCKER_REPO=registry.example.com/YOUR-USER/mcp-server
ko apply -R -f config/
kubectl -n tekton-mcp rollout status deployment/tekton-mcp-server
如需从本地访问集群内服务:
kubectl -n tekton-mcp port-forward service/tekton-mcp-server 8080:8080
ko delete -R -f config/ 会删除所有包含的资源,包括
tekton-mcp 命名空间以及该命名空间中存储的任何其他内容。仅当
确实需要这种破坏性清理时才使用它。
兼容性
服务器使用 Tekton v1 资源,并针对
go.mod 中记录的 Kubernetes、Tekton Pipelines 和 MCP Go SDK 版本进行构建和测试。在发布更广泛的兼容性矩阵之前,请使用服务器将要运行的确切集群版本对其进行测试。
安全性
服务器可以使用其 kubeconfig 或服务账号的权限读取和修改 Tekton 资源。多个工具会创建、修补、启动、重启和 删除资源,因此在评估它时,请使用专用的最小权限身份和一次性 命名空间。
HTTP 传输不提供身份验证或 TLS。在没有进行身份验证并提供 TLS 终止的代理的情况下,不要将其暴露给不受信任的网络。包含的开发清单会授予集群范围的权限,在共享集群上使用之前应 进行审查。
请通过 项目安全政策私下报告漏洞。 不要为疑似漏洞打开公开 issue。
开发与贡献
有关构建、测试、依赖更新、
集群部署和调试说明,请参阅 DEVELOPMENT.md。贡献遵循
CONTRIBUTING.md 中的流程。
该项目在
tektoncd/community#1194 中被提出并接受。
工具
列表操作
list_pipelines – 列出集群中的 Pipelines,并提供筛选选项
namespace: 要从中列出 Pipelines 的命名空间(字符串,必填)prefix: 用于筛选 Pipelines 的名称前缀(字符串,可选)label-selector: 用于筛选 Pipelines 的标签选择器(字符串,可选)
list_pipelineruns – 列出集群中的 PipelineRuns,并提供筛选选项
namespace: 要从中列出 PipelineRuns 的命名空间(字符串,必填)prefix: 用于筛选 PipelineRuns 的名称前缀(字符串,可选)label-selector: 用于筛选 PipelineRuns 的标签选择器(字符串,可选)
list_tasks – 列出集群中的 Task,支持筛选选项
namespace:要列出 Task 的命名空间(字符串,必填)prefix:用于筛选 Task 的名称前缀(字符串,可选)label-selector:用于筛选 Task 的标签选择器(字符串,可选)
list_taskruns – 列出集群中的 TaskRun,支持筛选选项
namespace:要列出 TaskRun 的命名空间(字符串,必填)prefix:用于筛选 TaskRun 的名称前缀(字符串,可选)label-selector:用于筛选 TaskRun 的标签选择器(字符串,可选)
list_stepactions – 列出集群中的 Step Action,支持筛选选项
namespace:要列出 Step Action 的命名空间(字符串,必填)prefix:用于筛选 Step Action 的名称前缀(字符串,可选)label-selector:用于筛选 Step Action 的标签选择器(字符串,可选)
创建操作
create_pipeline – 根据 YAML 定义创建新的 Pipeline
namespace:将在其中创建 Pipeline 的命名空间(字符串,可选,默认值:"default")yaml:Pipeline 的 YAML 定义(字符串,必填)
create_task – 根据 YAML 定义创建新的 Task
namespace:将在其中创建 Task 的命名空间(字符串,可选,默认值:"default")yaml:Task 的 YAML 定义(字符串,必填)
create_pipelinerun – 根据 YAML 定义创建新的 PipelineRun,或基于 Pipeline 生成
namespace:将在其中创建 PipelineRun 的命名空间(字符串,可选,默认值:"default")yaml:PipelineRun 的 YAML 定义(字符串,可选)generateName:为 PipelineRun 生成的名称前缀(字符串,可选)
create_taskrun – 根据 YAML 定义创建新的 TaskRun
namespace:将在其中创建 TaskRun 的命名空间(字符串,可选,默认值:"default")yaml:TaskRun 的 YAML 定义(字符串,可选)generateName:为 TaskRun 生成的名称前缀(字符串,可选)
获取操作
get_pipeline – 按名称获取特定的 Pipeline
name:要获取的 Pipeline 名称(字符串,必填)namespace:Pipeline 的命名空间(字符串,可选,默认值:"default")output:输出格式 - json 或 yaml(字符串,可选,默认值:"yaml")
get_task – 按名称获取特定的 Task
name:要获取的 Task 名称(字符串,必填)namespace:Task 的命名空间(字符串,可选,默认值:"default")output:输出格式 - json 或 yaml(字符串,可选,默认值:"yaml")
get_pipelinerun – 按名称获取特定的 PipelineRun
name:要获取的 PipelineRun 名称(字符串,必填)namespace:PipelineRun 的命名空间(字符串,可选,默认值:"default")output:输出格式 - json 或 yaml(字符串,可选,默认值:"yaml")
get_taskrun – 按名称获取特定的 TaskRun
name:要获取的 TaskRun 名称(字符串,必填)namespace:TaskRun 的命名空间(字符串,可选,默认值:"default")output:输出格式 - json 或 yaml(字符串,可选,默认值:"yaml")
get_taskrun_logs - 获取指定 TaskRun 的日志
name:要获取日志的 TaskRun 名称或引用(字符串,必填)namespace:TaskRun 所在的命名空间(字符串,可选,默认值:"default")
更新操作
update_pipeline – 更新现有的 Pipeline
name:要更新的 Pipeline 名称(字符串,必填)namespace:Pipeline 的命名空间(字符串,可选,默认值:"default")yaml:Pipeline 的更新后 YAML 定义(字符串,必填)
update_task – 更新现有的 Task
name:要更新的 Task 名称(字符串,必填)namespace:Task 的命名空间(字符串,可选,默认值:"default")yaml:Task 的更新后 YAML 定义(字符串,必填)
patch_pipeline – 将 JSON patch 应用到现有 Pipeline
name:要修补的 Pipeline 名称(字符串,必填)namespace:Pipeline 的命名空间(字符串,可选,默认:"default")patch:要应用到 Pipeline 的 JSON patch(字符串,必填)
删除操作
delete_pipeline – 删除 Pipeline
name:要删除的 Pipeline 名称(字符串,必填)namespace:Pipeline 的命名空间(字符串,可选,默认:"default")
delete_task – 删除 Task
name:要删除的 Task 名称(字符串,必填)namespace:Task 的命名空间(字符串,可选,默认:"default")
delete_pipelinerun – 删除 PipelineRun
name:要删除的 PipelineRun 名称(字符串,必填)namespace:PipelineRun 的命名空间(字符串,可选,默认:"default")
delete_taskrun – 删除 TaskRun
name:要删除的 TaskRun 名称(字符串,必填)namespace:TaskRun 的命名空间(字符串,可选,默认:"default")
delete_all_pipelineruns – 根据选择器删除多个 PipelineRun
namespace:要从中删除 PipelineRun 的命名空间(字符串,可选,默认:"default")labelSelector:用于筛选要删除的 PipelineRun 的标签选择器(字符串,可选)fieldSelector:用于筛选要删除的 PipelineRun 的字段选择器(字符串,可选)
启动/重启操作
start_pipeline – 启动 Pipeline
name:要启动的 Pipeline 名称或引用(字符串,必填)namespace:Pipeline 所在的命名空间(字符串,可选,默认:"default")
start_task – 启动 Task
name:要启动的 Task 名称或引用(字符串,必填)namespace:Task 所在的命名空间(字符串,可选,默认:"default")
restart_pipelinerun – 重启 PipelineRun
name:要重启的 PipelineRun 名称或引用(字符串,必填)namespace:PipelineRun 所在的命名空间(字符串,可选,默认:"default")
restart_taskrun – 重启 TaskRun
name:要重启的 TaskRun 名称或引用(字符串,必填)namespace:TaskRun 所在的命名空间(字符串,可选,默认:"default")
Artifact Hub 集成
MCP 服务提供与 Artifact Hub 的集成,以便从社区目录中发现、安装和触发 Tekton task 与 pipeline。
Artifact Hub 发现操作
list_artifacthub_tasks – 从 Artifact Hub 列出 Tekton Task
query:用于筛选 task 的搜索查询(字符串,可选)limit:要返回的最大结果数(整数,可选,默认:20)
list_artifacthub_pipelines – 从 Artifact Hub 列出 Tekton Pipeline
query:用于筛选 pipeline 的搜索查询(字符串,可选)limit:要返回的最大结果数(整数,可选,默认:20)
Artifact Hub 安装操作
install_artifacthub_task – 从 Artifact Hub 安装 Tekton Task
packageId:要安装的 task 的 Artifact Hub 包 ID(字符串,必填)version:要安装的 task 版本(字符串,可选)namespace:将安装 task 的命名空间(字符串,可选,默认:"default")
install_artifacthub_pipeline – 从 Artifact Hub 安装 Tekton Pipeline
packageId:要安装的 pipeline 的 Artifact Hub 包 ID(字符串,必填)version:要安装的 pipeline 版本(字符串,可选)namespace:将安装 pipeline 的命名空间(字符串,可选,默认:"default")
Artifact Hub 触发操作
trigger_artifacthub_task – 触发从 Artifact Hub 安装的 Task
name:要触发的已安装 task 名称(字符串,必填)namespace:task 所在的命名空间(字符串,可选,默认:"default")params:要传递给 task 的参数(对象,可选)
trigger_artifacthub_pipeline – 触发从 Artifact Hub 安装的 Pipeline
name:要触发的已安装 Pipeline 的名称(字符串,必填)namespace:Pipeline 所在的命名空间(字符串,可选,默认值:"default")params:传递给 Pipeline 的参数(对象,可选)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。