Skip to main content

MCP server for Performance Co-Pilot

Project description

pcp-mcp

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.

๐Ÿš€ Installation

pip install pcp-mcp

Or with uv:

uv add pcp-mcp

๐Ÿ“‹ Requirements

  • Python: 3.10+
  • PCP: Performance Co-Pilot with pmproxy running
    # Fedora/RHEL/CentOS
    sudo dnf install pcp
    sudo systemctl enable --now pmproxy
    
    # Ubuntu/Debian
    sudo apt install pcp
    sudo systemctl enable --now pmproxy
    

โš™๏ธ Configuration

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_TIMEOUT Request timeout (seconds) 30
PCP_USERNAME HTTP basic auth user (optional)
PCP_PASSWORD HTTP basic auth password (optional)

๐ŸŽฏ Usage

Monitor localhost (default)

pcp-mcp

Monitor a remote host

PCP_TARGET_HOST=webserver1.example.com pcp-mcp

Or use the CLI flag:

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

Connect to remote pmproxy

PCP_HOST=metrics.example.com pcp-mcp

Use SSE transport

pcp-mcp --transport sse

๐Ÿ”Œ MCP Client Configuration

Claude Desktop

Add to ~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "pcp": {
      "command": "pcp-mcp"
    }
  }
}

For remote monitoring:

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

๐Ÿ› ๏ธ Available Tools

System Monitoring

  • get_system_snapshot - Point-in-time system overview (CPU, memory, disk, network, load)
  • get_process_top - Top processes by CPU, memory, or I/O usage
  • query_metrics - Fetch current values for specific PCP metrics
  • search_metrics - Discover available metrics by name pattern
  • describe_metric - Get detailed metadata about a metric

Example Queries

"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")

๐Ÿ“š Resources

Browse metrics via MCP resources:

  • pcp://metrics - List all available metrics (grouped by prefix)
  • pcp://system/snapshot - Latest system snapshot
  • pcp://processes/top - Top processes

๐Ÿ’ก Use Cases

Performance Troubleshooting

Ask Claude to:

  • "Analyze current system performance and identify bottlenecks"
  • "Why is my disk I/O so high?"
  • "Which processes are consuming the most CPU?"

System Monitoring

  • "Give me a health check of the production server"
  • "Compare CPU usage over the last minute"
  • "Monitor network traffic on eth0"

Capacity Planning

  • "What's the memory utilization trend?"
  • "Show me disk usage across all filesystems"
  • "Analyze process resource consumption patterns"

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   LLM   โ”‚ โ—„โ”€MCPโ”€โ–บ โ”‚ pcp-mcp โ”‚ โ—„โ”€HTTPโ”€โ–บ โ”‚ pmproxy โ”‚ โ—„โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚  pmcd   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                         (REST API)          (metrics)
  • pcp-mcp: FastMCP server exposing PCP metrics via MCP tools
  • pmproxy: PCP's REST API server (runs on port 44322 by default)
  • pmcd: PCP metrics collector daemon
  • Remote monitoring: Set PCP_TARGET_HOST to query a different pmcd instance via pmproxy

๐Ÿ”ง Development

# 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

๐Ÿ“– Documentation

Full documentation at https://major.github.io/pcp-mcp

๐Ÿ“„ License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pcp_mcp-0.1.0.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pcp_mcp-0.1.0-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file pcp_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: pcp_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pcp_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c343fc1326bbf3c9502125315cbca76305e6db876239eae2ba5e698d14251b05
MD5 69d37f18b6f912e8f9b51bce87689425
BLAKE2b-256 2c22e7e44b99398e6a4c58852cb6f407e84b348f3637d1f63996b9cdb09ccd87

See more details on using hashes here.

Provenance

The following attestation bundles were made for pcp_mcp-0.1.0.tar.gz:

Publisher: publish.yml on major/pcp-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pcp_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pcp_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pcp_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 438cc9d97a76f1c00477257514a76f2ac1052ccb5f8d498b8bd8348e565a33f6
MD5 9fbb84193a287800e06c2e19f39a4cd8
BLAKE2b-256 48247c2e7088bad35cf77577c72ff9b4cb4c969e8153a3680c2f33f6b379f7af

See more details on using hashes here.

Provenance

The following attestation bundles were made for pcp_mcp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on major/pcp-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page