mcpField
K
Kubernetes MCP Server

Kubernetes MCP Server

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

关于 Kubernetes MCP Server

这是一个通过 MCP 提供 Kubernetes 管理操作的服务,面向需要查询和管理集群资源的用户。它支持自动发现扩展脚本,并将脚本注册为工具。

主要功能

  1. 01查询 Pod、服务和部署
  2. 02描述与删除 Kubernetes 资源
  3. 03查看日志、事件和命名空间
  4. 04管理部署副本数与 kubectl 上下文
  5. 05自动发现并注册扩展脚本

适用场景

  1. 01查看指定命名空间中的资源
  2. 02排查 Pod 日志和集群事件
  3. 03切换 kubectl 上下文
  4. 04通过自定义脚本扩展集群操作

MCP 相关

该 MCP 服务向客户端提供 Kubernetes 查询和管理工具,并将 scripts/ 中发现的脚本注册为工具。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

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

详细介绍

Kubernetes MCP 服务

一个灵活的机器通信协议(MCP)服务,提供 Kubernetes 管理功能,并支持自定义扩展脚本。

功能

  • 使用官方 MCP SDK 实现模型上下文协议(MCP)
  • 通过表格输出提供丰富的 Kubernetes 管理操作
  • 支持动态加载和自动检测自定义扩展脚本
  • 自动检测和验证脚本参数
  • 架构清晰、模块化,并使用 Pydantic 模型确保类型安全

目录结构

  • bin/:包含主要可执行组件

    • k8s_mcp_wrapper.py:主要的 MCP 服务可执行文件
  • scripts/:包含 MCP 服务的插件脚本

    • 在此处添加自定义脚本以扩展功能

前置条件

  • Python 3.10 或更高版本(MCP SDK 要求)
  • 已安装并配置 kubectl
  • 所需的 Python 软件包(参见 requirements.txt)

安装

使用 pip
  1. 克隆此仓库:

    git clone https://github.com/yourusername/k8s-mcp-server.git
    cd k8s-mcp-server
    
  2. (可选)创建虚拟环境:

    python3.10 -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    
使用 uv(安装更快)
  1. 如果尚未安装 uv,请先安装:

    pip install uv
    
  2. 克隆仓库:

    git clone https://github.com/yourusername/k8s-mcp-server.git
    cd k8s-mcp-server
    
  3. 使用 uv 创建虚拟环境并安装依赖项:

    uv venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    uv pip install -r requirements.txt
    

用法

运行 MCP 服务

从 bin 目录运行 MCP 服务:

cd bin
python3 k8s_mcp_wrapper.py

使用 Web 服务以开发模式运行(便于调试):

cd bin
python3 k8s_mcp_wrapper.py --dev --dev-port 8000

服务将会:

  1. 检查 kubectl 是否可用
  2. 从 scripts/ 目录发现并注册脚本
  3. 开始监听 MCP 协议命令
可用工具

MCP 服务提供以下内置工具:

工具名称描述
get_pods获取指定命名空间中的 Pod 列表
get_services获取指定命名空间中的服务列表
get_deployments获取指定命名空间中的部署列表
get_namespaces获取集群中所有命名空间的列表
describe_resource详细描述 Kubernetes 资源
get_pod_logs获取指定命名空间中某个 Pod 的日志
create_namespace在 Kubernetes 集群中创建新的命名空间
delete_resource删除 Kubernetes 资源
scale_deployment将部署扩缩容至指定的副本数
get_events获取 Kubernetes 集群中的事件
get_current_context获取当前 kubectl 上下文
get_available_contexts获取可用 kubectl 上下文列表
switch_context切换 kubectl 上下文
list_scripts列出所有可用脚本及其参数

此外,scripts/ 目录中的所有脚本都会自动注册为工具,并添加 script_ 前缀。

创建自定义脚本

你可以在 scripts/ 目录中添加自定义脚本,以扩展 MCP 服务的功能。

脚本要求
  1. 脚本必须是扩展名为 .py 的 Python 文件
  2. 脚本应使用 argparse 定义参数(系统会自动检测)
  3. 脚本应支持通过 --args-file 标志接收 JSON 文件中的参数
改进脚本检测

如果 MCP 服务无法正确检测你的脚本,请尝试以下改进:

  1. 在模块级别添加详细的文档字符串,说明参数:

    """
    My Script Name
    
    Description of what this script does.
    
    Parameters:
        --param1: Description of parameter 1 (required)
        --param2: Description of parameter 2 (default: default_value)
    """
    
  2. 使用与文档字符串相符的详细 argparse 帮助文本:

    parser.add_argument(
        "--param1",
        type=str,
        required=True,
        help="Description of parameter 1 (required)"
    )
    
  3. 使用 ArgumentDefaultsHelpFormatter,在帮助文本中包含默认值:

    parser = argparse.ArgumentParser(
        description="Description of the script",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter
    )
    
  4. 设置适当的权限,使脚本可执行:

    chmod +x scripts/your_script.py
    
脚本模板

以下是创建新脚本的基本模板:

#!/usr/bin/env python3
"""
Script Name

Brief description of what the script does.

Parameters:
    --param1: Description of parameter 1 (required)
    --param2: Description of parameter 2 (default: default_value)
"""

import argparse
import json
import sys
import os

def main():
    """
    Main function that parses arguments and executes the script.
    
    This function demonstrates how to properly structure a script 
    for the Kubernetes MCP Server with clear parameter definitions.
    
    Returns:
        dict: A dictionary with the execution results
    """
    parser = argparse.ArgumentParser(
        description="Description of the script",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter
    )
    
    # Define your parameters with detailed docstrings
    parser.add_argument(
        "--param1", 
        type=str, 
        required=True, 
        help="Description of parameter 1 (required)"
    )
    
    parser.add_argument(
        "--param2", 
        type=int,
        default=42, 
        help="Description of parameter 2"
    )
    
    # Check if the --args-file flag is present
    parser.add_argument("--args-file", help="JSON file containing arguments")
    args, _ = parser.parse_known_args()
    
    if args.args_file:
        # Load arguments from the file
        with open(args.args_file, 'r') as f:
            arguments = json.load(f)
            
        # Convert the loaded JSON arguments into a namespace
        for arg_name, arg_value in arguments.items():
            setattr(args, arg_name, arg_value)
    else:
        # Parse all arguments normally for CLI usage
        args = parser.parse_args()
    
    # Use your arguments here
    print(f"Parameter 1: {args.param1}")
    print(f"Parameter 2: {args.param2}")
    
    # Implement your script logic here
    
if __name__ == "__main__":
    main()

环境变量

  • SCRIPTS_DIR:覆盖默认脚本目录的位置
    SCRIPTS_DIR=/path/to/scripts python3 bin/k8s_mcp_wrapper.py
    

架构

系统由以下组件组成:

  1. MCP 服务:使用 FastMCP SDK 实现 MCP 协议
  2. Kubernetes 客户端:使用 Pydantic 模型直接与 kubectl 交互
  3. 扩展脚本:通过自动检测参数提供专用功能

Pydantic 模型

系统使用 Pydantic 来实现:

  • Kubernetes 资源的类型安全模型
  • 自动验证数据结构
  • 更好的 IDE 集成和错误检测

贡献

欢迎贡献!欢迎提交 Pull Request。

许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

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

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