Product
mcpsignals
What it records
Every tool call writes one row: timestamp, tool name, duration, success or failure, and request and response size in bytes.
In Node and Python you can also ask for the agent's stated intent. It is off by default, and models sometimes skip the field or make up a reason.
Nothing leaves your infrastructure
- The library only talks to the sink you configure: Postgres, BigQuery, Cloudflare D1, or your OpenTelemetry collector.
- No network call at import time. Not even an anonymous ping.
- Tool arguments are not recorded unless you opt in. Even then it keeps only key names and value types.
- MIT licensed and free.
Install
Wrap your existing server in one call. How you register tools does not change.
- Node.js 20+
-
npm install mcpsignals - Python 3.10+
-
pip install mcpsignals - Go 1.25+ (console and custom sinks only)
-
go get github.com/zentered-studios/mcpsignals/packages/go/v2
Response size costs as much as call count
Roadbook runs mcpsignals on its MCP server. From 2026-09-03 to 2026-10-08 it recorded 23 tool calls, all successful, so an error dashboard would show nothing. The byte counts show the cost: list_journal_entries returns 256 times more bytes than it receives, roughly 7,500 tokens per call at 4 bytes per token. That is the tool to trim first.
The MCP server audit
mcpsignals is the tooling behind our MCP server audit. We instrument your server, report which tools agents misuse, and ship the rewrites.
Start with a conversation
Tell us what you are building and the deadline you are working against. You get a scope and a fixed price back, or a straight no.
Zentered Studios LLC
Boulder, Colorado