browser-use MCP
Browser Use is an open-source Python library for AI browser agents, and our entry covers its MCP route.
- MCP server
- Official
browser-use · 119,597 stars
MCP server
MCP server published on npm as @supabase/mcp-server-supabase, with a hosted endpoint. Transports: stdio, streamable-http. Maintained in supabase/mcp.
Checked 2026-10-31
claude mcp add supabase -- npx -y @supabase/mcp-server-supabasecodex mcp add supabase -- npx -y @supabase/mcp-server-supabasegemini mcp add supabase npx -y @supabase/mcp-server-supabaseHosted endpoint: https://mcp.supabase.com/mcp
Commands come from the project's own docs or registry entry. Check them against the source before you run them.
Loading poll...
The Supabase MCP server lets an AI agent work with your Supabase projects: list tables, run SQL, apply migrations, read logs and advisors, deploy Edge Functions and search the docs. Supabase hosts it at https://mcp.supabase.com/mcp and signs you in with OAuth. Use URL options to limit it to one project and make it read-only. We checked Supabase's docs and repo on 31 October 2026.
Maintainer | Supabase ( |
License | Apache-2.0 |
Last push we saw | 30 Oct 2026 |
Hosted endpoint |
|
Local CLI endpoint |
|
Self-hosted | Documented separately, also a limited subset |
Auth | OAuth with dynamic client registration; no PAT needed normally |
URL options |
|
Off by default | The Storage tool group |
Needs a paid plan | Branching tools (experimental) |
Price | The server is free; your Supabase plan and any resources it creates are billed as usual |
The docs organise tools into feature groups. Groups your connection supports are on by default, except Storage.
Group | Tools |
|---|---|
Database |
|
Debugging |
|
Development |
|
Edge Functions |
|
Account management |
|
Docs |
|
Branching (experimental, paid plan) |
|
Feedback |
|
Storage (off by default) |
|
Account tools are disabled when you scope the server to a project with project_ref.
For a developer, the daily uses are: asking what the schema looks like, writing and applying a migration, generating types, reading logs when something fails, and running the advisors to catch missing row-level security.
Most of the safety controls live in the endpoint URL. Supabase's docs list these parameters:
Parameter | What it does | Example |
|---|---|---|
| Runs all queries as a read-only Postgres user |
|
| Scopes to one project and disables account tools |
|
| Enables only the listed tool groups |
|
| Skips form confirmations for named tools |
|
Combine them with &:
https://mcp.supabase.com/mcp?project_ref=abc123&read_only=true&features=database,docsThe README suggests a configuration panel on Supabase's docs that builds this URL for you, plus an interactive URL builder.
Supabase's docs use project scope:
claude mcp add --scope project --transport http supabase "https://mcp.supabase.com/mcp"Or put it in .mcp.json:
{
"mcpServers": {
"supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp?project_ref=YOUR_REF&read_only=true"
}
}
}Then authenticate. In a regular terminal (not the IDE extension) run claude /mcp, choose the supabase server and Authenticate. The URL contains only a project reference, not a secret, so it is safe to commit. See our Claude Code MCP guide for scopes.
Add to .cursor/mcp.json (or ~/.cursor/mcp.json for all projects):
{
"mcpServers": {
"supabase": {
"url": "https://mcp.supabase.com/mcp?project_ref=YOUR_REF&read_only=true"
}
}
}Cursor IDE and the Cursor CLI share the same MCP configuration.
codex mcp add supabase --url "https://mcp.supabase.com/mcp"
codex mcp login supabaseOr in ~/.codex/config.toml:
[mcp_servers.supabase]
url = "https://mcp.supabase.com/mcp"Run /mcp inside Codex to check authentication.
Supabase warns that you need Gemini CLI version 0.20.2 or higher. The simplest route is the extension, which bundles the server connection and agent skills:
gemini extensions install https://github.com/supabase-community/gemini-extensionOr add only the server:
gemini mcp add -t http supabase "https://mcp.supabase.com/mcp"Then authenticate with /mcp auth supabase.
Add to .vscode/mcp.json:
{
"servers": {
"supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp?project_ref=YOUR_REF&read_only=true"
}
}
}Supabase's page also covers Copilot CLI, Grok, OpenCode, Factory, Antigravity and web clients. Any client can use the same URL in its own format.
Agent | Route | Auth step |
|---|---|---|
|
| |
| Browser sign-in on first use | |
|
| |
|
| |
| Prompted by the client |
OAuth by default. The hosted server uses dynamic client registration, so you do not need to create a personal access token or an OAuth app. The browser opens, you log in to Supabase and grant the client access to an organization. Pick the organization that holds the project you want.
A token for CI. If you run in CI where a browser flow is impossible, create a personal access token, scope it to the project, grant only the permissions your enabled tools need, and pass it in an Authorization header with environment variables for the token and project reference. Not every client supports custom headers.
A manual OAuth app. For clients that need a client ID and secret (the docs mention Azure API Center), create an OAuth app in your organization settings. The docs note that for now all scopes need write access, with finer scopes planned.
Elicitations. Some actions ask you to confirm. The docs describe form-based cost confirmation before actions that cost money (create_project, create_branch), confirmation for destructive SQL in execute_sql and apply_migration, and URL-based entry for Edge Function secrets so the secret value never goes through the chat. Supabase says to treat these as guardrails, not guarantees: some clients answer elicitations automatically, and SQL detection may miss destructive operations. You can skip named confirmations with skip_elicitations, which does not bypass authentication, permissions, read-only restrictions or charges. We would not skip them.
Supabase's page opens with a caution: connecting an LLM to your projects carries security risks.
Prompt injection. Their example: you build a support ticketing system on Supabase. A customer submits a ticket whose text says to select everything from a sensitive table and insert it as a reply. A developer asks an MCP client to read that ticket with the Supabase MCP. The client may follow the injected instruction. Supabase wraps SQL results with extra instructions to discourage the model from obeying content in the data, and says plainly that this is not foolproof.
Their recommendations, in our words:
features= to what the task needs.Keep one more point in view: the server is as powerful as your account. An agent with account tools and write access can create projects (a cost) and change production schemas.
If you run Supabase locally with the CLI, the MCP server is at http://localhost:54321/mcp. The docs say that with the experimental stack setting turned on, local projects use assigned ports, so read the MCP URL from the output of supabase status. The local server offers a limited subset of tools, which is a fine place to practise: nothing you break there is production. Self-hosted Supabase has its own page for enabling the server and also offers a limited subset.
A pattern that keeps most of the controls in place:
project_ref and read_only=true. Explore the schema and run the advisors.list_tables and the advisors again.Giving the two connections different names, such as supabase-prod-ro and supabase-dev, makes it obvious which one a tool call goes to when you read the approval prompt.
Agents write tables quickly and forget access control just as quickly. In Supabase the browser talks to your database through the project's API, and row level security (RLS) is what decides which rows a user can see. A table created without it, in a schema the API exposes, can be readable or writable by anyone with the public key. That makes it the first thing to check after any agent-written migration.
A minimal pattern for a table where each user owns their rows looks like this. It is our example, so adapt the names to your schema.
create table public.notes (
id bigint generated always as identity primary key,
user_id uuid not null references auth.users (id) default auth.uid(),
body text not null,
created_at timestamptz not null default now()
);
alter table public.notes enable row level security;
create policy "owners read their notes"
on public.notes for select
to authenticated
using ((select auth.uid()) = user_id);
create policy "owners write their notes"
on public.notes for insert
to authenticated
with check ((select auth.uid()) = user_id);Enabling RLS with no policy blocks everything for ordinary users, which is the safe default. Each policy then opens one door, for one role and one operation. When you review a migration, ask five questions:
enable row level security?authenticated, instead of leaving it open to everyone?auth.uid() or another identity, rather than true?The advisors the server can run include checks for missing RLS, and running them after every change is cheap. Do not treat a clean report as proof. Test with two real users, since a policy that is valid SQL can still describe the wrong rule. Keep policies in migration files in the repository, and review them in pull requests like application code.
The safe path ends with the migration going to production through your normal pipeline. That only works if the migration is a file a person reads. A routine that holds up:
drop, truncate, delete and alter ... type. Each one needs a reason and, for data, a backup or a plan to restore.If you let the agent write directly to a dev project, export the resulting schema back into migration files before moving on. Otherwise the next environment you create will not match the one you tested.
Experimenting with an agent tends to create projects, branches and test data. Check what each one costs before you let the agent create them. From the pricing facts we have, Supabase's free tier has a 500 MB database and pauses projects after a week of inactivity, and Pro starts at $25 a month, with Team from $599. The server's cost confirmations for actions such as creating a project exist for this reason. Branching is not included on Free, and on Pro and Team the pricing page lists $0.01344 per branch per hour, so a branch left running adds up.
Some habits keep the bill predictable. Tell the agent in your rules not to create projects or branches without asking, and leave the elicitation prompts on for those tools rather than skipping them. Delete branches when a change merges. Keep one development project for experiments, and drop test tables you no longer need. If you are on the free tier, remember that a paused project looks like an outage to a demo, so wake it before you show it.
The server helps with the database, and the same agent probably writes the application that uses it. Two mistakes recur in code that talks to Supabase. The first is using the service key in a place the browser can reach. That key bypasses RLS, so it belongs only on a server you control, never in front-end code or a public repository. The second is trusting a user id sent from the client. Take identity from the authenticated session on the server, and let policies use it, instead of reading a user_id field from the request body. Ask the agent to list every place the service key is used and every place user identity is read, and check both lists yourself. For related setup of other servers, see best MCP servers and the Claude Code MCP servers guide.
Understand a schema
List the tables in the public schema and describe each one in a
sentence. Then tell me which tables have no row level security.Write a migration, carefully
Draft a migration that adds a nullable "archived_at" column to
"projects" and an index on it. Show me the SQL. Do not apply it.Debug a failing request
Query the API logs for 500 responses from the last hour and group them
by path. Show the first example of each.Check security and performance
Run the advisors and list the security warnings, with the table each
one applies to and the fix Supabase suggests.Types
Generate TypeScript types for the current schema and write them to
src/types/database.ts.Pair with Context7 MCP for client library docs and GitHub MCP to open the migration as a pull request.
Option | Choose it when |
|---|---|
You want to query Postgres directly with your own connection string | |
Your database is on Neon | |
The | You want migrations through the CLI and fewer tools in context |
A local file database | |
You use MongoDB |
We read Supabase's docs and repo; we did not run the server against a project.
This is one of the better-documented servers we looked at for safety. The URL options give you the three controls that matter, project scope, read-only and feature groups, and the docs lead with the prompt injection risk instead of burying it.
Our recommended setup is boring on purpose: a development project, project_ref set, read_only=true until you need a migration, and manual approval on. When you do need to apply a migration, use a branch or a dev project, review the SQL, and apply it by hand or in a session where read-only is off for that one step.
The tools that worry us are the ones that spend money or change shared state. Cost confirmation and destructive-SQL checks are good, and Supabase says not to rely on them alone.
project_ref and read_only=true.list_tables to confirm the scope.What is the Supabase MCP server URL? https://mcp.supabase.com/mcp.
How do I make it read-only? Add ?read_only=true.
Do I need a personal access token? Not normally; OAuth handles it.
Is it safe to connect to production? Supabase advises scoping, read-only and restricted groups, and a careful review of risks.
Which tools does it offer? Database, debugging, development, Edge Functions, account, docs, branching, feedback and storage groups.
*Product names are used descriptively. We are not affiliated with Supabase.*
Tried it with one of these? Vote below: works for me, or not.
https://mcp.supabase.com/mcp for the hosted server. With the Supabase CLI locally, use http://localhost:54321/mcp.
Add ?read_only=true to the URL. Queries then run as a read-only Postgres user. Combine it with project_ref to scope to one project.
Not normally. The hosted server uses OAuth with dynamic client registration. A token is for CI or clients that cannot do OAuth.
Supabase warns that connecting an LLM to a project carries risks, especially prompt injection. For production it recommends project scope, read-only mode and restricted feature groups.
Groups for database, debugging, development, Edge Functions, account management, docs, branching (experimental), feedback and storage (off by default).
Loading poll...
Loading reviews…
Only members can review this page. Sign in
Browser Use is an open-source Python library for AI browser agents, and our entry covers its MCP route.
browser-use · 119,597 stars
Scrapling is a Python web scraping framework from D4Vinci, described on GitHub as handling everything from a single request to a full-scale crawl, and this entry is its MCP server.
D4Vinci · 90,477 stars
Netdata is an observability platform, and this entry is its hosted MCP endpoint at app.netdata.cloud, reached over streamable HTTP.
netdata · 81,227 stars
Claude Flow is published on npm as claude-flow, and its repository now sits at ruvnet/ruflo, which the GitHub description calls the original agent harness for deploying multi-agent swarms and coordinating autonomous workflows.
ruvnet · 80,298 stars
Context7 is an MCP server from Upstash that serves up-to-date library documentation to coding agents, so the model reads current docs instead of guessing from training data.
upstash · 63,974 stars
MCP server published on npm as chrome-devtools-mcp. Transports: stdio. Maintained in ChromeDevTools/chrome-devtools-mcp.
ChromeDevTools · 54,503 stars
The all-in-one WordPress community stack
Also ours: wbcomdesigns.comvapvarun.combrndle.com