🗄️

Snowflake MCP Server

Updated June 2026✓ OfficialTrust grade A98/100

Snowflake ships a first-party, Snowflake-managed MCP server that is Generally Available and needs no infrastructure of your own: you create it as a database object with CREATE MCP SERVER ... Built by Snowflake, it is officially maintained and best for Database.

by Snowflake

About

Snowflake ships a first-party, Snowflake-managed MCP server that is Generally Available and needs no infrastructure of your own: you create it as a database object with CREATE MCP SERVER ... FROM SPECIFICATION, and clients reach it over Streamable HTTP at https://<account_url>/api/v2/databases/{database}/schemas/{schema}/mcp-servers/{name}. The specification YAML lists the tools the server exposes, drawn from five types — CORTEX_AGENT_RUN (a Cortex Agent, the configuration Snowflake recommends for governed business questions), CORTEX_ANALYST_MESSAGE (text-to-SQL over a semantic view), CORTEX_SEARCH_SERVICE_QUERY (unstructured retrieval), SYSTEM_EXECUTE_SQL (query execution, read_only by default), and GENERIC (any UDF or stored procedure, exposed with its signature as the input schema). Because the server is an object in a schema, access is ordinary Snowflake RBAC: USAGE on the MCP server lets a client discover tools, and each underlying agent, search service, semantic view, function or procedure needs its own grant before that tool can actually be invoked. Authentication is Snowflake OAuth by default, with External OAuth available to bind the server to Okta or Entra ID; dynamic client registration is not supported. The server implements MCP revision 2025-11-25, supports tools only — no resources, prompts, roots or sampling — is non-streaming, and caps each server at 50 tools. The older community server at Snowflake-Labs/mcp (snowflake-labs-mcp on PyPI, last released 1.4.2 in May 2026) is now explicitly deprecated in favour of the managed server; isaacwasserman/mcp-snowflake-server remains as an unaffiliated self-hosted read/write SQL alternative.

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-05-15, last release 2026-05-15 (v.1.4.2).

  • 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 Snowflake-Labs/mcp.

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

remote
https://<account_url>/api/v2/databases/<database>/schemas/<schema>/mcp-servers/<name>

mcp_snowflake_server confirmed live on no registry (this server is hosted) — checked August 17, 2026.

Three different things have been called the Snowflake MCP server, and only one of them is the answer now. The Snowflake-managed server is a first-party, Generally Available feature that you create with SQL — it is a database object, not a package — and reach over HTTPS; nothing installs anywhere. Snowflake-Labs/mcp, the local Python server most older tutorials point at, carries a deprecation notice at the top of its own README and has not shipped a release since 1.4.2 in May 2026; do not start there. isaacwasserman/mcp-snowflake-server is a genuinely independent community project that is still a reasonable choice if what you want is a plain read/write SQL bridge with no Cortex in it. The managed server is the one this guide covers. Its surprises are not installation problems — there is no installation — but governance ones: a tool can be visible and still refuse to run, and the role your session ends up with is usually not the role you think you selected.

Creating and connecting a Snowflake-managed MCP server

  1. 1.Create the MCP server object in a database and schema

    The server is created with CREATE MCP SERVER and a specification YAML that lists its tools. For governed business questions Snowflake recommends exposing exactly one Cortex Agent and letting the agent orchestrate its own Analyst, Search and custom tools — the client then has one interface to choose from and the semantic layer stays in the loop.

    sql
    CREATE OR REPLACE MCP SERVER <database_name>.<schema_name>.<server_name>
    FROM SPECIFICATION $$
    tools:
      - title: "Governed business data agent"
        name: "business_data_agent"
        type: "CORTEX_AGENT_RUN"
        identifier: "<database_name>.<schema_name>.<agent_name>"
        description: "Use this agent for governed business data questions."
    $$;
  2. 2.Add the other tool types only if you actually want the client choosing between them

    Five types are supported: CORTEX_AGENT_RUN, CORTEX_ANALYST_MESSAGE (semantic views only — the managed server does not support semantic models), CORTEX_SEARCH_SERVICE_QUERY, SYSTEM_EXECUTE_SQL and GENERIC for a UDF or stored procedure. SYSTEM_EXECUTE_SQL takes read_only (default true), query_timeout and warehouse in its config block. Snowflake warns explicitly against putting SYSTEM_EXECUTE_SQL on the same server as an agent: direct SQL lets the client route around the agent’s semantic views and verified queries. If you need both, make it a second MCP server with its own least-privileged role.

    specification yaml
    tools:
      - title: "SQL Execution Tool"
        name: "sql_exec_tool"
        type: "SYSTEM_EXECUTE_SQL"
        description: "A tool to execute SQL queries against the connected Snowflake database."
        config:
          read_only: true
          query_timeout: 600
          warehouse: "<warehouse_name>"
  3. 3.Grant the access role — twice over

    This is the step that produces the most "the tool is listed but it will not run" reports. USAGE on the MCP SERVER only lets a client connect and discover tools. Every tool needs a second grant on the object behind it: USAGE on the Cortex Agent, USAGE on a Cortex Search service, SELECT on a semantic view, USAGE on a function or procedure. Access to the server is not access to the tools.

    sql
    CREATE ROLE <mcp_access_role>;
    GRANT DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER TO ROLE <mcp_access_role>;
    GRANT USAGE ON WAREHOUSE <warehouse_name> TO ROLE <mcp_access_role>;
    GRANT USAGE ON DATABASE <database_name> TO ROLE <mcp_access_role>;
    GRANT USAGE ON SCHEMA <database_name>.<schema_name> TO ROLE <mcp_access_role>;
    GRANT USAGE ON MCP SERVER <database_name>.<schema_name>.<server_name> TO ROLE <mcp_access_role>;
    GRANT USAGE ON AGENT <database_name>.<schema_name>.<agent_name> TO ROLE <mcp_access_role>;
    GRANT ROLE <mcp_access_role> TO USER <username>;
  4. 4.Create the OAuth security integration

    One integration can serve every user in the account and every MCP server in it — each user still authenticates individually, but the client id and secret are shared. Set OAUTH_REDIRECT_URI to the exact callback the client shows you, keep OAUTH_USE_SECONDARY_ROLES = NONE, and restrict ALLOWED_ROLES_LIST to the MCP access role. If the client registers more than one callback — VS Code does — add the rest with OAUTH_ALTERNATE_REDIRECT_URIS. To authenticate against Okta or Entra ID instead, set OAUTH_AUTHORIZATION_SERVER to bind the server to an External OAuth integration. Dynamic client registration is not supported, so you will always be pasting a client id and secret.

    sql
    CREATE OR REPLACE SECURITY INTEGRATION <integration_name>
      TYPE = OAUTH
      OAUTH_CLIENT = CUSTOM
      ENABLED = TRUE
      OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
      OAUTH_REDIRECT_URI = '<redirect_URI>'
      OAUTH_USE_SECONDARY_ROLES = NONE
      ALLOWED_ROLES_LIST = ('<mcp_access_role>');
    
    -- integration name is case sensitive and must be uppercase here
    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<INTEGRATION_NAME>');
  5. 5.Set DEFAULT_ROLE and DEFAULT_WAREHOUSE on every user who will connect

    Not optional, and not a nicety. A session with no default warehouse fails to initialise at all. And because several clients — Claude among them — request the session:role:all scope rather than a named role, the session runs as the user’s DEFAULT_ROLE whatever else you advertise in OAUTH_SCOPES_SUPPORTED. If different users need different data, the reliable answer is separate MCP servers with separate roles, not scopes.

    sql
    ALTER USER <username> SET DEFAULT_ROLE = '<mcp_access_role>' DEFAULT_WAREHOUSE = '<warehouse_name>';
  6. 6.Point the client at the server URL

    The URL is fully qualified down to the server name — a truncated path authenticates fine and then fails to connect, which is the second entry in Snowflake’s own troubleshooting table. In Claude, add it under Settings → Connectors as a custom connector with the client id and secret; in ChatGPT, enable Developer mode and create a Connector with OAuth; in Cursor, add a url entry to ~/.cursor/mcp.json and then click Sign in under Cursor Settings → MCP.

    server URL and Cursor config
    https://<account_url>/api/v2/databases/<database>/schemas/<schema>/mcp-servers/<name>
    
    // Cursor — ~/.cursor/mcp.json
    {
      "mcpServers": {
        "snowflake": {
          "url": "https://<account_url>/api/v2/databases/<database>/schemas/<schema>/mcp-servers/<name>",
          "auth": {
            "CLIENT_ID": "${env:MCP_CLIENT_ID}",
            "CLIENT_SECRET": "${env:MCP_CLIENT_SECRET}"
          }
        }
      }
    }
  7. 7.Open the network policy if you have one

    A remote MCP client connects from its provider’s infrastructure, not from the user’s browser, so an account network policy will block it even though the same user can log into Snowsight fine. The tell is misleading: a blocked token request comes back as error: invalid_client from /oauth/token-request, the same error as wrong credentials. Anthropic publishes Claude’s outbound IPs; other providers publish their own.

    sql
    CREATE NETWORK RULE mcp_client_ingress_rule
      MODE = INGRESS
      TYPE = IPV4
      VALUE_LIST = ('<client_provider_ip_1>', '<client_provider_ip_2>');
    
    ALTER NETWORK POLICY <your_policy_name>
      ADD ALLOWED_NETWORK_RULE_LIST = ('mcp_client_ingress_rule');
  8. 8.Inspect what you built

    DESCRIBE returns the stored server_spec as JSON, which is the fastest way to confirm the client is seeing the tool list you think you wrote.

    sql
    SHOW MCP SERVERS IN SCHEMA <schema_name>;
    DESCRIBE MCP SERVER <server_name>;
    DROP MCP SERVER <server_name>;

The five tool types

The managed server has no fixed tool list — you compose it. Each entry in the specification YAML becomes one tool, named by you, with one of these five types. Maximum 50 per server.

CORTEX_AGENT_RUN

Exposes a Cortex Agent. The client sends a message; the agent picks among its own Analyst, Search and custom tools and answers. Snowflake’s recommended shape for governed business questions. Responses include reasoning traces, tool calls, search results and citations by design, which is why they can exceed 200 KB.

CORTEX_ANALYST_MESSAGE

Text-to-SQL over a semantic view. Exposed directly (rather than behind an agent) it generates SQL and returns the statement to the client. Semantic views only — semantic models are not supported on the managed server.

CORTEX_SEARCH_SERVICE_QUERY

Unstructured retrieval against a Cortex Search service. Set max_results in the agent’s search resources if payload size becomes a problem.

SYSTEM_EXECUTE_SQL

Runs SQL directly, with no agent orchestration. read_only defaults to true; query_timeout and warehouse are configurable. Responses truncate at 250 KB.

GENERIC

Any UDF (type: function) or stored procedure (type: procedure), exposed with input_schema matching the signature. This is how anything Snowflake did not build a tool type for becomes a tool. Responses truncate at 250 KB.

What people use it for

Ask a governed question without letting the model write SQL

Using the business_data_agent tool, what was net revenue by region last quarter, and how does that compare to the same quarter last year?

The agent resolves the question against a semantic view you have already defined and tested, so the number matches the one in your BI tool. Nothing in the path lets the model invent a join.

Search unstructured content and cite it

Search the product-search tool for customer complaints about billing in the last 60 days and summarise the three most common themes with quotes.

Cortex Search runs inside Snowflake against data that never leaves the account, and the agent response carries citations back to the source rows.

Expose an existing stored procedure as an agent tool

Run the refresh_forecast tool for the EMEA region and tell me what changed in the top five accounts.

A GENERIC tool wraps a UDF or procedure you already trust, so the agent calls reviewed code rather than generating something equivalent. Governance stays where it already was.

Give a read-only analyst a SQL scratchpad

Using sql_exec_tool, list the ten largest tables in ANALYTICS.PUBLIC by row count.

read_only: true plus a least-privileged role makes a genuinely safe exploration tool. Put it on its own MCP server, not next to the agent.

Which one should you use?

Three projects answer to "Snowflake MCP server". Two of them are the same lineage and only one is supported.

Snowflake-Labs/mcp (snowflake-labs-mcp)

Neither, now. Deprecated in its own README in favour of the managed server, last released 1.4.2 on 2026-05-15. Its docs are still useful for understanding the Cortex tool surface, and nothing else.

isaacwasserman/mcp-snowflake-server

This one if you want a small self-hosted SQL bridge and no Cortex: read_query, write_query and create_table behind an --allow-write flag, list_databases / list_schemas / list_tables / describe_table, and a memo://insights resource that accumulates findings across a session. Community-maintained and unaffiliated with Snowflake; last PyPI release 0.4.0, so treat it as stable rather than active.

Databricks

Databricks if the governed data lives in Unity Catalog. The architectures rhyme — both vendors now push managed, in-account MCP endpoints with on-behalf-of permissions rather than a local server holding credentials.

BigQuery

BigQuery when the warehouse is Google’s. Note the difference in shape: BigQuery is served by a self-run toolbox binary with a --prebuilt flag, so the credentials sit on your machine, where Snowflake’s managed server keeps them in the account.

dbt

dbt if the agent should reason about transformation logic and Semantic Layer metrics rather than tables. They compose well: dbt for what the numbers mean, Snowflake for running against them.

Frequently Asked Questions

Is the Snowflake-Labs/mcp server still the right Snowflake MCP server to install?
No. Its README opens with a deprecation caution telling you to migrate to the Snowflake-managed MCP server, the legacy documentation is collapsed behind a "for reference only" fold, and the last PyPI release of snowflake-labs-mcp is 1.4.2 from 15 May 2026. Most blog posts and videos about "the Snowflake MCP server" predate the managed server going GA and still show uvx snowflake-labs-mcp --service-config-file config.yaml with a YAML file of Cortex services. That command still runs; it is simply no longer the supported path, and none of the managed server’s governance model applies to it.
Why can my client see a Snowflake tool but not invoke it?
Because USAGE on the MCP server and access to the tool are two different grants, and Snowflake says so in as many words: access to the MCP server does not give access to the tools. Discovery only needs USAGE on the server object, so tools/list happily returns things the session cannot call. Grant the underlying privilege — USAGE on the agent, USAGE on the Cortex Search service, SELECT on the semantic view, USAGE on the function or procedure — to the role the session is actually running as.
Why does my Snowflake MCP session use the wrong role?
Because OAuth scopes control the primary role and most clients do not set one. By default the server advertises session:role:all, which despite the name does not activate every role — it means "use the connecting user’s DEFAULT_ROLE". Claude requests exactly that scope and cannot request a named role, so advertising session:role:ANALYST via OAUTH_SCOPES_SUPPORTED changes nothing for it. Set the user’s DEFAULT_ROLE to the MCP access role. Secondary roles are a separate mechanism controlled by OAUTH_USE_SECONDARY_ROLES on the integration, not by scopes; if a consent screen says "secondary roles = ALL" while your integration has NONE, that label is cosmetic and Snowflake enforces the integration setting.
Why does the session fail to initialise even though OAuth succeeded?
Almost always a missing default warehouse. Snowflake’s troubleshooting table lists it plainly: if the user has no DEFAULT_WAREHOUSE the session cannot open, and the role also needs USAGE on that warehouse. The second candidate is an incomplete URL — the path has to be fully qualified through database, schema and server name, and a shortened one authenticates before it fails.
Why does my Snowflake MCP connection fail with a hostname error?
Underscores in the account hostname. Snowflake flags this twice in its own documentation: use hyphens instead of underscores when configuring hostnames for MCP connections, because MCP clients have connection issues with hostnames containing underscores. It is the one failure here that has nothing to do with grants.
Can Claude.ai or ChatGPT reach a PrivateLink Snowflake account?
Yes, but not through the PrivateLink URL. Configure the SaaS client with the public MCP server URL and set USE_PRIVATELINK_FOR_AUTHORIZATION_ENDPOINT = TRUE on the OAuth security integration. That sends the user’s browser to the PrivateLink authorization endpoint while leaving the token endpoint public, which is the only arrangement where the vendor’s servers can complete the exchange. Separately, if you run a network policy, the client provider’s outbound IPs have to be allowed or the token request returns invalid_client.
What are the limits on a Snowflake-managed MCP server?
Fifty tools per server across all types, and Snowflake notes that tool-selection accuracy degrades before you get there — split into multiple servers rather than filling one. Generic and SQL execution responses truncate at 250 KB; narrow the query rather than expecting a page. Only tools are supported: no resources, prompts, roots, notifications, version negotiation, lifecycle phases or sampling, and responses are non-streaming. Agent recursion is capped at 10 invocations, which matters if an agent tool can reach another MCP server that calls back. And MCP server objects are not replicated in failover groups — you recreate them on the secondary account, though the OAuth security integrations do replicate.
Does the managed Snowflake MCP server work with semantic models?
No — semantic views only. The Cortex Analyst tool type on the managed server supports semantic views and explicitly does not support semantic models, which is a migration item if your existing Analyst setup is built on YAML semantic models. The deprecated Snowflake-Labs server accepted either, so a like-for-like port can stall here.
What is Snowflake MCP Server?
Snowflake is an MCP server built by Snowflake. Snowflake ships a first-party, Snowflake-managed MCP server that is Generally Available and needs no infrastructure of your own: you create it as a database object with CREATE MCP SERVER ... FROM SPECIFICATION, and clients reach it over Streamable HTTP at https://<account_url>/api/v2/databases/{database}/schemas/{schema}/mcp-servers/{name}. The specification YAML lists the tools the server exposes, drawn from five types — CORTEX_AGENT_RUN (a Cortex Agent, the configuration Snowflake recommends for governed business questions), CORTEX_ANALYST_MESSAGE (text-to-SQL over a semantic view), CORTEX_SEARCH_SERVICE_QUERY (unstructured retrieval), SYSTEM_EXECUTE_SQL (query execution, read_only by default), and GENERIC (any UDF or stored procedure, exposed with its signature as the input schema). Because the server is an object in a schema, access is ordinary Snowflake RBAC: USAGE on the MCP server lets a client discover tools, and each underlying agent, search service, semantic view, function or procedure needs its own grant before that tool can actually be invoked. Authentication is Snowflake OAuth by default, with External OAuth available to bind the server to Okta or Entra ID; dynamic client registration is not supported. The server implements MCP revision 2025-11-25, supports tools only — no resources, prompts, roots or sampling — is non-streaming, and caps each server at 50 tools. The older community server at Snowflake-Labs/mcp (snowflake-labs-mcp on PyPI, last released 1.4.2 in May 2026) is now explicitly deprecated in favour of the managed server; isaacwasserman/mcp-snowflake-server remains as an unaffiliated self-hosted read/write SQL alternative.
Who built Snowflake MCP Server?
Snowflake MCP Server was built by Snowflake.
Is Snowflake MCP Server free?
Snowflake is free to install as an MCP server, but the underlying service may require payment. The MCP server is free and open-source. Snowflake: Usage-based pricing. Compute from $2/credit. Storage from $23/TB/mo. $400 free trial credit.
How do I install Snowflake MCP Server?
Install Snowflake MCP Server with remote: https://<account_url>/api/v2/databases/<database>/schemas/<schema>/mcp-servers/<name>
What does Snowflake MCP Server integrate with?
Snowflake 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
4mo ago
Last release
v.1.4.2 · 4mo ago
Install
binary

Quick Info

Install Type
remote
Author
Snowflake
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 →