☸️ Kubernetes 可观测性 MCP(管理控制平面)
小型MCP服务器,让您能够通过简单工具探索Kubernetes指标、日志、追踪和服务图数据。
- 🐍 Python 3.13
- 📈 Prometheus(普罗米修斯)
- 🔎 雅各(Jaeger,品牌名也常译作“雅克”)
- 🕸️ Neo4j(一种图数据库)
- ☸️ Kubernetes API
特点/功能
- 📊 获取Pod/Service指标(即时和范围)
- 📜 阅读带有重要行过滤的pod/service日志
- 🔗 Neo4j的服务图(使用/依赖关系)
- 🧭 集群概览(Pods 和 Services)
- 🧵 从 Jaeger 中提取追踪摘要和详细信息
要求
- 🐍 Python 3.13+
- 📦 诗歌
- ☸️ 访问您的集群(本机上的 kubeconfig 文件)
- 📈 Prometheus URL(译文:📈 Prometheus 的网址)
- 🔎 Jaeger URL(译文:🔎 Jaeger 网址)
- 🕸️ Neo4j 的URI(统一资源标识符)、用户名、密码
设置
- 安装(诗歌)
poetry install- 配置环境
cp .env.example .env
# edit .env with your values跑
poetry run python mcp_server.py然后连接到您的MCP客户端以使用这些工具。
工具
🔍 翻译为中文是:放大镜(用于查看细节或寻找某物) Kubernetes 资源检查
get_pods_from_service(service)
- 返回属于特定服务的所有Pod - 显示Pod名称和当前状态(运行中、待处理等)
get_cluster_pods_and_services()
- 全面的集群概览 - 列出所有带有计数的Pod和Service
📊(表格) 指标与可观测性
get_metrics(resource_name, resource_type)
- 获取Pod或服务的即时Prometheus指标 - 参数: - resource_nameKubernetes 资源的确切名称 - resource_type“pod”或“service”(两者选其一) - 返回CPU、内存、网络、线程和容器的规格
get_metrics_range(resource_name, resource_type, time_range_minutes)
- 从Prometheus获取指定时间范围内的历史指标 - 参数: - resource_nameKubernetes 资源的确切名称 - resource_type“pod”或“service”均可 - time_range_minutes分钟级历史回顾(最少1分钟)
get_logs(resource_name, resource_type, tail=100, important=True)
- 检索Pod/Service日志,并可选择性地进行关键字过滤 - 参数: - resource_nameKubernetes 资源的确切名称 - resource_type“pod”或“service” - tail要检索的最近日志行数(默认:100) - important如果为真,则过滤掉包含 ERROR、WARN、CRITICAL 关键字的内容(默认:为真)
🔗(链接符号,无实际翻译内容,可保持原样或根据上下文替换为具体链接描述) 服务依赖关系与图表
get_services_used_by(service)
- 返回由给定服务调用的下游服务 - 显示服务依赖链(谁调用谁)
get_dependencies(service)
- 检索服务的基础设施依赖项 - 包括数据库、缓存、消息队列等。
🧵 线(或“线轴”) 分布式追踪
get_traces(service_name, only_errors=False)
- 从Jaeger中检索特定服务的追踪信息 - 参数: - service_name用于检索追踪的服务名称 - only_errors如果为真,则仅返回包含错误的追踪(默认:假) - 返回值:traceID(追踪ID)、latency_ms(延迟时间,毫秒)、has_error(是否有错误)、service sequence(服务序列)
get_trace(trace_id)
- 通过ID检索特定追踪的详细信息 - 参数: - trace_id用于检索的唯一追踪ID - 包括所有带有时间戳、持续时间、标签和错误信息的跨度
注释
- 使用你的默认 kubeconfig。在 .env 文件中设置 TARGET_NAMESPACE 以限定查询范围。
- 🕸️ 服务图文档:参见
service-graph/README.md关于如何构建Neo4j服务图(Jaeger调用图+静态使用图)、如何加载它以及结果图。
