Skip to main content
Glama

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.

Related MCP server: MCP API Tool Demo

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

Guarantee

How

One tool, no SQL

read_view accepts only a name from a fixed list: schema or a view you approved.

No records by default

The schema is table names, columns and row counts. Rows appear only in views you wrote.

Read-only

Views 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.

Bounded

Every view is row-capped (default 50, max 1000).

Credentials stay put

The connection string never appears in tool output, instructions or error messages.

Strictest mode

THE_NOTHING_VIEW_TOOL=off removes the tool entirely: zero tools, and data enters the chat only when you attach a resource yourself.

Supported sources

Connection

Source

postgres://user:pass@host:5432/db

PostgreSQL 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, .jsonl

Datasets, 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):

{
  "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.

{
  "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" }.

Client

Where it goes

Cursor

.cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

Windsurf

~/.codeium/windsurf/mcp_config.json

Claude Code

claude 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 Code

MCP Servers → Configure → cline_mcp_settings.json

Zed

settings.json under context_servers

JetBrains AI Assistant / Junie

Settings → Tools → AI Assistant → MCP → Add

Continue, LM Studio, Goose, and others

Their MCP settings; same command and args

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

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

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

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

OpenAI Codex CLI: ~/.codex/config.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:

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.

Variable

Purpose

THE_NOTHING_DB

Connection string or dataset path. Overrides auto-detection.

THE_NOTHING_AUTODETECT

off to disable auto-detection.

THE_NOTHING_VIEWS

Path to your views file (or the JSON itself).

THE_NOTHING_MAX_ROWS

Row cap per view. Default 50, max 1000.

THE_NOTHING_VIEW_TOOL

off for zero tools (attach-only).

THE_NOTHING_SCHEMA

off to hide the schema.

What the AI sees

With a database

Without 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-more

Prompt 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

npm install
npm test               # tools, transports, SQLite, CSV, JSONL, auto-detection, credential redaction, web-mode safety
npm run test:pg        # plus a real, temporary Postgres server
npm run build:vscode   # bundles the server into the VS Code extension
npm 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

Available Tools

4 tools
fetchFetch (Nothing)A
Read-onlyIdempotent

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

Inputs: id (required).

nothingDo NothingA
Read-onlyIdempotent

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.

Inputs: anything.

pass_throughPass ThroughB
Read-onlyIdempotent

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.

Inputs: payload (required), operation.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 4 tools

    Disambiguation4/5

    The four tools have distinct behaviors: no-op acknowledgement, empty search, empty fetch, and identity pass-through. Search and fetch both return empty results, but their intended operations are different enough for an agent to choose correctly.

    Naming Consistency3/5

    Names are readable and mostly snake_case, but they mix noun and verb conventions: 'nothing' is a noun, 'search' and 'fetch' are verbs, and 'pass_through' is a verb phrase. The inconsistency is minor but noticeable.

    Tool Count5/5

    Four tools is well-scoped for a deliberately minimal placeholder server. Each tool represents a distinct no-op or seam behavior without unnecessary surface area.

    Completeness4/5

    For a no-op/decoupler server, the surface covers acknowledgement, search, fetch, and identity routing. It lacks explicit write/update/delete placeholders, but those may be intentionally out of scope since nothing is stored.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Hosted MCP endpoint that returns realistic fake data for prototyping agents. Paste one URL into Claude Code, Cursor, or Claude Desktop — 12 pre-built tools covering users, products, orders, events, email, and knowledge base search. No signup, no config, no auth. Built for developers who want to prototype agent workflows before wiring up a real backend.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides an OAuth-protected, scoped, and audited MCP server that lets AI assistants safely query business data through a fixed set of tools without direct database access.
      1
      MIT