使用说明
k8s mcp
基于Python的只读 模型上下文协议(MCP) 用于Kubernetes集群的服务器,它公开了一个全面的API来检索集群信息和诊断问题。
安装
先决条件
- Python 3.8+
- 访问Kubernetes集群(通过kubeconfig或集群内配置)
- 所需的Python包(请参阅
dependencies在……里面pyproject.toml) - 紫外线https://github.com/astral-sh/uv
# To install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone git@github.com:vlttnv/k8s-mcp.git
cd k8s-mcp
# Install dependencies
uv venv
source .venv/bin/activate
uv sync
如果使用Claude configure,请在文本编辑器中打开位于~/Library/ApplicationSupport/Claude/Claude_Desktop_config.json的Claude for Desktop App配置。如果文件不存在,请确保创建该文件。
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集群:
- Kubeconfig文件:使用本地kubeconfig文件(通常位于
~/.kube/config) - 在集群配置中:如果在Kubernetes pod内运行,则使用服务帐户令牌
如果你的kubeconfig设置正确,或者你在具有适当RBAC权限的集群内运行,则不需要额外的配置。
用法
例子
以下是一些有用的示例提示,您可以向Claude询问您的Kubernetes集群及其资源:
一般群集状态
- “我的集群的整体健康状况如何?”
- “显示集群中的所有命名空间”
- “我的集群中有哪些节点可用,它们的状态是什么?”
- “我的节点上的资源利用率如何?”
Pod和部署
- “列出生产命名空间中的所有Pod”
- “是否有处于CrashLoopBackOff状态的Pod?”
- “显示重启次数高的Pod”
- “列出所有命名空间中的所有部署”
- “哪些部署未能取得进展?”
调试问题
- “为什么我的临时命名空间中的pod失败了?”
- “获取生产命名空间中服务的YAML配置”
- “显示默认命名空间中的最近事件”
- “是否有任何吊舱卡在待定状态?”
- “是什么导致我的集群中出现ImagePullBackOff错误?”
资源管理
- “显示集群中节点的资源消耗”
- “有没有我应该清理的孤儿资源?”
- “列出生产命名空间中的所有服务”
- “比较临时和生产之间的资源请求”
特定资源检查
- “显示kube系统中coredns部署的配置”
- “在暂存中获取反向代理服务的详细信息”
- “吊舱xyz中运行着哪些容器?”
- “给我看看故障吊舱的日志”
api参考
命名空间
get_namespaces():列出群集中所有可用的命名空间
容器组
list_pods(namespace=None):列出所有Pod,可选择按命名空间过滤failed_pods():列出所有处于失败或错误状态的Podpending_pods():列出所有处于挂起状态的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配置
许可证
贡献
欢迎投稿!请随时提交拉取请求。