MCP-K8S 是一款基于 Python 的 Kubernetes 资源管理工具,借助模型上下文协议(Model Context Protocol, MCP),实现对 Kubernetes 集群资源的便捷访问与操作。它支持多种资源类型,提供了丰富的功能,可高效管理和监控 Kubernetes 资源。
使用以下命令启动 MCP-K8S 服务器:
python -m mcp_k8s_server.run --kube-config ~/.kube/config
默认情况下,服务器将在 http://localhost:8000 地址上运行。
您可通过编辑配置文件来自定义服务器行为,配置文件格式如下:
# config.yaml
server:
name: mcp-k8s-server
transport: both # 支持 stdio、sse 或两者
port: 8000
host: 0.0.0.0
kubernetes:
config_path: ~/.kube/config
context: default
namespace: default
服务器启动后,可通过访问 http://localhost:8000 或使用 MCP 客户端工具与之交互。
MCP-K8S 服务器具备以下功能:
get_resources:获取指定类型的所有资源。get_resource:获取特定资源的详细信息。get_namespaces:获取所有可用命名空间。get_events:获取集群中的所有事件。create_pod:创建新的 pod。delete_pod:删除指定 pod。update_deployment:更新 deployment 的配置。scale_deployment:调整 deployment 的副本数量。list_nodes:获取所有节点的信息。get_node_status:获取指定节点的状态。get_cluster_events:获取集群范围内的所有事件。watch_resources:实时监控资源的变化。要安装 MCP-K8S 服务器,请运行以下命令:
pip install mcp-k8s-server
from mcp_k8s_server.client import MCPClient
client = MCPClient("http://localhost:8000")
pod_info = client.get_resource("k8s://default/pods/my-pod")
namespace_list = client.get_namespaces()
MCP-K8S 服务器支持以下资源 URI 模式:
k8s://{namespace}/{resource_type}:获取指定命名空间中特定类型的所有资源。
k8s://default/pods,可获取默认命名空间中的所有 pod。k8s:///{namespace}/{resource_type}/{name}:获取指定命名空间内特定类型的单个资源。
k8s://default/deployments/nginx,可获取默认命名空间中名为 nginx 的 deployment。k8s:///{resource_type}:获取集群范围内所有特定类型的所有资源。
k8s:///nodes,可获取集群中的所有节点。k8s:///{resource_type}/{name}:获取集群范围内特定类型的单个资源。
k8s:///nodes/worker-1,可获取名为 worker-1 的节点。podsdeploymentsservicespersistentvolumeclaimseventsnodespersistentvolumesnamespaces启动服务器时,默认会读取 config.yaml 文件中的配置。若文件不存在,可使用以下命令生成默认配置:
mcp-k8s-server init-config
您可通过编辑 config.yaml 文件来自定义服务器行为,例如指定 Kubernetes 配置文件路径、选择传输协议(HTTP 或 SSE)等。
若在使用过程中遇到问题,请检查以下常见问题:
MCP-K8S 服务器遵循 MIT License 协议,您可在项目仓库中找到完整的许可信息。
MCP-K8S 服务器是一个功能强大的 Kubernetes 资源管理工具,能够帮助开发者和运维人员更高效地管理和监控 Kubernetes 集群资源。通过 MCP 协议的强大功能,您可以轻松实现对集群资源的实时操作和监控。