MCP server bridging Parca continuous-profiling to LLM clients.
426
An MCP server that exposes a Parca continuous-profiling backend to MCP clients (Claude Desktop, Claude Code, MCP Inspector, …) so an LLM can explore profile types, label sets, time-range series, and per-function hotspots (top / flamegraph) over a Parca server's gRPC API.
Built with the official modelcontextprotocol/go-sdk.
Source: https://github.com/davi17g/parcaprof-mcp
docker.io/davi17g/parcaprof-mcpvX.Y.Z per git tag, plus :latest on the most recent taglinux/amd64, linux/arm64alpine, runs as non-root user parcauser (UID 65532):8080 (Streamable HTTP at /mcp, SSE at /sse, liveness at /healthz)Run against a local Parca on the host (plaintext gRPC):
docker run --rm -p 8080:8080 davi17g/parcaprof-mcp:latest \
--parca-address=host.docker.internal:7070 \
--parca-insecure
Then point an MCP client at http://localhost:8080/mcp.
| MCP transport | Endpoint | Notes |
|---|---|---|
| Streamable HTTP | /mcp | Current MCP spec; preferred for remote clients |
| SSE | /sse | Legacy spec; kept for older clients |
| stdio | — | Use the binary directly (not this image) for Claude Desktop |
gRPC is used only to talk to Parca. There is no MCP-over-gRPC transport.
| Tool | Parca RPC |
|---|---|
parca_profile_types | ProfileTypes |
parca_labels | Labels |
parca_label_values | Values |
parca_series | Series |
parca_query_range | QueryRange |
parca_query_single | Query (compact summary) |
parca_top | Query with REPORT_TYPE_TOP, sorted top-N rows |
parca_flamegraph | Query with REPORT_TYPE_FLAMEGRAPH_TABLE, flattened & aggregated |
Times accept RFC3339 or relative now, now-15m, now-1h30m, now+5m. The
default window is the last 15 minutes.
| Flag | Default | Description |
|---|---|---|
--parca-address | localhost:7070 | Parca gRPC host:port |
--parca-insecure | false | Use plaintext (no TLS) to Parca |
--transport | http | http (Streamable HTTP + SSE) or stdio |
--http-addr | :8080 | HTTP listen address (when --transport=http) |
--version | — | Print version, commit, and build time, then exit |
PARCA_BEARER_TOKEN — sent as authorization: Bearer … on every gRPC call to Parca.By default the server dials Parca over TLS. Use --parca-insecure only for
local/dev Parca instances. For a managed Parca behind TLS + bearer auth:
docker run --rm -p 8080:8080 \
-e PARCA_BEARER_TOKEN=$PARCA_TOKEN \
davi17g/parcaprof-mcp:latest \
--parca-address=parca.example.com:443
GET /healthz returns 200 OK for liveness/readiness probes.
docker run --rm -p 7070:7070 ghcr.io/parca-dev/parca:v0.28.0npx @modelcontextprotocol/inspector → connect to http://localhost:8080/mcp
→ list tools → call parca_profile_typesContent type
Image
Digest
sha256:9564c4aff…
Size
12.4 MB
Last updated
4 months ago
docker pull davi17g/parcaprof-mcp