返回市场
Kubernetes-MCP

Kubernetes-MCP

作者:vlttnv8 星标更新:2025-03-15

项目介绍

<img src="./assets/logo.svg" alt="Allseer Logo" width="400" height="400" />

k8s-mcp

smithery 徽章

一个基于Python的只读模型上下文协议(MCP)服务器,适用于Kubernetes集群,提供全面的API来检索集群信息并诊断问题。

使用Claude的示例聊天

安装

先决条件

  • Python 3.8+
  • 访问Kubernetes集群(通过kubeconfig或集群内配置)
  • 所需的Python包(参见pyproject.toml中的dependencies
  • uv - https://github.com/astral-sh/uv
# 安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 克隆仓库
git clone git@github.com:vlttnv/k8s-mcp.git
cd k8s-mcp

# 安装依赖
uv venv
source .venv/bin/activate
uv sync

如果使用Claude,请在文本编辑器中打开位于~/Library/Application Support/Claude/claude_desktop_config.json的Claude桌面应用配置文件。如果该文件不存在,请创建它。

code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
    "mcpServers": {
        "k8s-mcp": {
            "command": "uv",
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/PARENT/FOLDER/k8s-mcp",
                "run",
                "server.py"
            ]
        }
    }
}

您可能需要在命令字段中放置完整的uv可执行文件路径。您可以通过在MacOS/Linux上运行which uv或在Windows上运行where uv来获取此路径。

配置

应用程序会自动尝试两种方法连接到您的Kubernetes集群:

  1. Kubeconfig 文件:使用本地kubeconfig文件(通常位于~/.kube/config
  2. 集群内配置:如果在Kubernetes pod内部运行,则使用服务账户令牌

如果您的kubeconfig设置正确,或者您在具有适当RBAC权限的集群内运行,则无需额外配置。

使用

示例

这里有一些有用的提示,您可以向Claude询问有关您的Kubernetes集群及其资源的问题:

集群总体状态

  • "我的集群整体健康状况如何?"
  • "显示我集群中的所有命名空间"
  • "我的集群中有哪些节点以及它们的状态是什么?"
  • "我的节点上的资源利用率如何?"

Pod 和部署

  • "列出生产命名空间中的所有Pod"
  • "是否有任何处于CrashLoopBackOff状态的Pod?"
  • "显示重启次数高的Pod"
  • "列出所有命名空间中的所有部署"
  • "哪些部署未能进展?"

调试问题

  • "为什么我的暂存命名空间中的Pod失败了?"
  • "获取生产命名空间中服务的YAML配置"
  • "显示默认命名空间中的最近事件"
  • "是否有任何处于Pending状态的Pod?"
  • "我的集群中导致ImagePullBackOff错误的原因是什么?"

资源管理

  • "显示我集群中节点的资源消耗情况"
  • "是否有任何孤儿资源需要清理?"
  • "列出生产命名空间中的所有服务"
  • "比较暂存和生产环境之间的资源请求"

特定资源检查

  • "显示kube-system中coredns部署的配置"
  • "获取暂存环境中反向代理服务的详细信息"
  • "pod xyz中运行哪些容器?"
  • "显示失败的pod的日志"

API 参考

命名空间

  • get_namespaces():列出集群中所有可用的命名空间

Pod

  • list_pods(namespace=None):列出所有Pod,可选按命名空间过滤
  • failed_pods():列出所有处于Failed或Error状态的Pod
  • pending_pods():列出所有处于Pending状态的Pod及其原因
  • high_restart_pods(restart_threshold=5):找到重启次数超过阈值的Pod

节点

  • list_nodes():列出所有节点及其状态
  • node_capacity():显示所有节点的可用容量

部署和服务

  • list_deployments(namespace=None):列出所有部署
  • list_services(namespace=None):列出所有服务
  • list_events(namespace=None):列出所有事件

资源管理

  • orphaned_resources():列出没有拥有者引用的资源
  • get_resource_yaml(namespace, resource_type, resource_name):获取特定资源的YAML配置

许可证

MIT 许可证

贡献

欢迎贡献!请随时提交拉取请求。