Latency and error charts are standard now; the case this makes is that the expensive MCP failure is the call that returns empty, null or blank content with no exception — which the SDK reports as success and the agent quietly improvises around. Recording that as its own status is a small change with a large effect on debugging, and it needs one line in the server you already run. The awareness half is effectively a second product in the same package: worth it if you run several agents across sessions, ignorable if you do not.
Two layers in one Python package. MCPWatch wraps any Python MCP server in a single line and records a distinct silent status for calls that return empty, null or blank content with no error raised — alongside per-tool latency percentiles, error rates and isError responses. The awareness layer is a daemon that compiles agent state into hot context, plus a signal bus, session handoff and frame-based tool filtering, exposed as its own MCP server.
- An agent booted with pre-compiled context, or a fresh compilation on demand — `vigil_boot`, `vigil_compile`
- Signals emitted and read between agents, with a budget per type: observation 400 characters, handoff 600, summary 800, alert 300 — `vigil_signal`, `vigil_signals`, `vigil_status`
- Sessions ended with a structured handoff — files touched, decisions, next steps — resumed by the next agent, or read back as a chain of the last several — `vigil_handoff`, `vigil_resume`, `vigil_chain`
- Agents that have gone quiet, a priority work queue, context frames and a roster of known agents — `vigil_stale`, `vigil_focus`, `vigil_frames`, `vigil_agents`
- Monitoring readable over REST: `GET /mcp/health`, `/mcp/tools`, `/mcp/silent`, `/mcp/errors`, `/mcp/latency`, `/mcp/volume`, plus `vigil mcp-health` on the command line and `vigil mcp-health-check` as a CI probe
- Frame-based tool filtering, so an agent working in one context is offered the tools tagged for it rather than everything registered
Python. `pip install vigil-agent` for the core, `pip install vigil-agent[mcp]` to run it as an MCP server. Storage is SQLite — no Redis, Postgres or Docker. Run `vigil init`, then `vigil serve` for stdio or `vigil serve --transport sse --port 8300` for remote clients; `claude mcp add vigil -- vigil serve` wires Claude Code. Monitoring another server is an import and one call: `instrument(mcp)` keeps stats in process, `instrument(mcp, db_path=...)` writes them to the same database as your signals. The package is `vigil-agent` 2.3.0, MIT.
One command — pip install vigil-agent[mcp]
