MCP智能运维服务套件

项目简介

M7011E是一个动态Web系统教程仓库,其中包含一套基于Model Context Protocol (MCP) 的智能运维上下文服务。这套服务通过标准化的JSON-RPC协议,将PostgreSQL数据库、Kubernetes集群和Prometheus监控系统的能力暴露给大型语言模型(LLM)客户端。它允许LLM以自然语言理解和执行复杂的运维任务,例如查询数据库、管理Kubernetes资源和分析系统监控指标,从而实现AI辅助的智能运维。

主要功能点

  • PostgreSQL数据库访问:
    • 允许LLM执行只读SQL查询,获取数据库中的数据。
    • 提供查询数据库中所有表及其详细模式(列名、数据类型、是否可空)的能力。
    • 安全限制:只允许执行'SELECT'查询,保障数据安全。
  • Kubernetes集群管理:
    • 提供LLM查询Kubernetes集群中Pod、Service和Deployment的列表及详细信息。
    • 支持获取指定Pod的日志,帮助LLM进行故障诊断。
    • 通过集成'kubectl'命令行工具,实现对Kubernetes资源的深度交互。
  • Prometheus监控数据查询:
    • 使LLM能够执行PromQL查询,获取实时的监控指标。
    • 提供检查特定服务健康状况('up'指标)和计算服务错误率的能力。
    • 支持查询指定时间范围内的指标数据,用于趋势分析。
  • AI赋能运维:
    • 将底层基础设施和数据库能力无缝集成到LLM中,支持通过自然语言进行运维查询、诊断和自动化操作。
    • 为LLM提供丰富且结构化的上下文信息,使其能更准确地理解和响应运维请求。

安装步骤

这套MCP服务器是M7011E教程的一部分,运行它们需要一个Python环境并安装相应的依赖库。

  1. 克隆仓库: 首先,将M7011E仓库克隆到您的本地机器。

    git clone https://github.com/eislab-cps/m7011e.git
    # 进入MCP服务器目录
    cd m7011e/17-mcp-ai-ops/servers
  2. 安装Python依赖: 每个MCP服务器都需要'mcp-server'库。此外,根据您需要运行的具体服务器,还需要安装额外的库。

    • PostgreSQL MCP 服务器:
      pip install mcp-server psycopg2-binary
    • Kubernetes MCP 服务器:
      pip install mcp-server
      注意:Kubernetes MCP服务器还需要您本地安装并正确配置'kubectl'命令行工具,使其能够访问您的Kubernetes集群。
    • Prometheus MCP 服务器:
      pip install mcp-server requests
  3. 配置外部系统: 在启动MCP服务器之前,请确保其所依赖的后端系统(PostgreSQL, Kubernetes, Prometheus)已正确运行且可从运行MCP服务器的环境访问。您可能需要设置特定的环境变量或确保工具配置正确。

服务器配置

MCP客户端(如与LLM集成的应用程序)需要配置MCP服务器的启动命令和相关参数。以下是针对这三个MCP服务器的示例配置信息,这些信息将以JSON格式提供给MCP客户端:

PostgreSQL MCP 服务器配置

{
  "name": "PostgreSQL MCP Server",
  "command": ["python3", "17-mcp-ai-ops/servers/postgres-mcp/postgres_server.py"],
  "args": [],
  "env": {
    "DB_HOST": "您的PostgreSQL数据库主机名,例如:localhost 或 192.168.1.100",
    "DB_PORT": "PostgreSQL数据库端口,通常是 5432",
    "DB_NAME": "要连接的数据库名称,例如:tododb",
    "DB_USER": "数据库用户名,例如:postgres",
    "DB_PASSWORD": "数据库密码,例如:postgres"
  },
  "description": "允许LLM通过执行只读SQL查询来查询PostgreSQL数据库,并获取数据库中的表和列信息。"
}

Kubernetes MCP 服务器配置

{
  "name": "Kubernetes MCP Server",
  "command": ["python3", "17-mcp-ai-ops/servers/kubernetes-mcp/kubernetes_server.py"],
  "args": [],
  "env": {},
  "description": "允许LLM查询Kubernetes集群的Pod、Service和Deployment的状态及日志。需要确保kubectl已正确配置。"
}

注意:此服务器将调用本地环境中配置的'kubectl'命令。请确保'kubectl'已安装并配置好对目标Kubernetes集群的访问权限。

Prometheus MCP 服务器配置

{
  "name": "Prometheus MCP Server",
  "command": ["python3", "17-mcp-ai-ops/servers/prometheus-mcp/prometheus_server.py"],
  "args": [],
  "env": {
    "PROMETHEUS_URL": "您的Prometheus服务器的访问URL,例如:http://localhost:9090 或 http://prometheus.yourdomain.com"
  },
  "description": "允许LLM执行PromQL查询,检查服务健康状况和获取Prometheus监控指标。"
}

基本使用方法

一旦MCP服务器被MCP客户端(通常是LLM应用)加载和配置,LLM就可以通过自然语言调用这些服务器提供的工具。用户无需直接与这些Python脚本交互,而是通过LLM的对话界面进行。

例如,您可以尝试向LLM发出以下指令:

  • 与PostgreSQL交互:

    • “列出我的PostgreSQL数据库中的所有表。”
    • “告诉我'users'表的结构。”
    • “查询'products'表中价格高于100的所有商品名称。”
  • 与Kubernetes交互:

    • “显示'default'命名空间中所有正在运行的Pod的状态。”
    • “获取'my-backend-pod-abc'的最新日志。”
    • “列出'kube-system'命名空间中的所有服务。”
  • 与Prometheus交互:

    • “检查'order-service'当前是否健康。”
    • “告诉我过去一小时内'api-gateway'服务的错误率是多少?”
    • “查询'node_cpu_usage_seconds_total'指标的当前值。”

信息

分类

AI与计算