Connects to Performance Co-Pilot's pmproxy REST API to expose system metrics through five MCP tools: get_system_snapshot for CPU, memory, disk, and network overview; get_process_top for sorting processes by resource usage; query_metrics for fetching specific PCP metrics; search_metrics for discovery; and describe_metric for metadata. Built on FastMCP, runs via uvx without installation, and works against localhost pmcd by default or any remote host via PCP_TARGET_HOST. You'd reach for this when troubleshooting performance issues or capacity planning, asking Claude to analyze bottlenecks, compare resource trends, or identify which processes are consuming resources. Requires PCP with pmcd and pmproxy running on the monitored systems.
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-mcp
Or install as a persistent global tool:
uvx tool install pcp-mcp
pcp-mcp
pip install pcp-mcp
Or with uv:
uv add pcp-mcp
pmcd 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 pmproxy
Configure 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-mcp
PCP_TARGET_HOST=webserver1.example.com pcp-mcp
Or use the CLI flag:
pcp-mcp --target-host webserver1.example.com
PCP_HOST=metrics.example.com pcp-mcp
pcp-mcp --transport sse
Add 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 coverage
Full documentation at https://major.github.io/pcp-mcp
MIT
PCP_HOSTpmproxy host
PCP_PORTpmproxy port
PCP_TARGET_HOSTTarget pmcd host to monitor
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent