vigil_bootLABSCO SUMMARY
The failure your dashboard reports as a success.
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.
What it is
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.
What you get
- 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, plusvigil mcp-healthon the command line andvigil mcp-health-checkas 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
Requirements
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.
Setup effort
One command — pip install vigil-agent[mcp]
USE CASES
Finding the tool that silently returns nothing
Instrument the server, then read the silent list and per-tool stats to see which calls succeed without returning anything.
Gating a deploy on MCP health
Probe the server in CI and let a non-zero exit stop the pipeline when tools are erroring or going quiet.
Starting a session already knowing where things stood
Boot from pre-compiled context instead of re-explaining the project at the top of every conversation.
Handing work between agents
End a session with files touched, decisions and next steps, and have the next agent resume from exactly that.
Cutting tool-definition bulk per session
Tag tools with context frames so an agent in one mode is offered that frame's tools rather than the full registry.
12 tools
Listed in project docs. Your client may show a different list.
vigil_compilevigil_signalvigil_statusvigil_signalsvigil_handoffvigil_resumevigil_chainvigil_stalevigil_focusvigil_framesvigil_agentsBEFORE YOU INSTALL
What to know first
Tools you get
12 tools named in the project's documentation.
Requires
vigil on PATH
INSTALLATION
Connect your client
Server setup
pip install vigil-agent[mcp]MCP Clients
Claude Code
claude mcp add vigil -- vigil serveClaude Desktop, Cursor
{
"mcpServers": {
"vigil": {
"command": "vigil",
"args": [
"serve"
]
}
}
}Any MCP client — SSE
vigil serve --transport sse --port 8300