Supabase
MCP server for interacting with the Supabase platform
作者提供的说明(英文原文)
Offline, deterministic cause and fix for Node, npm, Next.js, CORS and Postgres URL errors.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"dev-error-explainers": {
"command": "npx",
"args": [
"-y",
"dev-error-explainers",
"mcp"
]
}
}
}在终端中运行这条命令
claude mcp add dev-error-explainers -- npx -y dev-error-explainers mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"dev-error-explainers": {
"command": "npx",
"args": [
"-y",
"dev-error-explainers",
"mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"dev-error-explainers": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"dev-error-explainers",
"mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 mahdibrr 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.1)于29天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Supabase, MongoDB MCP Server, Elasticsearch MCP Server
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP server for interacting with the Supabase platform
MongoDB Model Context Protocol Server
MCP server for interacting with Elasticsearch
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Paste an error. Get a deterministic explanation.
Version 0.4.0 adds an explicit environment audit and native assistant setup. Public database helpers now return masked metadata and URL templates; see the migration notes before upgrading from 0.2.x. The 1.0 verification record remains incomplete.
No LLM · no API · no network · no telemetry
npm run build 2>&1 | npx dev-error-explainers
npm install dev-error-explainers
import { detect, explainEsmCjs } from 'dev-error-explainers';
const error = 'Error [ERR_REQUIRE_ESM]: require() of ES Module /app/node_modules/node-fetch/src/index.js from /app/index.js not supported.'; console.log(detect(error)); const { findings } = explainEsmCjs({ error, nodeVersion: '20.10.0' }); console.log(findings[0].title, findings[0].fixes.map((f) => f.title));
Output:
[ 'esm-cjs-explainer' ]
ERR_REQUIRE_ESM — require() of an ES module [ 'Upgrade Node.js (you are on 20.10.0)', 'Use dynamic import() from CommonJS', 'Convert the calling file to ESM' ]
Eight small, pure JavaScript modules with zero runtime dependencies: seven error explainers and one explicit environment-file audit. The seven explainers recognise error text a developer pastes (from the browser console, npm, next build, curl -I, a Node.js stack trace…), explains *why* it happens, and returns concrete fixes with a link to the primary source where one exists (MDN, the Node.js docs, the npm docs, the PostgreSQL docs, the Supabase docs…). The same engine runs as a library, a CLI, a GitHub Action and an MCP server.
Secrets: error diagnosis in the CLI, Action and MCP server passes the input through redact() before it is analysed, with one exception in error diagnosis: the DATABASE_URL doctor reads the raw postgres:// line (a password's exact characters decide the diagnosis), and never prints that password. Library diagnostics also mask recognised credentials in build evidence and database query components. The separate auditEnv / audit_env audit inspects raw values locally to classify keys, but returns no input keys or values. Public database parsing helpers now return masked metadata; correctedWithPassword is a deprecated alias returning masked corrections. See the 0.3 migration and confidentiality limits and what redaction does not catch.
Six of them power the free tools on [iloveblogs.blog/tools](https://www.iloveblogs.blog/tools), where you can try each one in the browser.
| Module | Main export (dev-error-explainers) | What it explains | Try it live |
|---|---|---|---|
cors-error-explainer | diagnoseCors | Chrome / Firefox / Safari "blocked by CORS policy" errors: missing or wrong Access-Control-Allow-* headers, preflight failures, credentials, mixed content — with a fix for your stack | CORS Error Explainer |
esm-cjs-explainer | explainEsmCjs | ERR_REQUIRE_ESM, "Cannot use import statement outside a module", "exports is not defined in ES module scope", ERR_UNKNOWN_FILE_EXTENSION ".ts", ERR_MODULE_NOT_FOUND, ERR_PACKAGE_PATH_NOT_EXPORTED — aware of your Node.js version | ESM/CJS Error Explainer |
npm-eresolve-explainer | analyseEresolveLog | npm ERR! ERESOLVE peer-dependency conflicts: who asks for which range, what is installed, and why they do not intersect | npm ERESOLVE Explainer |
chunk-cache-explainer | diagnoseChunkCache | ChunkLoadError / "Loading chunk failed" after a deploy: reads your response headers and finds the stale HTML, the CDN cache hit or the SPA fallback | ChunkLoadError Cache Checker |
database-url-doctor | diagnoseDatabaseUrl | Postgres / Supabase connection strings: pooler vs direct, port 5432 vs 6543, pgbouncer, SSL, unencoded password characters — with a corrected URL for Prisma, Drizzle, pg or psql | DATABASE_URL Doctor |
build-error-decoder | decodeBuildError | Failing next build / next dev output: Suspense bailouts, dynamic server usage, window is not defined, hydration mismatches, module resolution, heap out of memory, EADDRINUSE… | Next.js Build Error Decoder |
next-env-checker | auditEnv | Explicit audit of one Next.js .env file: public secret indicators, duplicate assignments, invalid lines and production loopback URLs. Values never returned | Env audit contract |
database-connection-explainer | explainDatabaseConnection | "Can't connect to the database" from Node.js apps on PostgreSQL: ECONNREFUSED (including ::1 localhost), ETIMEDOUT, ENOTFOUND, Prisma P1000 / P1001 / P1017, password authentication failed, no pg_hba.conf entry, too many clients, self-signed certificates. Generic network codes are only diagnosed next to a Postgres signal | No browser tool yet — rules and sources |
Evidence: most findings cite the primary source they were checked against. The build-error decoder has no primary-source URL; its links point to articles on the author's site, iloveblogs.blog.
Node.js 20 or later. ES modules only.
See input/resource limits, the prospective evaluation report, and the execution record for the measured scope and gaps. npm run check:drift, npm run typecheck and npm test are release gates. The development fixture score is not independent accuracy.
Everything is available from the package root, and each module can also be imported on its own:
import { diagnose } from 'dev-error-explainers/cors-error-explainer';
const r = diagnose({ error: "Access to fetch at 'https://api.example.com/data' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.", }); r.isCorsProblem; // true r.findings; // what is wrong, why, and the source r.fix; // a fix for the detected (or guessed) stack
import {
analyseEresolveLog, diagnoseDatabaseUrl, diagnoseChunkCache, decodeBuildError, explainDatabaseConnection, } from 'dev-error-explainers';
analyseEresolveLog(npmOutput); // { detected, code, conflicts: [...] } diagnoseDatabaseUrl(process.env.DATABASE_URL, { client: 'prisma' }); // { ok, kind, findings, corrected } diagnoseChunkCache({ htmlHeaders, chunkHeaders }); // headers from curl -I decodeBuildError(nextBuildOutput); // matched rules, most severe first explainDatabaseConnection({ error: stackTrace }); // { recognised, findings, related }
detect(text)Returns the names of the modules that recognise text, in a fixed order, or []. Each module is asked through its own recogniser — detect adds no heuristics of its own. Note that chunk-cache-explainer reads HTTP response headers (the output of curl -I), not the ChunkLoadError message itself; the message alone is recognised by build-error-decoder.
import { auditEnv } from 'dev-error-explainers';
const audit = auditEnv(envText, { environment: 'production' }); // { version: '0.1', status, assignments, matched, redactions, results }
npx dev-error-explainers --only env --environment production --json .env.local
This mode never prints file contents or assignment values. The MCP equivalent is audit_env({ env: envText, environment: "production" }). Error auto-diagnosis and the GitHub Action do not automatically treat logs as environment files. An audit with no findings does not certify that the configuration is safe. See the parsing scope, rules and limits.
Every module has its own result shape. diagnose(text) maps all of them onto one shape with stable rule ids, after redacting the input — the shape the CLI prints with --json, the GitHub Action renders and the MCP server returns:
import { diagnose } from 'dev-error-explainers'; // or 'dev-error-explainers/contract'
diagnose('FATAL: password authentication failed for user "andym"'); // { version: '0.1', matched: true, redactions: 0, // results: [{ rule: 'database-connection.password-auth-failed', family: 'database-connection', // severity: 'critical', confidence: 'high', title, cause, fixes, evidence, module }] }
Unknown input gives { matched: false, results: [] } — never a closest guess. The shape, the full rule table, the confidence semantics and the redaction limits are in docs/CONTRACT.md. A public corpus of real pasted errors with their expected results lives in fixtures/, each case with its source. redact(text) is exported too (dev-error-explainers/redact).
Pipe a failing command into it, or pass a log file. Nothing is sent anywhere.
npm run build 2>&1 | npx dev-error-explainers
npx dev-error-explainers < error.log npx dev-error-explainers --text "Error [ERR_REQUIRE_ESM]: require() of ES Module …" --node 18.17.0 npx dev-error-explainers --json < error.log # the contract result (docs/CONTRACT.md)
Flags: --only cors|esm|eresolve|build|database-url|database-connection|chunk-cache|env, --json, --node , --client prisma|drizzle|pg|psql, --html-headers --chunk-headers , --help, --version. npx dev-error-explainers mcp starts the MCP server.
Exit codes: 0 an error was recognised, 2 nothing recognised (nothing is guessed), 64 usage error. A connection string is always printed with its password masked.
When a step fails, the Action reads the log you saved from it and writes the cause and the fix to the job summary, with annotations on the file and line when the log names a file in your checkout. No network, no LLM, no token.
- name: Build
id: build continue-on-error: true # let the explain step run… shell: bash run: | set -o pipefail npm run build 2>&1 | tee build.log
只显示了开头部分;其余内容请在仓库中阅读