Instant dashboards from Claude Code. One prompt. Under a minute. Done.
Point Claude at your data -- PostgreSQL, CSV, Excel, Parquet -- and get a production-ready analytics dashboard. No frontend code. No setup. No cleanup needed.
pip install mindcase-lens
claude mcp add lens -- uvx mindcase-lens-mcpThen tell Claude:
"Build me a dashboard from my database at postgresql://localhost:5432/mydb"
That's it. Claude introspects your schema, generates the config, and serves a full dashboard with KPIs, charts, tables, filters, and theming.
You: "I have a folder of CSV files in ./data/ — build me a dashboard"
Claude: Introspecting ./data/...
Found 3 tables: sales (10K rows), customers (500 rows), products (200 rows)
Generating dashboard config...
Dashboard running at http://localhost:8080
Under a minute. Every time.
- KPIs with trend indicators and % change
- Charts -- bar, line, area, pie, donut, horizontal bar (with pagination for dense data)
- Data tables -- sortable, paginated, conditional formatting, CSV export
- Filters -- dropdowns (single/multi with search), date range, text, number range, toggle
- Theming -- light/dark mode, color themes, fonts, corner radius. All live-preview.
- Sidebar navigation -- auto-generated, with logo support
| Source | Just point to it |
|---|---|
| PostgreSQL | postgresql://user:pass@host:5432/db |
| CSV / TSV | data.csv or ./folder/ |
| Excel | report.xlsx |
| Parquet | data.parquet |
| Mix them | A list of any of the above |
# One file
connection: "sales.csv"
# A whole folder — each file becomes a table
connection: "./data/"
# Multiple sources together
connection:
- "sales.csv"
- "customers.xlsx"
- "postgresql://localhost:5432/mydb"| Lens | Grafana | Metabase | Streamlit | |
|---|---|---|---|---|
| Time to dashboard | < 1 minute | 10+ minutes | 10+ minutes | Hours |
| Works with Claude | Native MCP | No | No | No |
| Frontend code | None | None | None | Yes |
| CSV/Excel | Built-in | Plugin | Upload | Code |
| Setup | pip install |
Docker | Docker/JAR | pip + code |
Lens exists because every other dashboarding tool requires you to either build a frontend, learn a UI, or write code. With Lens, you describe what you want to Claude, and it's done.
Everything Claude generates is a YAML config file. You can edit it directly:
app:
title: "Sales Dashboard"
database:
connection: "postgresql://localhost:5432/mydb"
pages:
- id: sales
name: Sales
icon: bar-chart
filters:
- id: region
type: dropdown
label: Region
query: "SELECT DISTINCT region FROM sales"
all: true
rows:
- height: small
items:
- type: kpi
title: Revenue
query: "SELECT SUM(amount) as current_value FROM sales WHERE (:region = 'ALL' OR region = :region)"
prefix: "$"
compact: true
- height: medium
items:
- type: chart
chart_type: bar
title: Revenue by Month
query: "SELECT month, SUM(amount) as revenue FROM sales GROUP BY month"
x: month
y: revenue
y_format: currencyFull YAML reference: llms-full.txt
lens serve dashboard.yaml # start dashboard
lens serve dashboard.yaml --port 3000 # custom port
lens validate dashboard.yaml # validate configfrom lens import Lens
app = Lens("dashboard.yaml")
app.serve(port=8080)- All database connections are read-only by default
- SQL queries are parameterized -- no injection risk
- Raw SQL never reaches the browser
- No telemetry, no external calls, no data leaves your machine
- Lens MCP Server -- the Claude integration (
pip install mindcase-lens-mcp)
MIT -- Built by Mindcase