@bossforce.ai/mcp-metabase
v0.1.0
Published
MCP server for the [Metabase](https://www.metabase.com/) **REST API**, using API key authentication. A good fit for listing databases and saved questions, running a saved question, or running ad-hoc native SQL from an agent.
Readme
@bossforce.ai/mcp-metabase
MCP server for the Metabase REST API, using API key authentication. A good fit for listing databases and saved questions, running a saved question, or running ad-hoc native SQL from an agent.
Credentials
| Env | Secret | How to obtain |
| ------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------- |
| METABASE_URL | no | Base URL of your Metabase instance, e.g. https://metabase.acme.com (no trailing /api). |
| METABASE_API_KEY | yes | In Admin settings > Authentication > API keys, create a key. |
Credentials are read lazily, so the server boots and answers tools/list
without them; calls fail with an auth error until they are set. The key
inherits the data permissions of the group it belongs to, so running questions
and native queries require that group to have access to the relevant databases.
Authentication sends the key in the x-api-key header (available in Metabase
v0.47+). The API base URL is built from METABASE_URL as {METABASE_URL}/api.
Tools
| Tool | Arguments | Returns |
| ------------------ | ---------------------------------------------------- | ---------------------------------- |
| list_databases | — | List of connected databases |
| list_cards | f?, model_id? | List of saved questions (cards) |
| run_card_query | card_id, parameters? | Result rows for the saved question |
| run_native_query | database, query, template_tags?, parameters? | Query result (rows, columns) |
Responses are Metabase's native JSON payloads, returned as structuredContent.
Discovering ids
list_databases returns the numeric database ids used by run_native_query.
list_cards returns the numeric card_id ids used by run_card_query; filter
the set with f (defaults to all).
Running queries
run_card_query runs a saved question by id and returns its rows as JSON
(POST /api/card/{card_id}/query/json); pass parameters to fill in the card's
parameters. run_native_query runs ad-hoc SQL via POST /api/dataset with a
{ database, type: "native", native: { query } } body; use template_tags and
parameters for parameterized SQL.
Develop
pnpm --filter @bossforce.ai/mcp-metabase build
pnpm --filter @bossforce.ai/mcp-metabase testRegenerate the tools/list snapshot after an intentional signature change:
UPDATE_SNAPSHOTS=1 pnpm --filter @bossforce.ai/mcp-metabase test