性能指标查询服务

pcp-mcp是一个基于Performance Co-Pilot (PCP)的性能指标查询服务,通过Model Context Protocol提供CPU、内存、磁盘I/O、网络、进程等系统性能指标的监控与分析功能。

  • by major
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 major/pcp-mcp

使用说明

pcp-mcp

MCP服务器 性能副驾驶(PCP) 韵律学。

通过模型上下文协议查询系统性能指标——CPU、内存、磁盘I/O、网络、进程等。

📖 全部文件 | 🚀 入门指南

🚀 快速启动(无需安装)

立即运行 uvx --无需安装:

uvx pcp-mcp

或者安装为持久全局工具:

uvx tool install pcp-mcp
pcp-mcp

📦 安装

pip install pcp-mcp

或与 紫外线:

uv add pcp-mcp

📋 需求

  • python: 3.10+
  • PCP:性能副驾驶 pmcd 和 pmproxy 跑步
    # Fedora/RHEL/CentOS
    sudo dnf install pcp
    sudo systemctl enable --now pmcd pmproxy
    
    # Ubuntu/Debian
    sudo apt install pcp
    sudo systemctl enable --now pmcd pmproxy
    

⚙️ 配置

通过环境变量进行配置:

变量 描述 默认值
PCP_HOST pmproxy主机 localhost
PCP_PORT pmproxy端口 44322
PCP_TARGET_HOST 要监视的目标pmcd主机 localhost
PCP_USE_TLS 对pmproxy使用HTTPS false
PCP_TLS_VERIFY 验证TLS证书 true
PCP_TLS_CA_BUNDLE 自定义CA包的路径 (可选)
PCP_TIMEOUT 请求超时(秒) 30
PCP_USERNAME HTTP基本身份验证用户 (可选)
PCP_PASSWORD HTTP基本身份验证密码 (可选)
PCP_ALLOWED_HOSTS 通过主机参数 允许的主机规格(可选)

🎯 用法

监视本地主机(默认)

pcp-mcp

监视远程主机

PCP_TARGET_HOST=webserver1.example.com pcp-mcp

或者使用CLI标志:

pcp-mcp --target-host webserver1.example.com

连接到远程pmproxy

PCP_HOST=metrics.example.com pcp-mcp

使用SSE传输

pcp-mcp --transport sse

🔌 MCP客户端配置

克劳德桌面版

添加到 ~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "pcp": {
      "command": "uvx",
      "args": ["pcp-mcp"]
    }
  }
}

对于远程监控:

{
  "mcpServers": {
    "pcp": {
      "command": "uvx",
      "args": ["pcp-mcp", "--target-host", "webserver1.example.com"]
    }
  }
}

💡 使用 uvx 这意味着您不需要安装pcp-mcp——它直接从PyPI运行。

🛠️ 可用工具

系统监控

  • get_system_snapshot -时间点系统概述(CPU、内存、磁盘、网络、负载)
  • get_process_top -按CPU、内存或I/O使用情况列出的顶级进程
  • query_metrics -获取特定PCP指标的当前值
  • search_metrics -按名称模式发现可用指标
  • describe_metric -获取有关指标的详细元数据

查询示例

"What's the current CPU usage?"
→ Uses get_system_snapshot

"Show me the top 10 processes by memory usage"
→ Uses get_process_top(sort_by="memory", limit=10)

"What metrics are available for network traffic?"
→ Uses search_metrics(pattern="network")

"Get detailed info about kernel.all.load"
→ Uses describe_metric(name="kernel.all.load")

💡 用例

性能故障排除

请克劳德:

  • “分析当前系统性能并确定瓶颈”
  • “为什么我的磁盘I/O这么高?”
  • “哪些进程消耗的CPU最多?”

系统监控

  • “对生产服务器进行健康检查”
  • “比较最后一分钟的CPU使用率”
  • “监视eth0上的网络流量”

容量规划

  • “内存使用趋势如何?”
  • “显示所有文件系统的磁盘使用情况”
  • “分析流程资源消耗模式”

🏗️ 建筑

┌─────────┐         ┌─────────┐          ┌─────────┐         ┌─────────┐
│   LLM   │ ◄─MCP─► │ pcp-mcp │ ◄─HTTP─► │ pmproxy │ ◄─────► │  pmcd   │
└─────────┘         └─────────┘          └─────────┘         └─────────┘
                                         (REST API)          (metrics)
  • pcp-mcp:FastMCP服务器通过MCP工具公开PCP指标
  • pmproxy:PCP的REST API服务器(默认情况下在端口44322上运行)
  • 预防医学分队:PCP度量收集器守护进程
  • 远程监控:设置 PCP_TARGET_HOST 通过pmproxy查询不同的pmcd实例

🔧 发展

# Install dependencies
uv sync --dev

# Run all checks
make check

# Individual commands
make lint       # ruff check
make format     # ruff format
make typecheck  # ty check
make test       # pytest with coverage

📖 文档

完整文档请访问 https://major.github.io/pcp-mcp

📄 许可证

麻省理工学院