searchLABSCO SUMMARY
The analytics layer answers, so the agent works through your models, your metrics and your permissions.
Queries are constructed into a handle before anything runs, which means the same handle can be executed for an answer now or saved as a question colleagues open later. The write side is real work, not a transcript: questions, metrics, dashboards and collections are created and patched in place, and deleting is archiving — reversible — rather than destruction.
What it is
An MCP server built into Metabase itself and served over Streamable HTTP at /api/metabase-mcp on your own instance. Everything it returns is scoped to the permissions of the user who connected.
What you get
- Tables, metrics, cards, dashboards and collections found by keyword or by plain description — search
- Metabase entities read by metabase:// URI, up to 5 per call, covering databases, schemas, tables, collections, questions, dashboards, metrics and transforms — read_resource
- A query built against a table or metric and handed back as an opaque query_handle you can run or save — construct_query
- Raw SQL constructed for a database without being run, ready to be saved as a question — construct_native_query
- Rows with column metadata, capped at 200 per request with a continuation_token for the next page — query, execute_query
- Raw SQL executed against a database, subject to the caller's native-query permission — execute_sql
- A saved question run by id, returning its rows and column metadata — execute_question
- Work saved back into Metabase as a question, a metric, a dashboard or a collection — create_question, create_metric, create_dashboard, create_collection
- Patch updates to what is already saved, including moving it between collections and archiving it as a reversible soft delete — update_question, update_metric, update_dashboard
Requirements
A Metabase account on the instance, authorized over OAuth 2.0 — Metabase runs its own embedded OAuth server, so there is no external provider to set up. The endpoint is your own hostname with /api/metabase-mcp appended (the older /api/mcp path still resolves), and any client that speaks Streamable HTTP can connect. Tokens carry per-tool scopes such as agent:query:execute and agent:question:create, and execute_sql can be switched off for the whole instance through the mcp-execute-sql-enabled setting.
Setup effort
One command, then sign in — claude mcp add --transport http metabase https://{<YOUR_METABASE_HOST>}/api/metabase-mcp, then approve the OAuth sign-in
USE CASES
Answering a data question without opening Metabase
Find the table or metric, build the query against it, then run the handle and read the rows with their column metadata.
Turning a one-off answer into something the team can reuse
Save the query you just built as a named question, then put it on a dashboard.
Running SQL you already have against a connected database
Execute it directly — it runs under your own native-query permission on that database.
Understanding how an existing dashboard is put together
Read the dashboard and its questions by URI, then run one of them to see what it returns.
Pulling a result too large for one response
Take the first 200 rows and pass the continuation_token back for each further page.
Tidying a collection that has drifted
Move questions and metrics into the right collection, and archive the ones nobody uses.
15 tools
Listed in project docs. Your client may show a different list.
read_resourceconstruct_queryconstruct_native_queryqueryexecute_queryexecute_sqlexecute_questioncreate_metricupdate_metriccreate_questionupdate_questioncreate_dashboardupdate_dashboardcreate_collectionBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation. Each tool needs its own OAuth scope, so you see only those your token was granted; execute_sql can be disabled instance-wide with the mcp-execute-sql-enabled setting.
Requires
- A Metabase account on the instance: MCP clients authenticate via OAuth 2.0 against Metabase's own embedded OAuth server, so no external provider is needed
- Everything the tools return is scoped to the connecting user's Metabase permissions
- For execute_sql, native-query permission on the target database; execute_sql can be disabled instance-wide via the mcp-execute-sql-enabled setting
INSTALLATION
Connect your client
Server setup
Claude Code
claude mcp add --transport http metabase https://{<YOUR_METABASE_HOST>}/api/metabase-mcpMCP Clients
Claude Desktop
https://{<YOUR_METABASE_HOST>}/api/metabase-mcp