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 分