Audit your Metabase in one command.
The audit I run for clients, as a script you run yourself. Duplicate questions, dead dashboards, queries pointing at tables that no longer exist, a health grade and a cleanup list. Runs on your laptop. Your API key never leaves it.
Node 18 or newer and an Admin API key from your Metabase. Under a minute for most instances.
One file. Every problem, in the order to fix it.
The scan writes METALENS-REPORT.md next to where you ran it. No dashboard to log into, nothing to export. Below, three excerpts from the sample instance.
- Fix 4 questions pointing at missing tables. They fail for everyone who opens them, one sits on the Executive Summary (legacy) dashboard.
- Archive 11 exact duplicate questions. 7 groups of structurally identical SQL. Keep one, archive the rest.
- Review 57 stale questions. Nobody has opened them in 90+ days.
- Add descriptions to 83 questions. Start with the most viewed.
- Review 5 groups with the same name. Same name, different query. Probably two ways to count one metric.
| Dashboard | Status | Stale | Owner |
|---|---|---|---|
| Board KPIs | healthy | 0/8 | Dana Whitfield |
| Support Overview | broken | 2/5 | Jamie Okonkwo |
| Subscription Health | warning | 5/6 | Marcus Oyelaran |
| Cohorts 2023 | warning | 4/4 | Priya Natarajan |
| Priya scratch | unknown | 0/0 | Priya Natarajan |
Nothing. That was the point.
Last month I offered to audit five Metabase instances for free. Nobody wanted to hand over an instance, which is fair. So the audit now runs where the instance lives.
The key needs to be in the Administrators group: Metabase only exposes table metadata, user names and the full question list to admins. Everything the kit does is read-only, except the archive command, which you opt into.
Dry run first. Undo file always.
Archiving is the only thing the kit ever writes to your Metabase, and it refuses to do it by accident.
Your Claude, your Metabase, your key.
The kit does the counting. The model you already pay for does the reading, the arguing and the writing. Three ways in, pick one.
{
"mcpServers": {
"metabase-audit": {
"command": "npx",
"args": ["-y", "metabase-audit", "mcp"],
"env": { "METABASE_URL": "…", "METABASE_API_KEY": "…" }
}
}
}# Data context: Northwind Outdoors ## Data model #### public.orders (35 questions, ~1,284,000 rows) - id: BigInteger [PK] - order_number: Text - customer_id: Integer [FK] -> customers - placed_at: DateTime [CreationTimestamp] … ## Trusted queries ### Net revenue by day, last 90 days
The report says what is wrong. It does not decide who is right.
Which of the three revenue definitions is the real one. Who is allowed to archive the CFO’s dashboard. What the board should look at instead of the pages nobody opens. That part is people and decisions, and a script will not do it. The Sprint is two weeks: we run this same kit with you, sit with the owners, sign off the definitions, execute the cleanup with someone accountable, and hand back the context file as a living document.