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环境并安装相应的依赖库。
-
克隆仓库: 首先,将M7011E仓库克隆到您的本地机器。
git clone https://github.com/eislab-cps/m7011e.git # 进入MCP服务器目录 cd m7011e/17-mcp-ai-ops/servers -
安装Python依赖: 每个MCP服务器都需要'mcp-server'库。此外,根据您需要运行的具体服务器,还需要安装额外的库。
- PostgreSQL MCP 服务器:
pip install mcp-server psycopg2-binary - Kubernetes MCP 服务器:
注意:Kubernetes MCP服务器还需要您本地安装并正确配置'kubectl'命令行工具,使其能够访问您的Kubernetes集群。pip install mcp-server - Prometheus MCP 服务器:
pip install mcp-server requests
- PostgreSQL MCP 服务器:
-
配置外部系统: 在启动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与计算