mcpField
M
MCP Kubernetes Server

MCP Kubernetes Server

本地服务
github.com/guolisen云与基础设施380 周前更新

关于 MCP Kubernetes Server

MCP Kubernetes Server 为 AI 助手和其他 MCP 客户端提供 Kubernetes 集群查询、操作、监控与分析能力,并结合资源管理工具和常见分析提示词。

主要功能

  1. 01查看集群资源
  2. 02创建、更新、删除和扩缩资源
  3. 03监控集群及资源状态
  4. 04查看日志、事件和指标
  5. 05分析资源并提供建议
  6. 06使用 Kubernetes 分析提示词

适用场景

  1. 01查询 Pod、Deployment 或 Service 详情
  2. 02扩缩或重启 Deployment
  3. 03检查集群健康状况和节点状态
  4. 04查看资源日志和事件

MCP 相关

这是一个 MCP 服务,通过 `k8s://` URI 和工具向客户端开放 Kubernetes 资源查询、监控及操作能力,也提供常见 Kubernetes 分析提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mcp_k8s_server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Python 3.12+ MCP Enabled MCP Server MCP Dev 测试

MCP Kubernetes 服务

一个 Kubernetes 管理 MCP(Model Context Protocol)服务,提供用于获取 Kubernetes 集群信息、执行操作、监控状态和分析资源的接口。

功能

  • 集群信息:获取 Kubernetes 资源(Pod、部署、服务等)的详细信息
  • 集群操作:对 Kubernetes 资源执行操作(创建、更新、删除、扩缩容等)
  • 监控:监控 Kubernetes 集群和资源的状态
  • 分析:分析 Kubernetes 资源并提供建议
  • 提示词:包含用于常见 Kubernetes 分析任务的提示词

示例

示例 1

ex1

示例 2

ex2

示例 3

ex3

安装

从源代码安装
git clone https://github.com/yourusername/mcp-k8s-server.git
cd mcp-k8s-server
pip install -e .
使用 pip
pip install mcp-k8s-server

使用方法

直接运行
# Run with default settings
mcp-k8s-server

# Specify transport type
mcp-k8s-server --transport sse

# Specify port for SSE transport
mcp-k8s-server --port 8000

# Specify config file
mcp-k8s-server --config /path/to/config.yaml
使用 Docker

Dockerfile 使用 command 和 args 模式运行服务:

CMD ["python", "-m", "mcp_k8s_server.main", \
     "--transport", "sse", \
     "--port", "8000", \
     "--host", "0.0.0.0", \
     "--config", "/etc/rancher/rke2/rke2.yaml", \
     "--debug"]

构建并运行 Docker 容器:

# Build the Docker image
docker build -t mcp-k8s-server .

# Run the Docker container
docker run -p 8000:8000 -v ~/.kube:/home/mcp/.kube mcp-k8s-server

或者,也可以使用提供的脚本:

# Make the script executable
chmod +x docker-run.sh

# Run the script
./docker-run.sh

此脚本会构建 Docker 镜像,并通过必要的卷挂载运行容器。

部署到 Kubernetes
# Apply the Kubernetes manifests
kubectl apply -f k8s/

部署到 Kubernetes 时,服务会自动使用集群内配置。k8s/ 目录中的 Kubernetes 清单已配置为:

  1. 创建具有适当权限的 ServiceAccount
  2. 挂载服务账户令牌和证书
  3. 使用命令行参数配置服务

你可以通过编辑清单自定义部署:

# k8s/deployment.yaml (example)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mcp-k8s-server
  # ...
spec:
  # ...
  template:
    # ...
    spec:
      serviceAccountName: mcp-k8s-server  # Uses the ServiceAccount defined in rbac.yaml
      containers:
      - name: mcp-k8s-server
        # ...
        command:
        - python
        - -m
        - mcp_k8s_server.main
        args:
        - --transport
        - sse
        - --port
        - "8000"
        - --host
        - "0.0.0.0"
        - --config
        - "/app/config/config.yaml"
        - --debug

此方法使用 command 和 args 模式配置服务,这是 Kubernetes 中的常见模式。command 指定要运行的可执行文件,args 指定要传递给该可执行文件的命令行参数。

创建 Pod 时,Kubernetes 会自动设置 KUBERNETES_SERVICE_HOST 和 KUBERNETES_SERVICE_PORT 环境变量,因此无需在部署清单中指定它们。

配置

可以使用 YAML 配置文件、环境变量或命令行参数来配置服务。

集群内配置

在 Kubernetes 集群内运行时,服务会自动使用集群内配置。该配置依赖以下内容:

  1. 环境变量:

    • KUBERNETES_SERVICE_HOST:由 Kubernetes 设置为 Kubernetes API 服务的 IP 地址
    • KUBERNETES_SERVICE_PORT:由 Kubernetes 设置为 Kubernetes API 服务的端口
  2. 服务账户令牌和证书:

    • /var/run/secrets/kubernetes.io/serviceaccount/token:服务账户令牌
    • /var/run/secrets/kubernetes.io/serviceaccount/ca.crt:CA 证书

在 Pod 中运行时,这些内容由 Kubernetes 自动设置。如果你在 Kubernetes 集群外运行服务,但希望测试集群内配置,则需要手动设置这些环境变量,并创建令牌和证书文件。

在集群外运行时,服务会回退为使用 kubeconfig 文件。

在本地测试集群内配置

如果你想在本地(Kubernetes 集群之外)测试集群内配置,可以手动设置所需的环境变量和文件:

  1. 设置环境变量:

    export KUBERNETES_SERVICE_HOST=<kubernetes-api-server-ip>
    export KUBERNETES_SERVICE_PORT=<kubernetes-api-server-port>
    

    你可以通过运行以下命令获取这些值:

    kubectl cluster-info
    
  2. 创建服务账户令牌和证书目录:

    mkdir -p /var/run/secrets/kubernetes.io/serviceaccount/
    
  3. 复制你的 Kubernetes 证书并创建令牌:

    # Copy the CA certificate
    kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    
    # Create a token file (you can use a service account token or generate a temporary one)
    echo "your-service-account-token" > /var/run/secrets/kubernetes.io/serviceaccount/token
    

请注意,此方法需要 root 权限才能在 /var/run/secrets/ 中创建文件。或者,你可以修改代码,在测试时使用其他路径。

配置文件
# config.yaml
server:
  name: mcp-k8s-server
  transport: both  # stdio, sse, or both
  port: 8000
  host: 0.0.0.0

kubernetes:
  config_path: ~/.kube/config
  context: default
  namespace: default

MCP 资源

该服务通过 Model Context Protocol(MCP)提供对 Kubernetes 资源的访问。资源由遵循 k8s:// 协议的 URI 模式标识。

资源 URI 模式

资源按层次结构组织:

  • k8s://resources - 所有可用 Kubernetes 资源的列表
  • k8s://namespaces - 所有 Kubernetes 命名空间的列表
  • k8s:///{namespace} - 某个命名空间中所有资源的概览
命名空间级资源
  • k8s://{namespace}/{resource_type} - 列出命名空间中某种类型的资源

    • 示例:k8s://default/pods - 'default' 命名空间中的所有 Pod
  • k8s://{namespace}/{resource_type}/{name} - 获取特定的命名空间级资源

    • 示例:k8s://default/deployments/nginx - 'default' 命名空间中的 'nginx' 部署

支持的资源类型:

  • pods
  • deployments
  • services
  • persistentvolumeclaims
  • events
集群级资源
  • k8s:///{resource_type} - 列出某种类型的集群级资源

    • 示例:k8s:///nodes - 集群中的所有节点
  • k8s:///{resource_type}/{name} - 获取特定的集群级资源

    • 示例:k8s:///nodes/worker-1 - 'worker-1' 节点

支持的资源类型:

  • nodes
  • persistentvolumes
  • namespaces

MCP 工具

该服务提供以下 MCP 工具:

资源信息
  • get_resources:获取特定类型资源的列表
  • get_resource:获取特定资源的详细信息
  • get_resource_status:获取特定资源的状态
  • get_resource_events:获取与特定资源相关的事件
  • get_resource_logs:获取特定资源的日志
资源操作
  • create_resource:创建新资源
  • update_resource:更新现有资源
  • delete_resource:删除资源
  • scale_deployment:扩缩部署
  • restart_deployment:重启部署
  • execute_command:在 Pod 中执行命令
监控
  • get_cluster_status:获取集群的整体状态
  • get_node_status:获取集群节点的状态
  • get_resource_metrics:获取特定资源的指标
  • get_cluster_metrics:获取整个集群的指标
  • check_cluster_health:对集群执行全面的健康检查并获取详细摘要

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。