You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of epic #8286. Gap found during a coverage audit against the maintainer's requested list (2026-07-25): every other analytics surface (web, AI observability, error tracking) has a dedicated sub-issue, but MCP tool-call analytics -- despite already emitting real PostHog events -- has no sub-issue covering dashboards/insights over that data.
Current state
src/mcp/telemetry.ts (#6235, landed before this epic) already emits a real mcp_tool_call event on every tools/call dispatch through the remote MCP (src/mcp/server.ts's recordMcpToolTelemetry chokepoint) -- tool name, caller type (remote/local), success, coarse duration. Opt-in (POSTHOG_API_KEY), never throws, anonymous fixed distinct_id (no per-actor identity by design, #6228). The local/CLI-side counterpart (packages/loopover-mcp/lib/telemetry.js) has separate wiring status per #6236/#6238 -- confirm its current state before assuming both sides already emit.
This capture path is NOT itself in scope here -- it already exists and already works. What's missing is turning the resulting event stream into something a maintainer actually looks at: no PostHog insight, dashboard panel, or alert currently consumes mcp_tool_call.
Design and build PostHog insights/dashboard panel(s) over mcp_tool_call: adoption over time (unique tool names, call volume), success/failure rate per tool, coarse latency distribution, remote-vs-local split.
Part of epic #8286. Gap found during a coverage audit against the maintainer's requested list (2026-07-25): every other analytics surface (web, AI observability, error tracking) has a dedicated sub-issue, but MCP tool-call analytics -- despite already emitting real PostHog events -- has no sub-issue covering dashboards/insights over that data.
Current state
src/mcp/telemetry.ts(#6235, landed before this epic) already emits a realmcp_tool_callevent on everytools/calldispatch through the remote MCP (src/mcp/server.ts'srecordMcpToolTelemetrychokepoint) -- tool name, caller type (remote/local), success, coarse duration. Opt-in (POSTHOG_API_KEY), never throws, anonymous fixeddistinct_id(no per-actor identity by design, #6228). The local/CLI-side counterpart (packages/loopover-mcp/lib/telemetry.js) has separate wiring status per #6236/#6238 -- confirm its current state before assuming both sides already emit.This capture path is NOT itself in scope here -- it already exists and already works. What's missing is turning the resulting event stream into something a maintainer actually looks at: no PostHog insight, dashboard panel, or alert currently consumes
mcp_tool_call.Requirements
src/mcp/server.ts) and local (@loopover/mcpCLI) paths -- don't assume feat(mcp): add a typed PostHog wrapper module for packages/loopover-mcp (local, opt-in) #6236/feat(mcp): instrument the local MCP tool-dispatch chokepoint with PostHog events (opt-in) #6238 fully landed.mcp_tool_call: adoption over time (unique tool names, call volume), success/failure rate per tool, coarse latency distribution, remote-vs-local split.Deliverables
mcp_tool_callcovering adoption, success rate, latencyLinks & Resources
src/mcp/telemetry.ts,src/mcp/server.tsBoundaries
Dashboard/insight construction over already-emitted data only -- no new capture fields, no changes to
src/mcp/telemetry.ts's allowlist.maintainer-only.