🗄️

ClickHouse MCP Server

Updated June 2026✓ OfficialTrust grade A98/100

ClickHouse MCP Server is ClickHouse's official MCP server (ClickHouse/mcp-clickhouse) that connects Claude, Cursor, and other MCP clients to a ClickHouse cluster for fast analytical querying over natural language. Built by ClickHouse, it is officially maintained and best for Database.

by ClickHouse

About

ClickHouse MCP Server is ClickHouse's official MCP server (ClickHouse/mcp-clickhouse) that connects Claude, Cursor, and other MCP clients to a ClickHouse cluster for fast analytical querying over natural language. Its primary tool, run_query, executes arbitrary SQL against your cluster in read-only mode by default (CLICKHOUSE_ALLOW_WRITE_ACCESS=false) so an AI assistant can explore tables, aggregate billions of rows, and answer analytics questions without risk of mutating data — writes can be enabled explicitly when needed. Companion tools list databases and tables and return schema metadata (including the full create_table_query, with an option to omit per-column detail for lighter responses). A second tool set embeds chDB, ClickHouse's in-process engine, via run_chdb_select_query, letting the assistant query files, URLs, and external databases directly without an ETL step (enabled with the optional mcp-clickhouse[chdb] extra). Destructive statements are gated a second time: even with writes enabled, DROP and TRUNCATE require CLICKHOUSE_ALLOW_DROP=true as well. The server supports both stdio and HTTP/SSE transports; on HTTP/SSE authentication is required rather than optional — startup fails unless a static bearer token (CLICKHOUSE_MCP_AUTH_TOKEN), a FastMCP OAuth/OIDC provider (Azure Entra, Google, GitHub, WorkOS via FASTMCP_SERVER_AUTH), or an explicit local-development opt-out (CLICKHOUSE_MCP_AUTH_DISABLED) is configured. Connection is configured through CLICKHOUSE_HOST, CLICKHOUSE_PORT, CLICKHOUSE_USER, and CLICKHOUSE_PASSWORD, with ClickHouse Cloud, self-hosted, and the public SQL playground all supported.

A
Reliable98/100
low confidence · 1 measured signal

Grade A (98/100, reliable) from 1 measured signal, based on repository evidence. Only one signal stands behind it, so treat the grade as provisional.

What was measured

  • Repository maintenance100/100 · weight 20

    The repository has been pushed to or released within the last six months. — last push 2026-07-23, last release 2026-07-17 (v0.4.1).

  • Source verification100/100 · weight 25

    The repository URL was confirmed to resolve against the live GitHub API and is not archived.

  • Provenance90/100 · weight 10

    Published and maintained by the vendor of the service it connects to, rather than by a third party.

  • Listing ↔ repository match100/100 · weight 5

    The listing name lines up with the linked repository ClickHouse/mcp-clickhouse.

What could not be measured

These contributed nothing to the score — not a penalty, not a zero. They are why the confidence reads the way it does.

  • Live MCP handshakeunknown

    No remote endpoint to handshake — this server installs and runs locally over stdio, so there is nothing to probe from the outside.

  • Measured uptimeunknown

    No probe history recorded for this server yet.

  • Tool-schema stabilityunknown

    Drift is a difference between two successive checks, and this server has none recorded.

Installation

pip
uvx mcp-clickhouse

mcp-clickhouse confirmed live on PyPI — checked August 17, 2026.

Most of what goes wrong with this server is not the server. It is that `CLICKHOUSE_*` names two unrelated things and people configure one while thinking about the other: the variables that decide how this process dials your database, and the `CLICKHOUSE_MCP_*` variables that decide how MCP clients reach this process. The README calls that out explicitly, and it is worth internalising before you paste anything, because the failure mode is an opaque HTTP or TLS error in the server log rather than a message that says "wrong scheme". The second thing to know is that safety here is two-tier and off by default in a way that is genuinely useful: reads work with no flags, writes need `CLICKHOUSE_ALLOW_WRITE_ACCESS=true`, and `DROP`/`TRUNCATE` need `CLICKHOUSE_ALLOW_DROP=true` on top of that. And if you only want to see whether a ClickHouse-shaped agent is useful at all, you can point it at ClickHouse's public playground and never connect a cluster of your own.

Connecting mcp-clickhouse

  1. 1.Try it against the public playground first

    No account, no cluster, no credentials — the demo user on ClickHouse's SQL Playground is read-only and populated with real datasets. This is the config to paste into Claude Desktop if what you want to know is whether the tools are worth wiring to your own data.

    json
    {
      "mcpServers": {
        "mcp-clickhouse": {
          "command": "uv",
          "args": ["run", "--with", "mcp-clickhouse", "--python", "3.10", "mcp-clickhouse"],
          "env": {
            "CLICKHOUSE_HOST": "sql-clickhouse.clickhouse.com",
            "CLICKHOUSE_PORT": "8443",
            "CLICKHOUSE_USER": "demo",
            "CLICKHOUSE_PASSWORD": "",
            "CLICKHOUSE_SECURE": "true",
            "CLICKHOUSE_VERIFY": "true"
          }
        }
      }
    }
  2. 2.Point it at your own cluster

    Only three variables are required: `CLICKHOUSE_HOST`, `CLICKHOUSE_USER`, `CLICKHOUSE_PASSWORD`. Port defaults follow `CLICKHOUSE_SECURE` — 8443 when true, 8123 when false — so on ClickHouse Cloud you can usually leave the port unset entirely. The README is blunt about the user: treat it as any external client, grant the minimum privileges, never the default or an admin account.

    env
    CLICKHOUSE_HOST=your-instance.clickhouse.cloud
    CLICKHOUSE_USER=mcp_readonly
    CLICKHOUSE_PASSWORD=...
    # CLICKHOUSE_SECURE=true is the default and implies port 8443
    # CLICKHOUSE_DATABASE=analytics   # optional, avoids qualifying every table
  3. 3.Use the HTTP interface port, not the native one

    This server talks to ClickHouse over the HTTP interface via clickhouse-connect. 8123 plain and 8443 TLS work; 9000 and 9440 are the native TCP protocol that `clickhouse-client` uses and will not work here. If you see `Port 9000 is for clickhouse-client program`, that is the whole diagnosis.

  4. 4.Replace `uv` with its absolute path

    Claude Desktop does not inherit your shell PATH, so a bare `uv` resolves inconsistently or not at all. Run `which uv` and paste the result as `command`. The same applies to `python3` or `mcp-clickhouse` if you install from PyPI instead of running it with uv.

    shell
    which uv
    # → /Users/you/.local/bin/uv
  5. 5.Turn on writes only if you mean it, and drops separately

    Left alone, queries run with the `readonly=1` setting and mutations are impossible. `CLICKHOUSE_ALLOW_WRITE_ACCESS=true` unlocks DDL and DML; `DROP TABLE`, `DROP DATABASE`, `DROP VIEW`, `DROP DICTIONARY` and `TRUNCATE TABLE` stay blocked until `CLICKHOUSE_ALLOW_DROP=true` is also set. Read-only enforcement also survives being enabled here if the ClickHouse instance itself disallows writes.

    json
    "env": {
      "CLICKHOUSE_ALLOW_WRITE_ACCESS": "true",
      "CLICKHOUSE_ALLOW_DROP": "true"
    }
  6. 6.HTTP transport: authentication is required, not optional

    stdio needs no auth because it never opens a socket. Under `http` or `sse` the process refuses to start unless exactly one of three things is configured: a static bearer token, a FastMCP auth provider, or an explicit development-only opt-out. Generate the token with `uuidgen` or `openssl rand -hex 32` and send it as `Authorization: Bearer <token>`.

    env
    CLICKHOUSE_MCP_SERVER_TRANSPORT=http
    CLICKHOUSE_MCP_BIND_HOST=0.0.0.0
    CLICKHOUSE_MCP_BIND_PORT=4200
    CLICKHOUSE_MCP_AUTH_TOKEN="$(openssl rand -hex 32)"
    # MCP endpoint:  http://localhost:4200/mcp
    # Health check:  http://localhost:4200/health
  7. 7.For an identity provider, hand auth to FastMCP

    `FASTMCP_SERVER_AUTH` takes the full class path of a FastMCP auth provider — Azure Entra, Google, GitHub, WorkOS — and the provider reads its own `FASTMCP_SERVER_AUTH_*` variables. Leave `CLICKHOUSE_MCP_AUTH_TOKEN` unset in this mode; the two are alternatives, not layers.

    shell
    export FASTMCP_SERVER_AUTH=fastmcp.server.auth.providers.azure.AzureProvider
    export FASTMCP_SERVER_AUTH_AZURE_TENANT_ID="<tenant-id>"
    export FASTMCP_SERVER_AUTH_AZURE_CLIENT_ID="<client-id>"
    export FASTMCP_SERVER_AUTH_AZURE_CLIENT_SECRET="<client-secret>"
  8. 8.chDB, if you want queries without a cluster

    chDB is ClickHouse as an in-process engine, and it ships as an optional extra rather than being installed by default. Enabling it alone — `CLICKHOUSE_ENABLED=false` — gives you a server that queries files, URLs and external databases with no ClickHouse deployment behind it at all. `CHDB_DATA_PATH` defaults to `:memory:`; give it a path to persist.

    json
    {
      "command": "uv",
      "args": ["run", "--with", "mcp-clickhouse[chdb]", "--python", "3.10", "mcp-clickhouse"],
      "env": {
        "CHDB_ENABLED": "true",
        "CLICKHOUSE_ENABLED": "false",
        "CHDB_DATA_PATH": "/path/to/chdb/data"
      }
    }

Tools

Four, and the split matters: three go to your ClickHouse cluster, one goes to the embedded chDB engine and never touches it.

run_query

Executes arbitrary SQL against the cluster. Read-only by default via the `readonly=1` setting; subject to `CLICKHOUSE_MCP_QUERY_TIMEOUT`, which defaults to 30 seconds.

list_databases

Lists every database on the cluster. No arguments.

list_tables

Paginated. Takes `database`, plus optional `like`/`not_like` name filters, `page_token`, `page_size` (default 50) and `include_detailed_columns` (default true). Returns `tables`, `next_page_token` and `total_tables`.

run_chdb_select_query

SELECTs through chDB's embedded engine against files, URLs and external databases — no ETL and no cluster. Requires the `mcp-clickhouse[chdb]` extra and `CHDB_ENABLED=true`.

What people use it for

Explore a schema you have never seen

Run list_databases, then list_tables on the one that looks like production analytics with include_detailed_columns set to false, and summarise what each table appears to record from its name and create_table_query.

Setting `include_detailed_columns` to false is the trick on a wide schema: you keep the full `create_table_query` for every table but drop the per-column metadata, which is what otherwise blows the response past what the model will read in one turn.

Aggregate over a dataset you do not own

Using run_chdb_select_query, read the Parquet file at this URL and give me the top 20 values by count, without loading it anywhere.

chDB is the reason to reach for this server over a generic SQL one. Querying a remote file directly removes the load step entirely, and because it is in-process there is no cluster to provision for a one-off question.

Let an analyst loose on the cluster without risk

Answer questions about our event data using run_query only, and show me the SQL for every number you report.

With no write flags set, the connection is enforced read-only at the ClickHouse setting level rather than by prompt instruction. Pair it with a minimally-privileged database user and this is a safe default to hand to someone who is not on call.

Which one should you use?

ClickHouse MCP vs a Postgres MCP server

Whichever holds the data — but note the difference in ambition. The Postgres servers add index tuning and health analysis; this one stays close to "run SQL, list things" and puts its extra surface into chDB and transport instead.

ClickHouse tools vs chDB tools

The cluster tools when the data already lives in ClickHouse. chDB when it lives in files, URLs or another database and you would rather not load it anywhere first. Both can be on at once, and `CLICKHOUSE_ENABLED=false` gives you chDB alone.

stdio vs HTTP transport

stdio for Claude Desktop and anything running on your machine — no listener, no auth to configure. HTTP or SSE only when the server has to be reachable over a network, at which point authentication stops being optional and you own a service.

Every command, environment variable, and endpoint above was read from the project’s own documentation on 2026-08-12: ClickHouse/mcp-clickhouse on GitHub, mcp-clickhouse on PyPI, ClickHouse SQL Playground.

Browse all MCP server setup guides.

Frequently Asked Questions

Why does the ClickHouse MCP server fail to start with HTTP transport?
Because authentication is required by default on `http` and `sse`, and startup fails if none of the three modes is configured. Set `CLICKHOUSE_MCP_AUTH_TOKEN`, or `FASTMCP_SERVER_AUTH`, or — for local work only — `CLICKHOUSE_MCP_AUTH_DISABLED=true`. stdio, the default transport, is exempt because it communicates only over standard input and output.
I set CLICKHOUSE_SECURE=false because my MCP server is behind an ingress. Why did the database connection break?
Those are different layers. `CLICKHOUSE_SECURE`, `CLICKHOUSE_VERIFY` and `CLICKHOUSE_PORT` configure how this process reaches ClickHouse; they do nothing to the MCP protocol endpoint. Turning the flag off makes the server dial ClickHouse over plain HTTP, often against an HTTPS-only port, and the errors that come back are HTTP/TLS noise rather than a clear mismatch. Keep it aligned with how the pod reaches the database and configure ingress TLS separately.
Why do I get "Port 9000 is for clickhouse-client program"?
You pointed `CLICKHOUSE_PORT` at the native TCP protocol. This server uses the HTTP interface — 8123 plain, 8443 TLS, or whatever your deployment maps HTTP to. 9000 and 9440 belong to `clickhouse-client` and are not supported here.
Can the AI drop my tables?
Not without two separate opt-ins. Writes require `CLICKHOUSE_ALLOW_WRITE_ACCESS=true`, and even then `DROP TABLE`, `DROP DATABASE`, `DROP VIEW`, `DROP DICTIONARY` and `TRUNCATE TABLE` remain blocked until `CLICKHOUSE_ALLOW_DROP=true` is set as well. Neither is on by default.
Why do chDB queries fail with the server otherwise working?
chDB is an optional extra and is disabled by default. You need both the dependency — install `mcp-clickhouse[chdb]`, not plain `mcp-clickhouse` — and `CHDB_ENABLED=true`. Installing the extra without the flag, or the flag without the extra, both present as the tool simply not working.
Queries time out on large tables. Which timeout do I raise?
Probably `CLICKHOUSE_MCP_QUERY_TIMEOUT`, which caps the query tools at 30 seconds and produces `Query timed out after ...`. That is separate from `CLICKHOUSE_SEND_RECEIVE_TIMEOUT` (300s, the database client) and `CLICKHOUSE_CONNECT_TIMEOUT` (30s, establishing the connection). Match the error text to the layer before changing anything.
Is the /health endpoint safe to expose?
It is designed to be. It is deliberately unauthenticated so Kubernetes probes and load balancers can reach it without credentials, and the body is just `OK` or a generic 503 specifically to avoid leaking version strings or error detail. The corollary: a 200 from /health proves nothing about your bearer token. To test auth, POST a JSON-RPC request to `/mcp` with and without the header and confirm the unauthenticated one returns 401.
Can I connect through a reverse proxy or a load balancer with a different certificate hostname?
Yes. `CLICKHOUSE_SERVER_HOST_NAME` overrides the SNI hostname and the name used for certificate validation, and `CLICKHOUSE_PROXY_PATH` sets a URL path prefix when the HTTP interface is exposed under one, for example `/clickhouse`. Reach for these before disabling `CLICKHOUSE_VERIFY`.
What is ClickHouse MCP Server?
ClickHouse is an MCP server built by ClickHouse. ClickHouse MCP Server is ClickHouse's official MCP server (ClickHouse/mcp-clickhouse) that connects Claude, Cursor, and other MCP clients to a ClickHouse cluster for fast analytical querying over natural language. Its primary tool, run_query, executes arbitrary SQL against your cluster in read-only mode by default (CLICKHOUSE_ALLOW_WRITE_ACCESS=false) so an AI assistant can explore tables, aggregate billions of rows, and answer analytics questions without risk of mutating data — writes can be enabled explicitly when needed. Companion tools list databases and tables and return schema metadata (including the full create_table_query, with an option to omit per-column detail for lighter responses). A second tool set embeds chDB, ClickHouse's in-process engine, via run_chdb_select_query, letting the assistant query files, URLs, and external databases directly without an ETL step (enabled with the optional mcp-clickhouse[chdb] extra). Destructive statements are gated a second time: even with writes enabled, DROP and TRUNCATE require CLICKHOUSE_ALLOW_DROP=true as well. The server supports both stdio and HTTP/SSE transports; on HTTP/SSE authentication is required rather than optional — startup fails unless a static bearer token (CLICKHOUSE_MCP_AUTH_TOKEN), a FastMCP OAuth/OIDC provider (Azure Entra, Google, GitHub, WorkOS via FASTMCP_SERVER_AUTH), or an explicit local-development opt-out (CLICKHOUSE_MCP_AUTH_DISABLED) is configured. Connection is configured through CLICKHOUSE_HOST, CLICKHOUSE_PORT, CLICKHOUSE_USER, and CLICKHOUSE_PASSWORD, with ClickHouse Cloud, self-hosted, and the public SQL playground all supported.
Who built ClickHouse MCP Server?
ClickHouse MCP Server was built by ClickHouse.
Is ClickHouse MCP Server free?
Yes, ClickHouse MCP Server has a free option. The MCP server is free and open-source. ClickHouse Cloud: Free trial available. Pay-as-you-go pricing. Self-hosted ClickHouse is free and open-source.
How do I install ClickHouse MCP Server?
Install ClickHouse MCP Server with pip: uvx mcp-clickhouse
What does ClickHouse MCP Server integrate with?
ClickHouse MCP Server integrates with Claude Desktop, Cursor, VS Code, Windsurf, Cline.

Repo Health

Actively maintained

Local/stdio install — runs on your machine, so there is no remote endpoint to verify live. Trust signal below is from the source repo.

Last commit
1mo ago
Last release
v0.4.1 · 2mo ago
Install
pip

Quick Info

Install Type
pip
Author
ClickHouse
Categories
2
Integrations
5

Related Servers

🗄️

MongoDB MCP Server

The official MongoDB MCP server, `mongodb-js/mongodb-mcp-server`, maintained by MongoDB. Searchers find it as the MongoDB MCP server or the Mongo MCP server; both names refer to this one project, and there is no separate short-form server. It is really two tool surfaces in one process. The database tools connect to any MongoDB deployment over a connection string in `MDB_MCP_CONNECTION_STRING` — `find`, `aggregate`, `explain`, `collection-schema`, `collection-indexes`, `create-index`, `count`, `export`, `mongodb-logs` and the write tools — or, if no connection string is set, the model calls the `connect` tool at runtime and passes the returned `connectionId` to later calls. The Atlas tools are a separate control plane: listing and creating clusters, database users, IP access-list entries, stream processing resources and the performance advisor. They authenticate with Atlas Service Account credentials (`MDB_MCP_API_CLIENT_ID` / `MDB_MCP_API_CLIENT_SECRET`), not with a connection string, and they simply do not register when those are unset — the usual cause of a 'the Atlas tools are missing' report. Two defaults are worth knowing before you point it at production. `readOnly` is false, so every write tool including `drop-database` is registered unless you pass `--readOnly`, which is why MongoDB's own README uses that flag in every example. And confirmation-required tools rely on MCP elicitation, so on a client that does not support elicitation they execute without prompting — `--readOnly` or `--disabledTools` is the actual boundary. Other guardrails: `indexCheck` rejects queries that would do a collection scan, server-side JavaScript (`$where`, `$function`, `$accumulator`) is disabled by default, results are capped at 100 documents and 16 MB per call, and `--dryRun` prints the resolved config and enabled tool list without starting the server. Requires Node 22.13.0 or later (Node 20 is deprecated); also published as the `mongodb/mongodb-mcp-server` Docker image. Runs over stdio by default, with an optional HTTP transport and a separate monitoring listener for `/health` and Prometheus `/metrics`.

Local📘
🗄️

PostgreSQL MCP Server

The PostgreSQL MCP server was the Model Context Protocol reference server for Postgres, and it is retired: the source now sits in modelcontextprotocol/servers-archived — a repository GitHub reports as archived, described as "Reference MCP servers that are no longer maintained" — and the npm package @modelcontextprotocol/server-postgres carries a deprecation notice reading "Package no longer supported." It still installs and still runs, which is why most third-party setup articles have not caught up. What it provides is deliberately small: a single tool, query, which executes read-only SQL inside a READ ONLY transaction, plus per-table schema information exposed as MCP resources at postgres://<host>/<table>/schema, with column names and data types discovered from database metadata. There is no index advice, no health check, no separate schema-listing tool, and no write mode. Install is npx @modelcontextprotocol/server-postgres with a postgres:// connection string as the argument. For active work against Postgres, the maintained alternative is Postgres MCP Pro (crystaldba/postgres-mcp), which exposes nine tools including index tuning against hypothetical indexes and a database health check, and has an explicit restricted access mode; if your database is hosted on Supabase or Neon, their platform servers add branching and logs that a raw Postgres connection cannot see. Reach for this archived server only when you want the smallest possible surface — one process, one read-only query tool, nothing else.

Local📘
🗄️

SQLite MCP Server

conversational read and write access to any SQLite database file, plus a running business-insights memo that accumulates what the analysis turns up. It is a Python server on PyPI, not a Node one, and the difference is the single most common reason setups fail here: `@modelcontextprotocol/server-sqlite` does not exist on npm, so every npx line for it 404s. The working invocation is `uvx mcp-server-sqlite --db-path /path/to/database.db` (PyPI package mcp-server-sqlite, v2025.4.25), or the equivalent `mcp/sqlite` Docker image with a volume mounted at /mcp. The --db-path argument is required and points at the .db file; the server will create it if it is not there yet. Six tools are exposed, deliberately split by risk: read_query for SELECT only, write_query for INSERT/UPDATE/DELETE, create_table for DDL, list_tables and describe-table for schema introspection, and append_insight, which writes into a memo://insights resource that updates live as findings accumulate — that resource, not the SQL tools, is what makes this server different from a generic database connector. It also ships an mcp-demo prompt that takes a business topic, generates a plausible schema and sample data, and walks through an analysis end to end, which is the fastest way to see the memo behaviour without wiring up real data. One caveat to weigh before adopting it: this is an Anthropic reference implementation that now lives in modelcontextprotocol/servers-archived, archived on 2025-05-28. The published package still installs and runs, but it is frozen — no new features, no dependency updates, and no security patches.

Local
🗄️

Redis MCP Server

The Redis MCP Server (redis/mcp-redis) is Redis's own natural-language interface for agentic applications, letting an AI client read and write Redis data over the Model Context Protocol. Note which one you install: the server most tutorials still point at is Anthropic's reference implementation, which now lives in modelcontextprotocol/servers-archived, and its npm package @modelcontextprotocol/server-redis is explicitly marked "Package no longer supported" with a last publish of 2025-04-25. The maintained server is a Python package instead, run with uvx --from redis-mcp-server@latest, and it covers far more of Redis than the reference one did: string, hash, list, set and sorted-set tools; JSON document tools; pub/sub with stateful channel and pattern subscriptions; Streams tools including consumer-group create, read, acknowledge and destroy; vector index management and vector search through the query engine; a docs search tool; and a server-management tool for database info. Connection is a redis:// or rediss:// URL passed as --url, or the REDIS_HOST/REDIS_PORT/REDIS_PWD/REDIS_SSL environment variables, with Redis Cluster mode behind REDIS_CLUSTER_MODE and EntraID service-principal, managed-identity and default-credential auth flows for Azure Managed Redis. There is no --read-only flag: the documented way to stop an agent writing is a Redis ACL user (ACL SETUSER readonlyuser on >pw ~* +@read -@write). Ships as a PyPI package, a GitHub install via uvx, and an official mcp/redis Docker image; stdio transport only.

Local📘
🗄️

Supabase MCP Server

Supabase MCP Server connects Cursor, Claude Code, Claude Desktop, Windsurf and other MCP clients to a Supabase project, and the first thing to know is that the personal access token setup most guides still describe is gone. Supabase now runs a hosted server at https://mcp.supabase.com/mcp using OAuth 2.1 with dynamic client registration — you add the URL, your client opens a browser, you pick the organization, and there is no PAT to mint or rotate. For Claude Code that is `claude mcp add --scope project --transport http supabase "https://mcp.supabase.com/mcp"` followed by `/mcp` in a plain terminal (not the IDE extension) to run the auth flow. Three URL query parameters do the real configuration work: `read_only=true` runs every statement as a read-only Postgres role, `project_ref=<id>` scopes the server to one project and drops the account-management tools entirely, and `features=` selects the tool groups. Those groups are database (list_tables, list_extensions, list_migrations, apply_migration, execute_sql), debugging (get_logs across API/Postgres/Edge Functions/Auth/Storage/Realtime, plus get_advisors for security and performance findings), development (get_project_url, get_publishable_keys, generate_typescript_types), Edge Functions (list, get, deploy), account management, docs search, experimental branching on paid plans, and storage — storage is the one group disabled by default. Running Supabase locally with the CLI exposes a reduced server at http://localhost:54321/mcp with no OAuth; self-hosted installs are similar. The npm package `@supabase/mcp-server-supabase` still exists for stdio clients and also exports `createToolSchemas()` so Vercel AI SDK users get typed tool inputs and outputs. Read Supabase's security best-practices page before pointing this at anything with production data — the mutating tools are real.

Auth required📘

Sponsored

Better Stack

Free Plan

Get alerted when your APIs, browser tests, payment pipelines, or MCP server dependencies go down. Used by 100K+ developers.

Start monitoring free →