mcpField
T
Tektoncd Model Context Protocol server

Tektoncd Model Context Protocol server

本地服务
github.com/tektoncd云与基础设施277 周前更新

关于 Tektoncd Model Context Protocol server

Tekton MCP Server 是一个 MCP 服务,将 Kubernetes 集群中的 Tekton 资源暴露给 MCP 客户端,目前主要面向 tektoncd/pipeline。它支持 stdio 和 Streamable HTTP 两种传输方式,适合需要通过 AI 管理 CI/CD 流水线的平台工程师。项目仍在积极开发中。

主要功能

  1. 01列出、查看、创建、更新和删除 Pipeline 与 Task 等资源
  2. 02查询 TaskRun 日志
  3. 03启动与重启 PipelineRun 和 TaskRun
  4. 04集成 Artifact Hub 安装并触发社区 Task 与 Pipeline
  5. 05支持 stdio 与 Streamable HTTP 传输

适用场景

  1. 01通过 MCP 客户端检查集群中的 PipelineRun 状态
  2. 02排查失败 TaskRun 的日志
  3. 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

从源码检出部署清单时,还需要 kubectl 和 ko。

从源码构建

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 的参数(对象,可选)

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。