Query system performance metrics via MCP - CPU, memory, disk I/O, network, processes
MCP server for Performance Co-Pilot (PCP) metrics.
Query system performance metrics via the Model Context Protocol - CPU, memory, disk I/O, network, processes, and more.
📖 Full Documentation | 🚀 Getting Started
Run immediately with uvx — no installation required:
uvx pcp-mcpOr install as a persistent global tool:
uvx tool install pcp-mcp
pcp-mcppip install pcp-mcpOr with uv:
uv add pcp-mcppmcd and pmproxy running
# Fedora/RHEL/CentOS
sudo dnf install pcp
sudo systemctl enable --now pmcd pmproxy
# Ubuntu/Debian
sudo apt install pcp
sudo systemctl enable --now pmcd pmproxyConfigure via environment variables:
| Variable | Description | Default |
|---|---|---|
PCP_HOST | pmproxy host | localhost |
PCP_PORT | pmproxy port | 44322 |
PCP_TARGET_HOST | Target pmcd host to monitor | localhost |
PCP_USE_TLS | Use HTTPS for pmproxy | false |
PCP_TLS_VERIFY | Verify TLS certificates | true |
PCP_TLS_CA_BUNDLE | Path to custom CA bundle | (optional) |
PCP_TIMEOUT | Request timeout (seconds) | 30 |
PCP_USERNAME | HTTP basic auth user | (optional) |
PCP_PASSWORD | HTTP basic auth password | (optional) |
PCP_ALLOWED_HOSTS | Hostspecs allowed via host param | (optional) |
pcp-mcpPCP_TARGET_HOST=webserver1.example.com pcp-mcpOr use the CLI flag:
pcp-mcp --target-host webserver1.example.comPCP_HOST=metrics.example.com pcp-mcppcp-mcp --transport sseAdd to ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"pcp": {
"command": "uvx",
"args": ["pcp-mcp"]
}
}
}For remote monitoring:
{
"mcpServers": {
"pcp": {
"command": "uvx",
"args": ["pcp-mcp", "--target-host", "webserver1.example.com"]
}
}
}💡 Using
uvxmeans you don't need pcp-mcp installed — it runs directly from PyPI.
get_system_snapshot - Point-in-time system overview (CPU, memory, disk, network, load)get_process_top - Top processes by CPU, memory, or I/O usagequery_metrics - Fetch current values for specific PCP metricssearch_metrics - Discover available metrics by name patterndescribe_metric - Get detailed metadata about a 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")Ask Claude to:
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ LLM │ ◄─MCP─► │ pcp-mcp │ ◄─HTTP─► │ pmproxy │ ◄─────► │ pmcd │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
(REST API) (metrics)PCP_TARGET_HOST to query a different pmcd instance via pmproxy# 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 coverageFull documentation at https://major.github.io/pcp-mcp
MIT