Instant dashboards from Claude Code. Connect to PostgreSQL, CSV, Excel, or Parquet — get a production-ready analytics dashboard in under a minute.
Project description
Lens
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-mcp
Then 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.
See It in Action
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.
What You Get
- 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
Any Data Source
| 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"
Why Lens?
| 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.
For Power Users
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: currency
Full YAML reference: llms-full.txt
CLI
lens serve dashboard.yaml # start dashboard
lens serve dashboard.yaml --port 3000 # custom port
lens validate dashboard.yaml # validate config
Python API
from lens import Lens
app = Lens("dashboard.yaml")
app.serve(port=8080)
Privacy & Security
- 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
Also Available
- Lens MCP Server -- the Claude integration (
pip install mindcase-lens-mcp)
License
MIT -- Built by Mindcase
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mindcase_lens-0.2.1.tar.gz.
File metadata
- Download URL: mindcase_lens-0.2.1.tar.gz
- Upload date:
- Size: 718.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba4955a3f5637a7ff36dcc0a66f21811de79cf05db647eca76503ee61a8af338
|
|
| MD5 |
d55f2d9639b19bd72464c17d385c1a03
|
|
| BLAKE2b-256 |
5e8bfc3c205b955787bb13607c5a78d6b8c7fcab04c909f1acec7b000ace8849
|
Provenance
The following attestation bundles were made for mindcase_lens-0.2.1.tar.gz:
Publisher:
publish.yml on mindcase-co/lens
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mindcase_lens-0.2.1.tar.gz -
Subject digest:
ba4955a3f5637a7ff36dcc0a66f21811de79cf05db647eca76503ee61a8af338 - Sigstore transparency entry: 1291178596
- Sigstore integration time:
-
Permalink:
mindcase-co/lens@de17d0a2c151ce9c82be40657835c7d787bb1f36 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/mindcase-co
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@de17d0a2c151ce9c82be40657835c7d787bb1f36 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mindcase_lens-0.2.1-py3-none-any.whl.
File metadata
- Download URL: mindcase_lens-0.2.1-py3-none-any.whl
- Upload date:
- Size: 494.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0540cc1f07ce4a233c58ffafe159a09736e7a7d878a987430814f47c0bb49ebb
|
|
| MD5 |
1d3d78e13eb4ecb6c1a0807515b93bfe
|
|
| BLAKE2b-256 |
c2151c4422a626a570d04426e7a1445b9d3b6a9ddc77045f62d7552a80021d8d
|
Provenance
The following attestation bundles were made for mindcase_lens-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on mindcase-co/lens
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mindcase_lens-0.2.1-py3-none-any.whl -
Subject digest:
0540cc1f07ce4a233c58ffafe159a09736e7a7d878a987430814f47c0bb49ebb - Sigstore transparency entry: 1291178654
- Sigstore integration time:
-
Permalink:
mindcase-co/lens@de17d0a2c151ce9c82be40657835c7d787bb1f36 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/mindcase-co
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@de17d0a2c151ce9c82be40657835c7d787bb1f36 -
Trigger Event:
push
-
Statement type: