Tabular
FreeNot checkedEnables SQL querying over CSV and Excel files using DuckDB, providing tools to load files, inspect schemas, and run read-only queries via MCP.
About
Enables SQL querying over CSV and Excel files using DuckDB, providing tools to load files, inspect schemas, and run read-only queries via MCP.
README
An MCP server that gives any LLM agent SQL over CSV and Excel files. DuckDB-powered, read-only, zero configuration.
Why
Embedding spreadsheets into a vector store gives agents mushy answers; tables chunk badly. The pattern that works in production is SQL-over-file: load the table into an analytical engine and let the agent query it. mcp-tabular packages that pattern as a standard MCP server, so it works with Claude Desktop, Claude Code, or any MCP client.
Agent ──MCP──▶ mcp-tabular ──▶ DuckDB (in-memory, read-only)
tools: load_file · list_tables · describe_table · query · sample_rows
Install & run
pip install -e .
mcp-tabular # stdio transport
Claude Desktop config:
{
"mcpServers": {
"tabular": { "command": "mcp-tabular" }
}
}
Tools
| Tool | Description |
|---|---|
load_file(path, table_name?) |
Load a CSV/XLSX file into an in-memory table. Returns schema + row count. |
list_tables() |
Tables currently loaded. |
describe_table(table) |
Columns, types, null counts, min/max — enough for the agent to write correct SQL. |
query(sql) |
Read-only SELECT. Results capped and returned as markdown. |
sample_rows(table, n) |
Quick peek at representative rows. |
Safety
- Read-only: statements other than
SELECT/WITHare rejected before execution. - Path allow-listing: set
MCP_TABULAR_ROOTto restrict which directory files may be loaded from. - Bounded output: result sets are truncated (default 200 rows) so a bad query can't blow up the agent's context window.
Example session
> load_file("sales_q3.csv")
loaded table 'sales_q3' (8,412 rows). Columns: region VARCHAR, sku VARCHAR, units BIGINT, revenue DOUBLE
> query("SELECT region, SUM(revenue) r FROM sales_q3 GROUP BY 1 ORDER BY r DESC LIMIT 3")
| region | r |
|--------|----------|
| South | 412,050 |
| West | 371,200 |
| East | 298,700 |
Design notes
Built after shipping enterprise agents where tabular Q&A over uploaded files was the highest-volume use case. Schema + sample injection (via describe_table/sample_rows) is what makes agents write correct SQL on the first try.
License
MIT
Install Tabular in Claude Desktop, Claude Code & Cursor
unyly install mcp-tabularInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add mcp-tabular -- uvx --from git+https://github.com/ayushsri/mcp-tabular mcp-tabularFAQ
Is Tabular MCP free?
Yes, Tabular MCP is free — one-click install via Unyly at no cost.
Does Tabular need an API key?
No, Tabular runs without API keys or environment variables.
Is Tabular hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Tabular in Claude Desktop, Claude Code or Cursor?
Open Tabular on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgres
Query your database in natural language
by AnthropicPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolCompare Tabular with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
