Tekton Results MCP服务器

Tekton Results MCP服务器是一个用于访问存储在Tekton Results中的历史PipelineRun和TaskRun数据的模型上下文协议服务器,支持过滤、查询和日志获取功能。

  • by enarha
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 enarha/tekton-results-mcp-server

使用说明

Tekton Results MCP服务器

该项目提供了 模型上下文协议(MCP) 用于访问存储在中的历史Tekton PipelineRun和TaskRun数据的服务器 Tekton结果.

工具

清单的操作

pipelinerun_list –使用过滤选项列出Tekton结果中的流水线运行

  • namespace:用于列出PipelineRuns的命名空间(字符串,可选,默认值:当前kubeconfig命名空间;使用 - 对于所有命名空间)
  • labelSelector:用于筛选PipelineRun的标签选择器(字符串,可选,逗号分隔 key=value 成对)
  • prefix:用于筛选PipelineRun的名称前缀(字符串,可选)
  • limit:要返回的最大结果数(整数,可选,范围:1-200,默认值:50)

taskrun_list –使用筛选选项从Tekton结果中列出任务运行

  • namespace:用于列出TaskRuns的命名空间(字符串,可选,默认值:当前kubeconfig命名空间;使用 - 对于所有命名空间)
  • labelSelector:筛选TaskRun的标签选择器(字符串,可选,逗号分隔 key=value 成对)
  • prefix:筛选TaskRun的名称前缀(字符串,可选)
  • limit:要返回的最大结果数(整数,可选,范围:1-200,默认值:50)

获取操作

pipelinerun_get –按名称或过滤器获取特定的PipelineRun

  • name:要获取的PipelineRun的名称(字符串,可选)
  • namespace:PipelineRun的命名空间(字符串,可选,默认值:当前kubeconfig命名空间;使用 - 对于所有命名空间)
  • labelSelector:用于筛选PipelineRun的标签选择器(字符串,可选,逗号分隔 key=value 成对)
  • prefix:用于筛选PipelineRun的名称前缀(字符串,可选)
  • uid:精确的PipelineRun UID(字符串,可选)。Tekton Results数据库中的唯一标识符。这是找到特定跑步的最有效方法。
  • output:返回格式为json或yaml(字符串,可选,默认:“yaml”)
  • selectLast:如果为true,当多个运行与过滤器匹配时,自动选择最近的匹配项(布尔值,可选,默认值:true)。当为false时,如果找到多个匹配项,则返回错误。有用,因为运行名称在Tekton Results历史记录中不是唯一的。

taskrun_get –按名称或筛选器获取特定的TaskRun

  • name:要获取的TaskRun的名称(字符串,可选)
  • namespace:TaskRun的命名空间(字符串,可选,默认值:当前kubeconfig命名空间;使用 - 对于所有命名空间)
  • labelSelector:筛选TaskRun的标签选择器(字符串,可选,逗号分隔 key=value 成对)
  • prefix:筛选TaskRun的名称前缀(字符串,可选)
  • uid:精确的TaskRun UID(字符串,可选)。Tekton Results数据库中的唯一标识符。这是找到特定跑步的最有效方法。
  • output:返回格式为json或yaml(字符串,可选,默认:“yaml”)
  • selectLast:如果为true,当多个运行与过滤器匹配时,自动选择最近的匹配项(布尔值,可选,默认值:true)。当为false时,如果找到多个匹配项,则返回错误。有用,因为运行名称在Tekton Results历史记录中不是唯一的。

日志操作

pipelinerun_logs –获取PipelineRun的日志

  • name:从中获取日志的PipelineRun的名称(字符串,可选)
  • namespace:PipelineRun所在的命名空间(字符串,可选,默认值:当前kubeconfig命名空间;使用 - 对于所有命名空间)
  • labelSelector:用于筛选PipelineRun的标签选择器(字符串,可选,逗号分隔 key=value 成对)
  • prefix:用于筛选PipelineRun的名称前缀(字符串,可选)
  • uid:精确的PipelineRun UID(字符串,可选)。Tekton Results数据库中的唯一标识符。这是找到特定跑步的最有效方法。
  • selectLast:如果为true,当多个运行与过滤器匹配时,自动选择最近的匹配项(布尔值,可选,默认值:true)。当为false时,如果找到多个匹配项,则返回错误。有用,因为运行名称在Tekton Results历史记录中不是唯一的。

注: 此工具从与PipelineRun关联的所有TaskRun中获取日志,按执行顺序按完成时间排序。日志仅在PipelineRun完成后可用。

taskrun_logs –获取TaskRun的日志

  • name:要从中获取日志的TaskRun的名称(字符串,可选)
  • namespace:TaskRun所在的命名空间(string,可选,默认值:当前kubeconfig命名空间;使用 - 对于所有命名空间)
  • labelSelector:筛选TaskRun的标签选择器(字符串,可选,逗号分隔 key=value 成对)
  • prefix:筛选TaskRun的名称前缀(字符串,可选)
  • uid:精确的TaskRun UID(字符串,可选)。Tekton Results数据库中的唯一标识符。这是找到特定跑步的最有效方法。
  • selectLast:如果为true,当多个运行与过滤器匹配时,自动选择最近的匹配项(布尔值,可选,默认值:true)。当为false时,如果找到多个匹配项,则返回错误。有用,因为运行名称在Tekton Results历史记录中不是唯一的。

注: 日志仅在TaskRun完成后可用,甚至可能需要更长的时间,具体取决于记录器配置(缓冲等)。

处理多场比赛 selectLast

使用时 pipelinerun_get, pipelinerun_logs, taskrun_get,或 taskrun_logs,您可能会遇到多个运行与您的过滤器匹配的情况。这通常是因为:

  • 在任何给定时间,运行名称在集群上都是唯一的,但在Tekton Results历史记录中不是唯一的
  • 相同的PipelineRun/TaskRun名称可以在多个执行中重复使用
  • 每个执行都存储有一个唯一的UID,但名称相同

这 selectLast 参数(默认为 true)控制此行为:

随着 selectLast=true (默认):

{
  "name": "my-pipeline",
  "namespace": "default"
}

自动选择最近的运行。

随着 selectLast=false (严格模式):

{
  "name": "my-pipeline",
  "namespace": "default",
  "selectLast": false
}

如果找到多个匹配项,则返回错误:

Error: "multiple PipelineRun instances match the filters (default/my-pipeline, default/my-pipeline).
        Please refine the filters with an exact name or prefix."

为了避免歧义,您可以:

  • 使用更具体的名称前缀(例如。, my-pipeline-abc123 而不是 my-pipeline)
  • 添加标签选择器以缩小结果范围
  • 使用 selectLast=true 自动选取最近的跑步记录

配置

认证

所有工具都依赖于用于启动MCP服务器的集群内或kubeconfig上下文,因此不需要额外的Tekton Results凭据。在集群外运行时,确保kubeconfig上下文可以访问Tekton Results聚合的API。

直接访问Tekton结果

如果您的集群没有公开聚合的API(例如,当您向 tekton-results-api-service),在启动MCP服务器之前设置以下环境变量:

  • TEKTON_RESULTS_BASE_URL:API服务器的基本主机(例如。, https://localhost:8443).MCP服务器自动附加 /apis/results.tekton.dev/v1alpha2.
  • TEKTON_RESULTS_BEARER_TOKEN:根据Tekton Results API进行身份验证的可选承载令牌。如果省略,则使用kubeconfig中的令牌。
  • TEKTON_RESULTS_INSECURE_SKIP_VERIFY:设置为 true 使用自签名证书时(例如,使用端口转发服务)。

当这些变量未设置时,MCP服务器通过Kubernetes聚合的API端点与Tekton Results通信(/apis/results.tekton.dev).

发展与贡献

检查 贡献.md 导游。