The Nothing

io.github.Meador793Published by GitHub account Meador793v2.0.0Updated Nov 5, 2026

Mr. Decoupler: a private seam between AI and any database. No SQL, only views you approve.

VerifiedSTDIODesktop onlyDatabasesSecurity & Monitoring

Overview

AI-generated overview

A deliberately minimal, read-only database seam: it exposes only a schema plus pre-approved views, and does nothing at all when no data source is configured.

What you can do
  • Read the shape of a connected database: table names, columns and row counts, never records
  • Read pre-approved, row-capped views you define in a JSON file, with no SQL written by the assistant
  • Connect privately to PostgreSQL, MySQL/MariaDB, SQL Server, SQLite, or CSV/TSV/JSONL datasets, auto-detected inside the project folder
  • Fall back to placeholder tools (nothing, pass_through, search, fetch) that return empty or echoed results when no source is configured
  • Optionally remove the view tool entirely so data enters the chat only through resources you attach
When to use it
Use it when you want an assistant to understand a database's structure and a few curated aggregates without giving it query access, or when you want to prototype an AI-facing data seam before a real source exists. It suits teams that would rather decide in advance which numbers reach the model.
Requirements
Runs as a local stdio process; Node.js 18+ for the npm package, or the Claude Desktop bundle. A data source is optional: set THE_NOTHING_DB to a connection string or dataset path, or let it auto-detect DATABASE_URL, a .env entry, or a SQLite/CSV/TSV/JSONL file in the project folder. Optional settings include THE_NOTHING_VIEWS, THE_NOTHING_MAX_ROWS, THE_NOTHING_AUTODETECT and THE_NOTHING_VIEW_TOOL.
Before you install
THE_NOTHING_DB holds a database connection string with credentials; keep it in secret storage or environment, not shared config. Anything a view returns is sent to your AI provider as part of the conversation, so prefer aggregates over raw rows. Use a read-only database account as a second safeguard. The README also mentions an HTTP mode with a bearer token and a public-address override; that mode is not part of this stdio package listing.

Installation

In SourceWeft

  1. Open The Nothing 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

[The Nothing: three dots on black]

The Nothing

a.k.a. Mr. Decoupler: the fastest private way to connect AI to a database.

Sometimes less is more.


[The Nothing MCP server]

The idea

Most database MCP servers hand the AI a query tool. The AI writes SQL, rows pour into the context window, and every question costs another round trip, more tokens and more exposure.

The Nothing turns that around. It holds the database connection privately, on your side, and gives the AI one minimal, read-only tool that can't run SQL:

  • read_view schema: tables, columns and row counts. Structure only, never records.
  • read_view <name>: a view you approved ahead of time, row-capped. Optional.

The AI can't write queries, browse tables, or change anything. It understands the shape of your data without dragging the data itself into the conversation. That's the decoupling, and it's why we call it Mr. Decoupler.

With no database around, it does exactly what the name says: nothing.

Zero setup

Open a project and it connects on its own, checking in this order:

  1. THE_NOTHING_DB, if you set it
  2. DATABASE_URL in the environment
  3. THE_NOTHING_DB or DATABASE_URL in the project's .env file
  4. A SQLite, CSV, TSV or JSONL file in the project folder

Nothing found means nothing connected. Auto-detection only looks inside a project folder, never your home folder or a drive root. Turn it off with THE_NOTHING_AUTODETECT=off.

How it works

 Your database / dataset ──(private, read-only)──▶ The Nothing ──(read_view: schema + approved views)──▶ AI   Postgres · MySQL · SQL Server                       │   SQLite · CSV · TSV · JSONL                          └─ the AI can't write SQL, browse or change data
GuaranteeHow
One tool, no SQLread_view accepts only a name from a fixed list: schema or a view you approved.
No records by defaultThe schema is table names, columns and row counts. Rows appear only in views you wrote.
Read-onlyViews must be a single SELECT/WITH. Postgres and MySQL run them in a READ ONLY transaction; SQL Server in a transaction that is always rolled back; SQLite files open read-only.
BoundedEvery view is row-capped (default 50, max 1000).
Credentials stay putThe connection string never appears in tool output, instructions or error messages.
Strictest modeTHE_NOTHING_VIEW_TOOL=off removes the tool entirely: zero tools, and data enters the chat only when you attach a resource yourself.

Supported sources

ConnectionSource
postgres://user:pass@host:5432/dbPostgreSQL and compatible services (Supabase, Neon, Aurora, CockroachDB…)
mysql://user:pass@host:3306/db or mariadb://…MySQL, MariaDB and compatible services (PlanetScale, Aurora MySQL, TiDB…)
mssql://user:pass@host:1433/db, sqlserver://…, or Server=…;Database=…;User Id=…;Password=…SQL Server, Azure SQL
file.db, .sqlite, .sqlite3, sqlite:/path, or file:./dev.db (Prisma style)SQLite
data.csv, .tsv, .jsonlDatasets, loaded into a private in-memory table named after the file

Use a read-only database account. The Nothing enforces read-only on its side too, but a read-only account means nothing could write even by mistake.

Optional: approve views

When you want the AI to see actual numbers, approve views in a JSON file and point THE_NOTHING_VIEWS at it (see examples/views.example.json):

json
{  "views": {    "revenue_by_month": {      "description": "Total revenue per month.",      "sql": "SELECT date_trunc('month', placed_at) AS month, SUM(amount) AS revenue FROM orders GROUP BY 1 ORDER BY 1"    },    "customers_by_region": {      "description": "Counts only. No names or emails.",      "sql": "SELECT region, COUNT(*) AS customers FROM customers GROUP BY region"    }  }}

Aggregates make the best views: they give the AI what it needs to reason without raw rows in the conversation.

Install

VS Code + GitHub Copilot

Install The Nothing from the VS Code Marketplace and open your project. That's it: it auto-detects the database. To connect to something else, run The Nothing: Set Private Data Source from the Command Palette; the connection goes into VS Code's encrypted secret storage, never settings.json.

Claude Desktop

Download the-nothing-2.0.0.mcpb from the latest release and double-click it. Claude Desktop asks for the data source once and stores it as a sensitive setting. (Claude Desktop has no project folder, so this is the one place you paste a connection string.)

Cursor, Windsurf, Claude Code and everything else

Node.js 18+ is the only requirement.

json
{  "mcpServers": {    "the-nothing": {      "command": "npx",      "args": ["-y", "the-nothing-mcp"]    }  }}

If your editor starts MCP servers in the project folder, that's all; it auto-detects. Otherwise add "env": { "THE_NOTHING_DB": "postgres://readonly:password@localhost:5432/shop" }.

ClientWhere it goes
Cursor.cursor/mcp.json (project) or ~/.cursor/mcp.json (global)
Windsurf~/.codeium/windsurf/mcp_config.json
Claude Codeclaude mcp add the-nothing -- npx -y the-nothing-mcp (run in your project)
Claude Desktop (manual)Settings → Developer → Edit Config; add env with THE_NOTHING_DB
Gemini CLI~/.gemini/settings.json
Cline / Roo Code / Kilo CodeMCP Servers → Configure → cline_mcp_settings.json
Zedsettings.json under context_servers
JetBrains AI Assistant / JunieSettings → Tools → AI Assistant → MCP → Add
Continue, LM Studio, Goose, and othersTheir MCP settings; same command and args

VS Code without the extension: .vscode/mcp.json

json
{ "servers": { "the-nothing": { "type": "stdio", "command": "npx", "args": ["-y", "the-nothing-mcp"] } } }

Visual Studio 2022 (17.14+) / 2026: <SolutionDir>\.mcp.json

json
{ "servers": { "the-nothing": { "type": "stdio", "command": "cmd", "args": ["/c", "npx", "-y", "the-nothing-mcp"] } } }

OpenAI Codex CLI: ~/.codex/config.toml

toml
[mcp_servers.the-nothing]command = "npx"args = ["-y", "the-nothing-mcp"]

Remote clients (Streamable HTTP)

ChatGPT, Grok, claude.ai custom connectors and hosted agent APIs reach MCP servers over HTTPS:

bash
THE_NOTHING_DB=postgres://… THE_NOTHING_HTTP_TOKEN=change-me npx -y the-nothing-mcp --http --port 3000

Clients send Authorization: Bearer <token>. With a data source, web mode refuses to start on a public address without a token, unless you set THE_NOTHING_ALLOW_PUBLIC_DATA=1 because a proxy in front already authenticates.

Configuration

All optional.

VariablePurpose
THE_NOTHING_DBConnection string or dataset path. Overrides auto-detection.
THE_NOTHING_AUTODETECToff to disable auto-detection.
THE_NOTHING_VIEWSPath to your views file (or the JSON itself).
THE_NOTHING_MAX_ROWSRow cap per view. Default 50, max 1000.
THE_NOTHING_VIEW_TOOLoff for zero tools (attach-only).
THE_NOTHING_SCHEMAoff to hide the schema.

What the AI sees

With a databaseWithout one
Tool read_view (schema + approved views)Tools nothing, pass_through, search, fetch: all deliberately do nothing
Resources nothing://schema, nothing://views/<name>Resource nothing://void
Prompt less-is-morePrompt less-is-more

When less is more

  • Private by design: the AI learns your data's shape, not its contents.
  • Memory and context over live queries: curated views you build once and reuse, instead of the AI re-querying on every turn.
  • Keep agents away from production data: the AI can't query, browse or write, by construction.
  • Fast: one tool, small answers, fewer tokens and round trips.
  • Prototype before the database exists: the seam works with nothing behind it; add a source later and nothing on the AI side changes.

Development

bash
npm installnpm test               # tools, transports, SQLite, CSV, JSONL, auto-detection, credential redaction, web-mode safetynpm run test:pg        # plus a real, temporary Postgres servernpm run build:vscode   # bundles the server into the VS Code extensionnpm run build:mcpb     # builds the Claude Desktop extension

See PUBLISHING.md for releasing.

FAQ

Is it really private? The connection and credentials stay in the server process on your machine. The AI only sees what read_view returns: structure and row counts, plus views you approved. Anything it reads is sent to your AI provider as part of the conversation, so keep views to aggregates where you can.

Why not a query tool? Because a query tool lets the AI decide what data enters the context window. The Nothing makes that your decision.

Can it write to my database? No. Views are read-only, run inside read-only or rolled-back transactions, and you should connect with a read-only account anyway.

Does it still do nothing? With no database, yes, exactly as in 1.x.

License

MIT

mcp-name: io.github.Meador793/the-nothing

...

Source: README.md at commit 6fcaf19

Tools

4

nothing

Do Nothing

Deliberately does nothing and returns '...'. Use it to acknowledge a step that needs no action, or as a placeholder where a real database/dataset operation may live someday.

Parametersanything

pass_through

Pass Through

Returns the payload exactly as received (identity). This is Mr. Decoupler's seam: route data operations through it today, swap in a real implementation later without changing the AI-facing contract.

Parameterspayloadrequiredoperation

fetch

Fetch (Nothing)

Fetches nothing. Returns an empty document for any id, because nothing is stored here.

Parametersidrequired

Version history

2
  1. v2.0.0LatestNov 5, 2026
  2. v1.0.0Oct 25, 2026

Score

90% 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
  • 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 listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts