Sign inSign up

davi17g/parcaprof-mcp

By davi17g

•Updated 4 months ago

MCP server bridging Parca continuous-profiling to LLM clients.

Image
Developer tools
Monitoring & observability
0

426

davi17g/parcaprof-mcp repository overview

⁠parcaprof-mcp

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⁠

⁠Image

  • Registry: docker.io/davi17g/parcaprof-mcp
  • Tags: vX.Y.Z per git tag, plus :latest on the most recent tag
  • Architectures: linux/amd64, linux/arm64
  • Base: alpine, runs as non-root user parcauser (UID 65532)
  • Exposes HTTP on :8080 (Streamable HTTP at /mcp, SSE at /sse, liveness at /healthz)

⁠Quick start

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.

⁠Transports

MCP transportEndpointNotes
Streamable HTTP/mcpCurrent MCP spec; preferred for remote clients
SSE/sseLegacy 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.

⁠Tools

ToolParca RPC
parca_profile_typesProfileTypes
parca_labelsLabels
parca_label_valuesValues
parca_seriesSeries
parca_query_rangeQueryRange
parca_query_singleQuery (compact summary)
parca_topQuery with REPORT_TYPE_TOP, sorted top-N rows
parca_flamegraphQuery 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.

⁠Flags

FlagDefaultDescription
--parca-addresslocalhost:7070Parca gRPC host:port
--parca-insecurefalseUse plaintext (no TLS) to Parca
--transporthttphttp (Streamable HTTP + SSE) or stdio
--http-addr:8080HTTP listen address (when --transport=http)
--version—Print version, commit, and build time, then exit
⁠Environment
  • PARCA_BEARER_TOKEN — sent as authorization: Bearer … on every gRPC call to Parca.

⁠TLS 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

⁠Health check

GET /healthz returns 200 OK for liveness/readiness probes.

⁠Verify end-to-end

  1. Start Parca: docker run --rm -p 7070:7070 ghcr.io/parca-dev/parca:v0.28.0
  2. Start this server (see Quick start above)
  3. npx @modelcontextprotocol/inspector → connect to http://localhost:8080/mcp → list tools → call parca_profile_types

⁠License

Apache-2.0⁠

Tag summary

Content type

Image

Digest

sha256:9564c4aff…

Size

12.4 MB

Last updated

4 months ago

docker pull davi17g/parcaprof-mcp