Backenly

io.github.backenly由 GitHub 账号 backenly 发布v0.4.0更新于 Oct 24, 2026

Postgres backend your coding agent builds over MCP; destructive actions wait for a person.

已验证Streamable HTTP可网页运行数据库

概览

AI 生成的概览

Backenly 是远程或本地运行的 MCP 服务器,让编码助手通过自然语言创建和管理 Postgres 后端,破坏性操作须经人工批准。

可以做什么
用自然语言提出需求,由 Backenly 规划并执行后端变更,再返回摘要。读取后端状态、数据表结构、REST 端点、RLS、指标与错误,并执行只读 SQL 查询。应用数据库结构迁移、插入或更新数据行,以及设置行级安全规则。管理认证、存储、函数、实时、集成、监控、Webhook、部署与预览分支等能力。轮询已升级的破坏性请求,等待人工批准。
适用场景
适合让编码代理直接在同一 Postgres 后端上创建和调整数据表、RLS、API 与部署,而不必手动切换控制台。也适合需要只读查询与结构查看、同时希望破坏性操作仍由人工批准的团队。
运行要求
需要 Backenly 项目与范围限定的 MCP 密钥(BACKENLY_API_KEY,以 mcp_live_ 开头),可通过环境变量或安装程序写入的本地配置文件提供。本地运行需 Node.js 20 以上,并需连接 backenly.com 或自托管端点(BACKENLY_API_URL)。
安装前请注意
密钥具有项目写入权限,泄露后可修改后端;请勿放入应用代码或环境,仅供代理使用,并可随时撤销。数据行写入工具以所有者级别执行,会绕过用户级 RLS 与触发器。部署、回滚、删除与撤销密钥等高风险操作会进入人工审核队列,代理无法自行批准。所有变更会写入审计日志。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Backenly,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.backenly%2Fbackenly/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "backenly": {
      "type": "http",
      "url": "https://backenly.com/api/mcp"
    }
  }
}

README

@backenly/mcp-server

Plug Backenly into Claude Code, Cursor, Codex, Cline, and Claude Desktop over the Model Context Protocol.

sh
claude mcp add backenly -- npx -y @backenly/mcp-server \  --project <projectId> --key mcp_live_...

Run it before you open the agent: hosts read MCP config when a conversation starts, so the tools appear in the next conversation, not the one that ran the command. An agent that installs it mid-conversation keeps working through npx -y @backenly/cli@latest call <tool>, which reaches the same tools with the same key.

What you get

Twenty-three advertised tools, not sixty. The catalog is an allowlist admitted on one rule — is there exactly one tool here that answers a given request? — because tool-selection accuracy degrades with catalog size and models misfire hardest between similarly-named tools. Everything else is reached through backend_chat. Unlisted tools stay dispatchable, so clients pinned to an older manifest keep working.

backend_chat — say what you want

> Add comments and likes to my posts table

The host LLM hands the request to Backenly's brain. Brain plans, executes, and returns a summary. The host LLM never has to learn a vocabulary.

Read

  • read_backend_state — the single read-state door. Call with no arguments for the grounding overview; pass section (schema, tables, apis, rls, metrics, errors, deploy, usage, autonomy, …) to drill in. It replaces the ~26 list_* / get_* tools, which remain dispatchable.
  • run_query — standard read-only SQL over your workspace schema: joins, GROUP BY, aggregates, window functions, CTEs, EXPLAIN. Runs as a SELECT-only Postgres role scoped to the project, so isolation is a database grant rather than a parser. Secret-bearing columns come back redacted.
  • get_table_schema — everything about one table: columns, foreign keys, indexes, CHECK constraints with their permitted values, and live RLS policies. Read it before any write.
  • generate_types — TypeScript types (or a typed client, or OpenAPI) from the live catalog, with a schemaHash for drift checks.
  • fetch_docs — pull current Backenly docs instead of guessing.
  • check_approval — poll an escalated destructive request.

Write

  • apply_migration — ordinary PostgreSQL DDL (CREATE TABLE, ALTER TABLE, CREATE INDEX), translated statement by statement into governed actions. All-or-nothing; anything it cannot govern is refused with the tool to use instead. Not raw SQL execution.
  • db_insert / db_update / db_delete — row writes. Owner-level: validates shapes but bypasses end-user RLS and triggers, so treat them as maintenance tools.
  • set_rls — a row-level security predicate installed verbatim and read back from pg_policies.

Capabilities

One tool per dashboard section, each with an action: auth, storage, functions, realtime, integrations, monitoring, autonomy, webhooks, deploy, connect, plus branch (preview branches). Each tool's description lists its actions and their arguments. Destructive and high-risk actions (deploy, rollback, deletes, revoking a key) park the exact call for a human and run it verbatim once approved; poll check_approval. REST endpoints need no generation step, and older tool names such as enable_auth or adopt_external_schema stay callable by name without being advertised.

Resources (11)

Browse live state without spending a tool call:

backenly://state         Full backend statebackenly://tables        Table list + countsbackenly://apis          REST endpointsbackenly://buckets       Storage bucketsbackenly://triggers      Event triggersbackenly://rls           RLS policiesbackenly://functions     AI functionsbackenly://deploy        Deploy statusbackenly://metrics       Performance metricsbackenly://errors        Recent errorsbackenly://usage         Plan usage

Setup

Generate a scoped key from backenly.com → your project → Connect → Agents. It starts with mcp_live_, only works on MCP routes, and is revocable from the same page.

Claude Code / Codex — one command:

sh
claude mcp add backenly -- npx -y @backenly/mcp-server \  --project <projectId> --key mcp_live_...

Cursor (~/.cursor/mcp.json, not the project's), Cline (cline_mcp_settings.json), Claude Desktop — same server block:

json
{  "mcpServers": {    "backenly": {      "command": "npx",      "args": [        "-y", "@backenly/mcp-server",        "--project", "<projectId>",        "--key", "mcp_live_..."      ]    }  }}

Prefer to keep the key out of a file you might commit? Run the installer once — it verifies the key, writes ~/.backenly/mcp.json (mode 0600), and prints config snippets. The host block then needs no key at all.

sh
npx @backenly/mcp-server init

Open a new conversation in your host. Backenly appears as a tool surface.

The mcp_live_ key is for your agent only. Backenly's runtime API refuses it, so it never goes in app code or an app's environment: the app gets its own key from connect { action: "create_api_key" }, or Settings → API keys.

How it works

Host LLM (Claude Code, Cursor, ...)   │ stdio JSON-RPC   ▼@backenly/mcp-server (this package)   │ HTTPS + x-api-key + x-correlation-id   ▼backenly.com — brain, executor, runtime APIs

The package contains zero business logic — it's a thin protocol adapter. Tool definitions, billing, rate limiting, and audit logging all live server-side. New brain tools appear in your host immediately without npm update.

Protocol

Built on the official MCP TypeScript SDK (v2). It serves both protocol eras from one server: hosts that open with initialize (revisions 2024-11-05 through 2025-11-25) and hosts that speak 2026-07-28 (server/discover, per-request _meta). Requires Node.js 20 or newer.

Every tool result carries the server's JSON body twice: as structuredContent, for hosts that read fields (ok, code, hint, applied, approval, …), and as text, for hosts that only read text. A failure adds a second text block saying what its fields mean for the next step. Fields the server did not send stay absent.

What this package serves (tools, instructions, resources, result shapes) is what the remote endpoint (https://backenly.com/api/mcp) serves, and CI compares the two call for call.

Reliability

  • Retry — network errors and 502/503/504 retry with exponential backoff (250ms / 1s / 3s + jitter), honoring Retry-After.
  • Boot health check — /api/mcp/health runs before manifest fetch so auth failures surface in <1s.
  • Graceful shutdown — SIGINT/SIGTERM close the transport cleanly so MCP hosts don't see corrupt frames.
  • Correlation IDs — every request carries x-correlation-id for distributed tracing.

Security

  • MCP keys (mcp_live_…) are scope-gated — /api/mcp/* rejects runtime SDK keys. A leaked SDK key cannot be replayed against MCP to drop tables.
  • Destructive tools are not exposed. drop_table, delete_bucket, truncate_table, etc. are never executed from MCP. Ask for one via backend_chat and it parks in the project's Review Queue and returns an approval id; a human decides in the dashboard and you poll check_approval until it is executed or rejected. The agent cannot self-approve.
  • Per-key rate limit — sliding-window using ApiKey.rateLimit / rateLimitWindow. 429 includes Retry-After + X-RateLimit-* headers.
  • Audit log — every mutation through MCP writes an AuditLog row on your project timeline.
  • Local config is written with 0600 permissions (user-only readable).
  • Revoke any key, or disconnect an agent you signed in from the browser, anytime from your project's Connect → Agents page.

Environment

VariableDefaultNotes
BACKENLY_API_KEYfrom ~/.backenly/mcp.jsonOverride key (CI / multiple projects).
BACKENLY_API_URLhttps://backenly.comSelf-hosted Backenly endpoint.

CLI

sh
npx @backenly/mcp-server init              # interactive setupnpx @backenly/mcp-server init -k <key>     # setup with API key flagnpx @backenly/mcp-server                   # run as MCP server (stdio)npx @backenly/mcp-server health            # verify the configured keynpx @backenly/mcp-server versionnpx @backenly/mcp-server help

Troubleshooting

"This key has scope='runtime'" — you pasted your SDK anon key. Generate a separate MCP key from the project's Connect → Agents page.

"Could not reach Backenly" — check your internet or set BACKENLY_API_URL if self-hosting.

Host shows "MCP server crashed" — run npx @backenly/mcp-server health to verify the key. Check ~/.backenly/mcp.json exists and has mode 0600.

Rate-limited (429) — your MCP key hit its per-minute cap. Default is 600/min; raise it from the dashboard or wait until X-RateLimit-Reset.

License

MIT — see LICENSE.

来源:packages/mcp-server/README.md,提交 08671c7

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

1
  1. v0.4.0最新Oct 24, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分