you connected an MCP server to your LLM. the agent calls tools. you don't know which ones, what arguments it passed, or what came back. observer sits in the middle. it logs everything. now you can see.
observer is a transparent MCP proxy. it sits between your agent and your MCP servers. every tool call, every response, every error passes through it. it stores everything in SQLite. you can query it later.
every call gets logged to a local SQLite database. timestamp, tool name, arguments, response, latency. structured. queryable. not a log file you grep. a database you query.
observer stores tool names, argument schemas, and timing by default. not the actual payload data. your secrets stay in the server. the metadata is enough to know what happened.
want the full request and response bodies? turn it on. off by default because most people don't need it and it's a lot of data. you decide.
regex patterns to strip sensitive data before logging. api keys, tokens, passwords. define what to redact. observer redacts it. the log stays clean.
each agent session gets its own trace namespace. you can see what one session did without filtering through noise from others.
hash the payloads for deduplication. same call twice, same hash. you can see patterns without storing the full data.
observer doesn't modify calls. it copies them. the agent and the server don't know it's there. zero behavior change. just visibility.
metadata-only mode adds microseconds. you won't notice it. your agent won't notice it. the only difference is you can see what happened.
you connected 5 MCP servers to your agent. something went wrong. the agent called a tool you didn't expect. or it passed arguments you didn't authorize. or it read a file it shouldn't have. you have no idea because there's no log. there's no trace. there's no record. observer is the record.