robovac is an MCP server with one job: turn a statistics snapshot of one table into a link. It never connects to your database: it hands your agent a read-only SELECT, the agent runs it twice on its own connection, and robovac computes the report from the two result rows. There is no account, no DATABASE_URL, and no write path to your database. robovac stores two things: the report behind the short link for 30 days, and one report counter per IP address for the current hour.1
# Claude Code claude mcp add --transport http robovac https://robovac.hannesmoser.at/api/mcp # Codex codex mcp add robovac --url https://robovac.hannesmoser.at/api/mcp
Hands your agent the read-only statistics query (pg_stat_user_tables, pg_class, pg_settings, reloptions). The agent runs it twice, 30-60 s apart, on its own connection. The delay turns counters into rates.
Takes the two result rows and returns two links (a short url that expires in 30 days, and a permalink that never does), the workload pattern, warnings, and the optimized settings with one reason per change. Optional hints (pattern, replicationLagBudget, storage, fkHeavy, …) sharpen the classification.
The ranking query (dead-tuple ratio plus xid age), for when the agent has to find the table worth snapshotting first.
Returns the stable explain URL for any term in /arcana. Cheaper than letting a model paraphrase the docs.
For your agent's own connection: a role in pg_monitor is enough. No table data is read, ever. robovac needs no DATABASE_URL and never opens a database connection of its own. It does store two things: the report behind the short link for 30 days, and one report counter per IP address for the current hour.