Token导航 LogoToken导航TokenDH.com
K8s Lab MCP logo
开发工具stdio官方级别未说明来源级核验

K8s Lab MCP

MCP Server

k8s-lab MCP服务器通过HTTP协议提供Kubernetes集群的只读可见性、Grafana Loki日志访问和Prometheus指标API,使编码代理能够检查工作负载、日志和指标而无需shell访问。

工具数

38

提示词数

0

GitHub Stars

0

资源数

0
集群管理JavaCursor开发工具Cursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

nilslee

提供方

nilslee

最后核验

2026/5/17 20:20

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -d \

详细介绍

k8s实验室MCP服务器

A. 模型上下文协议(MCP) k8s实验室项目的服务器。它暴露了 只读Kubernetes集群可见性, Grafana Loki日志访问,以及 普罗米修斯指标API(v1) 到编码代理(例如Cursor) 超文本传输协议 使用Streamable传输,因此助手可以在没有shell访问的情况下检查工作负载、日志和指标。

堆放和运输

工件详细信息
框架Spring Boot(参见 pom.xml)
MCPspring-ai-starter-mcp-server-webmvc (春天AI 2.0.0-M3)
KubernetesFabric8 kubernetes-client --所有集群工具都使用 Kubernetes API 通过Java(仅列表/获取;无创建/更新/删除、执行或端口转发)
日志Spring声明式HTTP客户端(@HttpExchange)到洛基(/loki/api/v1/*),配置在 spring.http.serviceclient.loki
度量普罗米修斯的模式相同(/api/v1/* 在界面上),配置如下 spring.http.serviceclient.prometheus
默认端口9000 (server.portsrc/main/resources/application.yaml)

MCP服务器元数据 application.yaml: spring.ai.mcp.serverprotocol: streamable, stdio: false, type: sync, version: 0.1.1.

弹簧靴执行器暴露 healthinfo 在管理web基本路径下(默认值适用)。

配置

HTTP服务客户端(spring.http.serviceclient)

弹簧靴绑定 base-url, connect-timeout,以及 read-timeout客户名称。名称必须与 group@ImportHttpServices(group = "…", …) 关于相应 @Configuration 班级(lokiLokiLogQueries, prometheusPrometheusMetricQueries).

洛基 (spring.http.serviceclient.loki):

  • base-url --默认值 http://loki.k8s.lab
  • connect-timeout, read-timeout --默认值 10s / 30s

普罗米修斯 (spring.http.serviceclient.prometheus):

  • base-url --默认值 http://prometheus.k8s.lab (仅限原产地;API前缀 /api/v1 继续存在 PrometheusMetricQueries,不在 base-url)
  • connect-timeout, read-timeout --默认值 10s / 30s

可选Grafana基本身份验证 对于洛基(mcp.monitoring.loki):

  • username / password --经常从env绑定 GRAFANA_USERNAMEGRAFANA_PASSWORD (参见 application.yaml)

Kubernetes客户端 (Fabric8使用标准的kubeconfig发现,除非被覆盖):

  • 在Docker中(Dockerfile), KUBECONFIG=/app/kubeconfig 为绑定挂载的kubeconfig设置。

MCP Kubernetes调优 (mcp.kubernetes):

  • max-events --帽子 get-events (默认值 500)
  • connection-timeout, read-timeout -API服务器超时(默认值 10s / 30s)

洛基/普罗米修斯JSON和MCP客户端 (mcp.tool-response):

  • serialize-top-level-data-json-array (默认值 true)--当工具输出为具有顶级JSON时 data 数组,它可以被重写为JSON字符串,这样一些MCP客户端就可以保留有效载荷。吃起来 false 如果你需要原始的洛基风格数组。

当前工具(已实施)

集群(通过Fabric8的Kubernetes API)

top-nodestop-pods 需要 度量服务器 在集群中;否则,工具将返回一个明确的错误字符串。

工具说明
cluster-status节点条件、kubelet版本、Ready/NotReady计数
list-namespaces包含名称、状态和年龄的命名空间
list-pods带有状态、重启、年龄的Pod。可选: namespace (默认全部), labelSelector (单人 key=value;不支持逗号分隔的选择器), podPhaseFilter (ALL, RUNNING, PENDING, FAILED, SUCCEEDED, UNKNOWN)
describe-podPod详细信息:事件、容器状态、资源限制。必修的: namespace, podName
list-deployments所需/准备好的副本、图像标签、推出。可选: namespace (默认全部)
list-services类型、ClusterIP、端口、选择器。可选: namespace (默认全部)
get-events最近的事件;可选的 namespace, involvedObjectKind, involvedObjectName
top-nodes每个节点的CPU和内存(指标API)
top-pods每个吊舱的CPU和内存。可选: namespace (默认全部)

实施生活在 SystemToolsClusterResourceServiceFabric8ClusterResourceQueries.

日志(Loki HTTP API)

时间戳是 Unix纪元纳秒 除非特别注明。Loki的响应返回为 JSON文本 对于模型(取决于 mcp.tool-response 上文)。

工具说明
list-loki-labels标签名称;可选的 startNanosInclusive, endNanosInclusive, namespace (范围通过 match={namespace="…"}).不要使用 0 用于开始/结束(历元窗口通常为空)
list-loki-label-values一个人的价值观 labelName;可选开始/结束纳秒,可选 namespace 范围
list-loki-series流标签集;必需的 streamSelector, startNanosInclusive, endNanosInclusive;可选 additionalStreamSelectors (额外 match[],交叉口)
query-logs时间范围日志通过 query_range: query, startNanosInclusive, endNanosInclusive;可选 limit, direction (FORWARD / BACKWARD)
tail-logs近一瞬间的最新行: query, startNanosInclusive (截至最后 窗户);1小时回顾,回顾 query_range.可选 limit, delayForSeconds (摄入滞后)。 实时WebSocket跟踪

实施生活在 LogToolsLokiLogServiceLokiLogQueries.

度量(Prometheus HTTP API v1)

答案是 普罗米修斯JSON (status, data等等)作为文本。查询次数使用 RFC3339或Unix秒 如在普罗米修斯API中。旨在 kube-prometheus堆栈 或任何暴露该标准的服务器 **/api/v1/*** 路线。

区域工具
查询prometheus-query (瞬间), prometheus-query-range (需要 query, start, end, step), prometheus-query-exemplars, prometheus-parse-query, prometheus-format-query
TSDB/元数据list-prometheus-labels, list-prometheus-label-values, list-prometheus-series, prometheus-metadata
目标和规则prometheus-targets, prometheus-targets-metadata, prometheus-scrape-pools, prometheus-alerts, prometheus-rules, prometheus-alertmanagers, prometheus-notifications
服务器状态prometheus-status-buildinfo, prometheus-status-config, prometheus-status-flags, prometheus-status-runtimeinfo, prometheus-status-tsdb, prometheus-status-tsdb-blocks, prometheus-status-walreplay
其他prometheus-features

注: 如果你打电话 prometheus-rules 带着一个 group_limit 查询参数,Prometheus要求它是 大于零; 0 回报 400 bad_data.

实施生活在 MetricToolsPrometheusMetricServicePrometheusMetricQueries (@HttpExchange("/api/v1")),通过以下方式连接 PrometheusHttpClientConfigurationspring.http.serviceclient.prometheus.

在集群中运行

群集设置: 从以下位置提供K8s实验室平台(多节点K3、监控、GitOps和相关布线) 尼利斯/集群基础设施该存储库是VM、k3s、Argo CD、Jenkins和可观测性堆栈的真实来源;在对实验室运行此MCP服务器之前部署它。

运行时间期望: 服务器旨在运行 旁边 集群(例如,在Jenkins/build主机或其他可以访问Kubernetes API、Loki和Prometheus的虚拟机上),不一定是集群内的Pod,尽管如果安装凭据并指向 spring.http.serviceclient.loki.base-urlspring.http.serviceclient.prometheus.base-url 可解析URL(在集群服务或实验室DNS中,如 loki.k8s.lab / prometheus.k8s.lab).

  1. 塑造形象 从该目录(请参见 Dockerfile):
   cd mcp
   docker build -t mcp-server:latest .
  1. 运行容器 带着一个 只读kubeconfig 安装在图像所需的位置(KUBECONFIG=/app/kubeconfig):
   docker run -d \
     --name mcp-server \
     --restart=unless-stopped \
     --memory=512m --memory-swap=512m \
     --network=host \
     -e SPRING_PROFILES_ACTIVE=runner \
     -e GRAFANA_USERNAME="..." \
     -e GRAFANA_PASSWORD="..." \
     -v /path/to/kubeconfig:/app/kubeconfig:ro \
     mcp-server:latest

使用 --network=host (或其他网络模式),因此主机名如下 loki.k8s.labprometheus.k8s.labapplication.yaml 解决方法与在实验室机器上相同。如果Loki在您的网络上打开,请省略或调整Grafana env变量。

  1. 验证: 执行器健康状况和MCP HTTP端点(典型路径):

- http://:9000/actuator/health - http://:9000/mcp

图像详细信息: Dockerfile 将JAR打包为 -Xmx384m,用户 mcp,暴露端口 9000.

计划功能(尚未实施)

这些匹配中的空工具类和注释配置 application.yaml他们是 路线图 物品,而不是装运的工具。

区域意图代码/配置提示
GitOpsArgo CD应用状态、同步、差异;可能的Jenkins集成GitOpsTools.java (存根);评论 argoCD / jenkins 在...之下 spring.http.serviceclientmcp.git-ops
复合/便利单调用工作流(例如结合事件、日志、指标的pod诊断)CompoundTools.java (存根)——早期设计示例: diagnose-pod, namespace-overview
其他运输工具今天 stdio: false;稍后可以添加stdio或其他MCP部署模式spring.ai.mcp.server

实施后,此部分应缩小,工具应移入 当前工具 具有精确的参数和支持API。

目录标签

目录标签

集群管理JavaCursor开发工具Kubernetes监控本地部署日志查询指标分析

支持客户端

Cursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

38

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP