Skip to content

Best backend for Claude Code: how to choose one

Claude Code can create tables, run migrations and delete rows through a backend’s MCP server, and the backend decides what happens when one of those calls is wrong. This guide sets out what to check, what Supabase, Neon, Convex, Appwrite, Firebase, InsForge and Backenly document today, and when to pick something other than Backenly.

Updated October 24, 2026Written by Backenly, one of the seven optionsEvery row links its source

What to check

Connected over MCP, Claude Code calls a backend’s tools itself: it reads the schema, writes a migration and runs it, often several calls in one turn. What matters most is what happens when one of those calls is wrong. These are the nine questions this guide asks of each backend, and you can ask them of any other.

  • How the agent connects. An official MCP server is maintained by the vendor with the product. A hosted one needs nothing installed; a local one runs on your machine with the credentials it finds there.
  • A read-only mode. Most of an agent’s calls only read. A read-only connection, enforced by the server or by database grants rather than by instructions, means a misread request cannot write.
  • What happens to DROP and delete. One call can drop a table. Check whether the server refuses it, asks a person, or runs it, and whether your client’s own prompt is the only thing in the way.
  • Whether schema changes are checked. A migration can run without an error and still break the app. Check whether the platform tests the result, or whether that is left to you and the agent.
  • Restore points and branches. When a change goes wrong: how far back you can go, what a restore does to data written since, and what the free plan includes.
  • What happens to problems after launch. Most problems show up after the agent’s session ends: a slow query, a missing index, a table open to everyone. Check whether the platform only reports them, or also fixes the safe ones itself.
  • The data model. Tables or documents decide how the agent models your data, and it is the choice that is hardest to undo later.
  • Self-hosting and licence. Whether you can run the backend yourself, and under which licence, if the hosted service stops suiting you.
  • The free tier. What you can build before paying, and the limits you reach first.

Connecting the agent

All seven have an official MCP server. Where it runs decides whose credentials it acts with, and a read-only mode decides whether a question about production can turn into a write.

How the agent connects

How the agent connects: what each backend documents, and the page each row restates
BackendWhat it documents
SupabaseMCP server docsOfficial MCP server, hosted at mcp.supabase.com/mcp. A local one runs with the Supabase CLI for local development.
NeonMCP server docsOfficial MCP server, hosted at mcp.neon.tech/mcp. The local stdio package is deprecated.
ConvexMCP server docsOfficial MCP server, run locally with npx convex mcp start. It connects to your development deployment by default.
AppwriteMCP server docsSelf-hosted MCP docsOfficial MCP server, hosted at mcp.appwrite.io for Appwrite Cloud, with an OAuth sign-in. Self-hosted Appwrite uses a local server over stdio instead.
FirebaseMCP server docsOfficial MCP server in firebase-tools, run locally over stdio. It acts with the credentials your Firebase CLI is signed in with.
InsForgeMCP setup docsCLI docsOfficial MCP server for Claude Code, Cursor, Codex and other clients. Write and admin actions need your admin API key. A CLI, @insforge/cli, gives the agent the schema, config, deploys and diagnostics as JSON.
Backenlyapp/mcp/data.tsOfficial MCP server, remote at backenly.com/api/mcp or local over stdio with @backenly/mcp-server. It operates a Backenly project, on Cloud or self-hosted, not a Postgres database Backenly does not run.

A read-only mode

A read-only mode: what each backend documents, and the page each row restates
BackendWhat it documents
SupabaseMCP server docsYes. read_only=true runs every query as a read-only Postgres user, and project_ref scopes the server to one project.
NeonMCP server docsYes. readonly=true keeps SELECT queries and schema inspection and turns writes off. roleName makes the SQL tools log in as a Postgres role you choose.
ConvexMCP server docsOn a production deployment, by default, only read-only tools that expose no personal data. --disable-tools turns off any tool.
AppwriteMCP server docsSelf-hosted MCP docsNot documented. The local server for self-hosted Appwrite connects with an API key you create with the scopes it needs.
FirebaseMCP server docsNot documented. --only limits the tools to the feature groups you name; the core tools are always on.
InsForgeMCP setup docsNot documented. Write and admin actions need your admin API key.
Backenlyapp/mcp/data.tsYes. A read-only key or connection sees 16 of the 23 tools, a write called anyway is refused with READ_ONLY_KEY, and an agent cannot upgrade its own key.

Two of the vendors also advise against connecting an agent to production at all. Neon recommends its MCP server for development and testing only, not production environments (MCP server docs). Supabase says to connect a production project only when the task needs production evidence, and to scope the server and turn on read-only mode first (MCP server docs).

When the agent changes something

Three questions: what stops a destructive call, who checks a schema change after it runs, and how you get back when one goes wrong.

What happens to DROP and delete

What happens to DROP and delete: what each backend documents, and the page each row restates
BackendWhat it documents
SupabaseMCP server docsexecute_sql and apply_migration ask for confirmation when they detect destructive SQL, if your client supports it. The docs call this a guardrail that may not catch every destructive operation.
NeonMCP server docsNot documented. The docs say to review and authorize every action the LLM requests.
ConvexMCP server docsThe write tools (run, envSet, envRemove) are blocked on production unless the server starts with --dangerously-enable-production-deployments. On development deployments every tool is allowed.
AppwriteMCP server docsNot documented.
FirebaseMCP server docsNot documented, beyond a note that the tools act “with your approval”. They include firestore_delete_document and firestore_delete_database.
InsForgeMCP setup docsrun-raw-sql runs raw SQL in strict mode with the admin key, with system tables and auth.users blocked. The tools include delete-bucket and delete-function. A step that waits for a person: Not documented.
Backenlyapp/mcp/data.tsapply_migration refuses DROP with DESTRUCTIVE_REFUSED. Dropping a table or column, deleting files and revoking keys wait for a person to approve. Row inserts, updates and deletes run as normal.

As Supabase’s docs note, most MCP clients also ask you to accept each tool call before it runs (MCP server docs). The rows above describe what each server does on its own, whatever the client is set to allow.

Whether schema changes are checked

Whether schema changes are checked: what each backend documents, and the page each row restates
BackendWhat it documents
SupabaseMCP server docsNot documented as a check after a migration. get_advisors returns security and performance advisors when the agent calls it.
NeonMCP server repositoryprepare_database_migration applies a migration to a temporary branch so it can be tested; complete_database_migration then applies it to the main branch.
ConvexSchemas docsThe first push after a schema change validates every existing document against it, and the push fails if any do not match. Later inserts and updates are validated too.
AppwriteDatabases docsNot documented.
FirebaseFirestore data modelFirestore is schemaless: documents in the same collection can have different fields.
InsForgeMigrations docsNot documented as a check after a change. Migrations are forward-only SQL files the CLI applies in a transaction and records only on success.
Backenlylib/changes/verify.tsBackenly checks each schema change after it runs: every reported step happened, nothing disappeared as a side effect, and row-level security was not weakened. A check that could not run leaves the change marked unverified.

Restore points and branches

Restore points and branches: what each backend documents, and the page each row restates
BackendWhat it documents
SupabaseBackups docsPricingDaily backups on Pro and above, the last 7 days on Pro; point-in-time recovery is an add-on. The project is inaccessible while a restore runs. Free includes no automatic backups, point-in-time recovery or branching.
NeonInstant restore docsPricingInstant restore returns a root branch to any point in its history window, and keeps the state before the restore as a backup branch. On Free the window is up to 6 hours or 1 GB of changes, with 10 branches per project and 1 snapshot.
ConvexBackup and restore docsBackups of table data: up to two per deployment on Free, scheduled daily or weekly on Pro. A restore wipes the existing data and replaces it with the backup’s.
AppwriteBackups docsBackups on Pro and Enterprise, with a daily backup policy on Pro. A restore creates a new database.
FirebaseFirestore backups docsFirestore PITR docsScheduled Firestore backups, kept up to 14 weeks and restored to a new database, need the Blaze plan. Point-in-time recovery keeps up to 7 days and needs billing enabled.
InsForgeBackups docsBranching docsDaily backups on paid plans, kept 7 days, and manual backups: 1 slot on Free, 5 on paid plans. A restore replaces the database: the project goes offline, data created after the backup is lost, and the restore cannot be undone. A branch is a child project with its own Postgres, auth, storage and functions, merged back with a three-way diff or reset to its starting snapshot. Two active branches per parent.
Backenlydocs/CHANGE_RECOVERY.mdapp/pricing/page.tsxapp/docs/content.tsEvery change, to the schema, auth, storage, functions, webhooks, environment variables, keys or integrations, is one entry in History. Restore it alone, or everything back to a point; data your app wrote is never rewound, and a secret never comes back. A restore point before each schema change, kept 7 days on Free and 30 on Pro; each change shows whether it can still be restored. Daily backups are kept 7 days. A restore that would affect data written since the change waits for a person, who sees the impact first. Branches, copies of the schema to try a change on first, are in beta on Backenly Cloud.

After the agent leaves

Most problems show up when no agent is connected. What differs is whether a fix waits for you or your agent to apply it, or the platform applies the safe ones itself.

What happens to problems after launch

What happens to problems after launch: what each backend documents, and the page each row restates
BackendWhat it documents
SupabaseAdvisors docsAdvisors flag health, security and performance issues. The documented fixes are SQL or settings changes you run.
NeonMonitoring docsMonitoring, query performance and logs, plus Data API Advisors that detect security and performance issues. Fixes it applies itself: Not documented.
ConvexHealth page docsThe Health page shows the failure rate and insights with suggestions to improve performance and reliability, each linking to how to resolve it. Fixes it applies itself: Not documented.
AppwriteDatabases docsNot documented.
FirebaseQuery insights docsQuery insights, in the Enterprise edition, shows query latency and reads for tuning. Fixes it applies itself: Not documented.
InsForgeDiagnostics docsAn advisor scans for security, performance and health issues and writes a remediation for each. The agent fetches the findings and applies the fix itself.
Backenlyapp/docs/content.tsChecked every minute on every plan, Free included. It applies a short list of safe, additive fixes itself, such as a missing index, verifies and records each one, and holds anything risky for a person.

The platform underneath

The last three questions decide whether the backend suits your app, not only your agent.

The data model

The data model: what each backend documents, and the page each row restates
BackendWhat it documents
SupabasePricingPostgreSQL. Every project comes with its own Postgres instance.
NeonMCP server docsPostgreSQL, organized in projects and branches.
ConvexDatabase docsA relational data model over JSON-like documents in tables, with or without a schema.
AppwriteDatabases docsTablesDB (typed columns, rows and relationships), DocumentsDB (schemaless documents), or managed PostgreSQL and MySQL on dedicated infrastructure.
FirebaseFirestore data modelSQL Connect docsCloud Firestore: documents in collections, with no tables or rows. SQL Connect, formerly Data Connect, is a separate PostgreSQL service on Cloud SQL.
InsForgeProducts docsPostgreSQL for every project, with every table served as a typed REST and SDK surface.
Backenlyapp/docs/content.tsPostgreSQL. Each project has its own schema, and every table is served as a REST API.

Self-hosting and licence

Self-hosting and licence: what each backend documents, and the page each row restates
BackendWhat it documents
SupabaseRepositorySelf-hosting docsApache-2.0. Self-hosting with Docker is documented. Branching, managed backups and point-in-time recovery are not available self-hosted.
NeonRepositoryApache-2.0. Self-hosting: Not documented. The README covers running Neon on a workstation for small experiments.
ConvexSelf-hosting docsSelf-hosting is documented and runs the same code as the cloud service. The FSL Apache 2.0 licence allows almost anything Apache-2.0 does except a product that competes with Convex Cloud, and code becomes Apache-2.0 two years after it is written.
AppwriteRepositoryBSD-3-Clause. Self-hosting with Docker is documented.
FirebaseEmulator Suite docsfirebase-tools repositoryNot documented. The docs say not to use the local emulators as self-hosted versions of Firebase services. firebase-tools, which contains the MCP server, is MIT.
InsForgeRepositorySelf-hosting docsApache-2.0. Self-hosting with Docker Compose is documented.
Backenlyapp/pricing/page.tsxpackages/The platform is Apache-2.0 and free to self-host. The SDK, CLI and MCP server are MIT.

The free tier

The free tier: what each backend documents, and the page each row restates
BackendWhat it documents
SupabasePricing$0: 2 active projects and a 500 MB database per project. Free projects are paused after a week of inactivity.
NeonPricing$0 with no credit card: 100 projects, with 1 GB of storage and 100 CU-hours of compute a month per project.
ConvexLimits docsHard caps: 0.5 GB of database storage and 1,000,000 function calls a month.
AppwriteFree plan docsOne organization and 2 projects per account, sharing the plan’s resources.
FirebasePricingThe Spark plan needs no payment method. Firestore is free up to 1 GiB stored, 50,000 reads and 20,000 writes a day.
InsForgePricing$0: a 500 MB database, 1 GB of file storage and 50,000 monthly active users. Free projects are paused after a week of inactivity.
Backenlyapp/pricing/page.tsx$0 with no credit card: 1 live project and a 512 MB Postgres database.

Prices and limits change often. The pricing pages linked above have the current figures.

When to pick something else

Backenly is the wrong choice for some projects, starting with any where the agent has to work on a database you already run elsewhere: Backenly’s MCP server only operates a Backenly project. These are the other clear cases.

  • You already run a Supabase project. Supabase’s MCP server works on it as it is, with project scoping and a read-only mode, and its tools also cover Edge Functions and account management (MCP server docs). Moving to Backenly means a pg_dump of the data and rewriting your row-level security policies, and there is no migration service to do it for you.
  • You want point-in-time restore and many free databases on plain Postgres. Neon restores a branch to any point in its history window and keeps the state before the restore as a branch you can go back to (Instant restore docs). Its Free plan includes 100 projects (Pricing). Backenly’s Free plan has one live project.
  • Your data is documents, and you want writes checked against a schema. Convex validates documents against your schema, and a push that changes the schema fails if existing documents do not match it (Schemas docs). Its MCP server keeps an agent from writing to a production deployment unless you start it with a flag (MCP server docs). Backenly keeps your data in PostgreSQL tables.
  • Your app must keep working offline on a phone. Firestore caches the data an app is using, so reads, writes and queries keep working offline and sync when the device reconnects. This is on by default on Android and Apple platforms (Offline data docs). Backenly has no offline layer.
  • You want a model gateway, payments and site hosting in the same platform as the backend. InsForge ships ten products behind one MCP server and SDK, among them sites, a model gateway, analytics and payments (Products docs). Its branches copy the whole backend, auth, storage and functions included (Branching docs). Backenly’s branches cover data and the REST API; auth, functions and storage stay on main.
  • You want one platform to host your web app as well. Appwrite Sites deploys web apps from source control, each with its own URL, custom domains and environment variables (Sites docs). Backenly publishes the backend; your frontend is hosted wherever you choose.

How this was checked

Backenly wrote this guide, and Backenly is one of the seven options in it. So every row about another product restates that vendor’s own documentation, pricing page or repository, read on October 24, 2026, and links it. Nothing comes from reviews, benchmarks or memory, and nothing is ranked: which backend suits you depends on which rows matter for your app.

“Not documented” means the linked pages do not say. It does not mean the product cannot do it, so check with the vendor before you rule something out.

Backenly’s rows link the code and docs in its public repository, and a test keeps them in line with that code: the tool counts, the refusal codes, the licences and the free plan. The same test fails if a claim about another product loses its source. Other backends were not checked; the nine questions apply to them too.

Products change faster than guides. If a row is out of date, tell us through the contact page and it will be corrected.

Read next

Try it on a live project

One free project, no credit card. Connect Claude Code with a read-only key first, then ask for a change and see what waits for you.