See why your agent is failing.
mcpeye is open-source, self-hosted product analytics and observability for MCP servers — think PostHog for MCP servers. Your MCP server exposes tools, AI agents call them, and most of the time the user walks away without getting what they came for. mcpeye captures what each agent was actually trying to do, groups calls into sessions, and surfaces the asks your tools attempted but could not deliver. Open-source, self-hosted, BYO LLM key.
What mcpeye is
A traditional APM tells you a tool call took 800ms and returned a 500. That’s the what. mcpeye captures the why: the agent self-reports its intent on every call (one injected parameter, no per-call LLM), so you can see the user goal behind a string of tool calls — and which goals your server keeps whiffing on. It runs entirely in your stack. Tool arguments and results never leave your infrastructure. The only thing that talks to an LLM is the summarizer worker, using a key you provide, and only to cluster sessions into reports — never on the hot path of a tool call.Three pillars
Session replay
Tool calls are sessionized by user and time window, so you can read a whole
agent interaction as one coherent transcript instead of scattered log lines.
Agent goals
Every call carries a self-reported
mcpeyeIntent. mcpeye rolls those up into
a one-line goal per session and an outcome: success, partial, or failed.Intent Gap Report
The hero feature. The top user asks your tools attempted but could not
deliver — ranked, deduped, with example sessions to drill into.
Why self-host (and not just APM)
Your data stays in your stack
Prompts, tool arguments, and results are exactly the kind of data you can’t
ship to a third-party SaaS. With mcpeye, Postgres and Redis are yours, the
LLM key is yours, nothing egresses.
APM measures health, not intent
Latency and error rates tell you a tool is up. They don’t tell you the user
asked for a refund your tools can’t issue. mcpeye is built around that gap.
Get running in five minutes
docker compose up, install an SDK, generate your first Intent Gap Report.