Pipetable

io.github.melihbirimPublished by GitHub account melihbirimv0.7.2Updated Nov 7, 2026

Local data runtime for AI agents: query CSV, Excel, Parquet and JSON files with DuckDB SQL.

Overview

AI-generated overview

Local MCP server that lets an AI assistant register folders of CSV, Parquet, JSON, TSV or Excel files and query them with real DuckDB SQL.

What you can do
  • Register all data files in a folder and list the resulting datasets with their schemas and column types
  • Inspect a specific table, including columns and sample rows
  • Run DuckDB SQL against the registered files and get ground-truth results rather than generated answers
  • Optionally ask questions in natural language, which are translated into SQL before running
When to use it
Useful when an assistant needs to answer questions over local tabular data files and you want exact SQL results instead of guesses, for example exploring a folder of exports or spreadsheets on your own machine.
Requirements
Runs as a local stdio process installed via cargo or an install script; no account or API key is needed for SQL and MCP use. Natural-language querying is optional and needs one of ANTHROPIC_API_KEY, OPENAI_API_KEY (optionally with OPENAI_BASE_URL) or a local Ollama instance. Files up to 2GB; folders scanned up to three levels deep.
Before you install
The assistant can run arbitrary SQL against the files in the folders you register, so point it only at data you are comfortable exposing to the model. If you enable natural-language mode with a hosted provider, your questions and possibly schema context go to that provider; Ollama keeps it local. The install instructions pipe a remote script into a shell, which you may prefer to review or replace with the cargo install.

Installation

In SourceWeft

  1. Open Pipetable in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Pipetable

The local data runtime for AI agents.

[Pipetable demo] Point it at a folder of CSV, Parquet, JSON, or TSV files — your AI can now query them with real SQL instead of hallucinating.

Works as an MCP server for Claude Code, Cursor, RooCode, and Copilot. Also ships as a standalone CLI for interactive data exploration. Powered by DuckDB. Files never leave your machine.

MIT licensed.

Install

sh
# macOS / Linuxcurl -fsSL https://pipetable.com/install | sh
# Windowsirm https://pipetable.com/install.ps1 | iex
# Rustcargo install pipetable

MCP server setup

Claude Code

sh
claude mcp add pipetable pipetable mcp

Cursor / RooCode

json
{  "mcpServers": {    "pipetable": {      "command": "pipetable",      "args": ["mcp"]    }  }}

VS Code (Copilot)

json
{  "servers": {    "pipetable": {      "type": "stdio",      "command": "pipetable",      "args": ["mcp"]    }  }}

Once configured, your AI can:

  1. scan_folder — register all data files in a folder
  2. list_datasets — see schemas and column types
  3. get_schema — inspect a specific table with sample rows
  4. execute_sql — run real DuckDB SQL against your files

Results are ground truth from DuckDB, not generated.

CLI

sh
pipetable ~/data/

SQL and natural language at the > prompt. SQL always works. Natural language requires Ollama running locally.

> SELECT region, SUM(revenue) AS total FROM sales GROUP BY 1 ORDER BY 2 DESC
4 row(s)
region  total─────────────EU      141000US       32000APAC     17000
> show me top 5 customers by revenueUsing: customers, salesThinking.....SELECT c.name, SUM(s.revenue) AS total FROM customers cJOIN sales s ON s.customer_id = c.idGROUP BY c.name ORDER BY total DESC LIMIT 5...→ piped as _last

Piping results

Every query saves its result as _last — a live DuckDB view you can query further:

> SELECT * FROM sales WHERE region = 'EU'...→ piped as _last
> show me top 3 from _lastUsing: _lastThinking.....

Dot commands

CommandDescription
.scan <path>Load a folder or file (Tab completes)
.datasetsList loaded datasets
.schema <name>Columns + sample rows
.drop <name>Remove a dataset from the session
.use <n1> <n2>Focus NL queries on specific datasets
.remove <name>Remove from focus
.clearReset focus to all datasets
.model <name>Switch Ollama model
.helpShow help

Tab completes dataset names after FROM, JOIN, .schema, .drop, .use.

One-shot query

sh
pipetable ask "who has the highest revenue?" ~/data/pipetable ask "SELECT * FROM sales LIMIT 5" ~/data/

Natural language (optional)

Set any one of these — pipetable auto-detects:

sh
# Claude (best quality)export ANTHROPIC_API_KEY=sk-ant-...
# OpenAI or any compatible API (LM Studio, Groq, Together, etc.)export OPENAI_API_KEY=sk-...export OPENAI_BASE_URL=http://localhost:1234  # optional, for local endpoints
# Ollama (local, no key needed)ollama pull qwen2.5-coder:1.5bollama serve

Priority: Anthropic → OpenAI-compatible → Ollama. SQL and MCP work without any of them.

Supported formats

CSV, Parquet, JSON, NDJSON, TSV, Excel (xlsx, xls, xlsm). Files up to 2GB. Folders scanned up to 3 levels deep. Hidden files and common noise directories (node_modules, target, .git) are skipped automatically.

License

MIT

  • MCP Registry name: mcp-name: io.github.melihbirim/pipetable

Source: README.md at commit 245d1d4

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

1
  1. v0.7.2LatestOct 31, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts