The Nothing

io.github.Meador793由 GitHub 帳號 Meador793 發布v2.0.0更新於 Nov 5, 2026

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

已驗證STDIO僅桌面資料庫安全與監控

概覽

AI 產生的概覽

一個刻意極簡的唯讀資料庫接縫:只暴露資料表結構與事先核准的檢視,未設定資料來源時則完全不做事。

可以做什麼
  • 讀取已連線資料庫的結構:資料表名稱、欄位與列數,不傳回紀錄
  • 讀取你在 JSON 檔中事先核准、有列數上限的檢視,助理無法自行撰寫 SQL
  • 以私有方式連線 PostgreSQL、MySQL/MariaDB、SQL Server、SQLite,或 CSV/TSV/JSONL 資料集,可在專案資料夾內自動偵測
  • 未設定資料來源時退化為佔位工具(nothing、pass_through、search、fetch),傳回空結果或原樣回傳輸入
  • 可選擇完全移除檢視工具,讓資料只能透過你手動附加的資源進入對話
適用情境
適合希望助理了解資料庫結構並查看少量精選彙總結果、但不給它查詢權限的情境;也適合在真實資料來源尚未就緒時先建立面向 AI 的資料接縫。適合想事先決定哪些數字能進入模型的團隊。
執行需求
以本機 stdio 程序執行;npm 套件需要 Node.js 18+,或使用 Claude Desktop 安裝檔。資料來源為選用:將 THE_NOTHING_DB 設為連線字串或資料集路徑,或讓它自動偵測 DATABASE_URL、.env 中的設定,以及專案資料夾內的 SQLite/CSV/TSV/JSONL 檔案。選用設定包括 THE_NOTHING_VIEWS、THE_NOTHING_MAX_ROWS、THE_NOTHING_AUTODETECT 與 THE_NOTHING_VIEW_TOOL。
安裝前請注意
THE_NOTHING_DB 含有帶憑證的資料庫連線字串,應放在密鑰儲存或環境變數中,不要寫進共用設定。檢視傳回的任何內容都會隨對話送給 AI 服務供應商,因此盡量使用彙總而非原始列。建議同時使用唯讀資料庫帳號作為第二道防線。README 另提到帶 Bearer 權杖的 HTTP 模式與公開位址覆寫開關,但該模式不屬於此 stdio 套件。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 The Nothing,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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

...

來源:README.md,提交 6fcaf19

工具

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.

輸入參數anything

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.

輸入參數payload必填operation

fetch

Fetch (Nothing)

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

輸入參數id必填

版本歷史

2
  1. v2.0.0最新Nov 5, 2026
  2. v1.0.0Oct 25, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分