Metabase MCP tool catalog

@serdnaley/metabase-mcp 0.4.0: 178 tools (79 read, 99 write) in 33 toolsets. Headless: API key auth, stdio or HTTP, every Metabase tier. GitHub · npm · tools.json

Search across all Metabase entities (cards, dashboards, collections, tables, etc.)

ParameterTypeDescription
q requiredstringSearch query string
modelsarrayFilter by entity types
collectionstringFilter by collection ID
archivedbooleanInclude archived items (default: false)

list_databasesreadDatabases

List all databases the user has access to

No parameters.

get_databasereadDatabases

Get database details by ID

ParameterTypeDescription
id requirednumberDatabase ID

get_database_metadatareadDatabases

Get full database metadata: tables, fields, types, relationships

ParameterTypeDescription
id requirednumberDatabase ID

list_database_schemasreadDatabases

List schemas in a database

ParameterTypeDescription
id requirednumberDatabase ID

get_database_schemareadDatabases

Get tables within a specific database schema

ParameterTypeDescription
id requirednumberDatabase ID
schema requiredstringSchema name as returned by list_database_schemas ("" for schema-less databases such as SQLite)

create_databasewriteDatabases

Add a new database connection to Metabase

ParameterTypeDescription
name requiredstringDatabase display name
engine requiredstringDatabase engine (postgres, mysql, h2, bigquery, snowflake, etc.)
details requiredobjectConnection details (host, port, dbname, user, password, ssl, etc.)

update_databasewritedestructiveidempotentDatabases

Update an existing database connection configuration

ParameterTypeDescription
id requirednumberDatabase ID
namestringNew display name
enginestringDatabase engine
detailsobjectConnection details to update
is_full_syncbooleanWhether to run a full sync on schedule
auto_run_queriesbooleanWhether to automatically run queries when opening the database

delete_databasewritedestructiveidempotentDatabases

Delete a database connection from Metabase

ParameterTypeDescription
id requirednumberDatabase ID

validate_databasewriteidempotentDatabases

Test database connection parameters before saving to verify credentials and connectivity

ParameterTypeDescription
engine requiredstringDatabase engine (postgres, mysql, h2, bigquery, snowflake, etc.)
details requiredobjectConnection details to validate (host, port, dbname, user, password, etc.)

sync_database_schemawriteidempotentDatabases

Trigger a schema resync on a database (use after DDL changes to pick up new or modified tables)

ParameterTypeDescription
id requirednumberDatabase ID

get_tablereadTables & Fields

Get table details and field info

ParameterTypeDescription
id requirednumberTable ID

get_table_query_metadatareadTables & Fields

Get full query metadata for a table (fields, FKs, metrics)

ParameterTypeDescription
id requirednumberTable ID

get_fieldreadTables & Fields

Get field details including type, special type, fingerprint

ParameterTypeDescription
id requirednumberField ID

get_field_valuesreadTables & Fields

Get sample values for a field

ParameterTypeDescription
id requirednumberField ID

update_tablewritedestructiveidempotentTables & Fields

Update table display name, description, visibility type, or entity type

ParameterTypeDescription
id requirednumberTable ID
display_namestringDisplay name
descriptionstringDescription
visibility_typestringVisibility type (e.g. hidden, technical, cruft)
entity_typestringEntity type (e.g. entity/GenericTable, entity/EventTable)

update_fieldwritedestructiveidempotentTables & Fields

Update field display name, description, semantic type, visibility, or FK target

ParameterTypeDescription
id requirednumberField ID
display_namestringDisplay name
descriptionstringDescription
semantic_typestringSemantic type (e.g. type/Name, type/Category)
visibility_typestringVisibility type (e.g. normal, details-only, hidden, sensitive)
has_field_valuesstringHow field values are retrieved (e.g. list, search, none)
fk_target_field_idnumberTarget field ID for foreign key relationships
coercion_strategystringCoercion strategy for type casting (e.g. 'ISO8601->DateTime', 'UNIXSeconds->DateTime')

rescan_field_valueswriteidempotentTables & Fields

Trigger a re-scan of field values used to populate filter dropdowns

ParameterTypeDescription
id requirednumberField ID

discard_field_valueswritedestructiveidempotentTables & Fields

Clear cached field values for a field

ParameterTypeDescription
id requirednumberField ID

reorder_fieldswritedestructiveidempotentTables & Fields

Set a custom field ordering for a table by providing an ordered list of field IDs

ParameterTypeDescription
id requirednumberTable ID
field_order requiredarrayOrdered list of field IDs

get_collection_treereadCollections

Get the full collection hierarchy as a tree

No parameters.

list_collectionsreadCollections

List all collections

ParameterTypeDescription
personal_onlybooleanOnly return personal collections (default: false)

get_collectionreadCollections

Get collection details

ParameterTypeDescription
id requirednumberCollection ID

list_collection_itemsreadCollections

List items in a collection (cards, dashboards, sub-collections)

ParameterTypeDescription
id requirednumberCollection ID
modelsarrayFilter by item types
sort_columnstring (name | last_edited_at | last_edited_by | model)Column to sort by
sort_directionstring (asc | desc)Sort direction
archivedbooleanInclude archived items (default: false)

create_collectionwriteCollections

Create a new collection

ParameterTypeDescription
name requiredstringCollection name
descriptionstringCollection description
parent_idnumberParent collection ID

update_collectionwritedestructiveidempotentCollections

Update collection properties

ParameterTypeDescription
id requirednumberCollection ID
namestringNew name
descriptionstringNew description
parent_idnumberNew parent collection ID
archivedbooleanArchive the collection

list_cardsreadCards

List all saved questions

No parameters.

get_cardreadCards

Get card details (query definition, visualization settings)

ParameterTypeDescription
id requirednumberCard ID

execute_card_queryreadCards

Run a saved question and return results as compact columns + rows (paged with max_rows/offset). For parameterized cards, pass template tag values as key-value pairs (e.g. { fromDate: '2024-01-01', toDate: '2024-12-31' }). For date ranges in native queries, use two separate date/single parameters.

ParameterTypeDescription
card_id requirednumberCard ID
parameter_valuesobjectTemplate tag parameter values as { paramName: value } pairs. For date: '2024-01-01'. For date/month-year: '2024-01'. For number: 100. For text: 'value'. For date ranges, use two separate date parameters (fromDate + toDate).
max_rowsintegerMax rows to return (capped by METABASE_MAX_ROWS, default 500)
offsetintegerSkip this many result rows first, for paging through a large result
verbosebooleanReturn the raw Metabase response (column internals, results_metadata, insights) instead of the compact columns + rows view

create_cardwriteCards

Create a new question (native SQL or structured query)

ParameterTypeDescription
name requiredstringQuestion name
dataset_query requiredobjectQuery definition. For native SQL: { type: "native", native: { query: "SELECT ..." }, database: 1 }. For structured: { type: "query", query: { "source-table": 1 }, database: 1 }
display requiredstringVisualization type: "table", "bar", "line", "pie", "scalar", "row", "area", "combo", "pivot", "smartscalar", "gauge", "progress", "funnel", "map", "scatter", "waterfall". Important: set visualization_settings alongside this to configure chart dimensions/metrics.
descriptionstringQuestion description
collection_idnumberCollection to save in
visualization_settingsobjectVisualization settings — must be configured for charts to render correctly. For pie: { "pie.dimension": "COLUMN", "pie.metric": "COLUMN" }. For bar/line/area: { "graph.dimensions": ["COLUMN"], "graph.metrics": ["COLUMN"] }. For scatter: { "graph.dimensions": ["X_COL"], "graph.metrics": ["Y_COL"] }. For funnel: { "funnel.dimension": "COLUMN", "funnel.metric": "COLUMN" }. For table: { "table.pivot_column": "COL", "table.cell_column": "COL" }. Column names must match SQL aliases or structured query field names.
typestring (question | model | metric)Card type: "question" (default), "model" (curated dataset), or "metric" (published metric definition)

update_cardwritedestructiveidempotentCards

Update question query, display, name, or other properties

ParameterTypeDescription
id requirednumberCard ID
namestringNew name
dataset_queryobjectNew query definition
displaystringNew visualization type
descriptionstringNew description
collection_idnumberMove to collection
visualization_settingsobjectVisualization settings — must be configured for charts to render correctly. For pie: { "pie.dimension": "COLUMN", "pie.metric": "COLUMN" }. For bar/line/area: { "graph.dimensions": ["COLUMN"], "graph.metrics": ["COLUMN"] }. For scatter: { "graph.dimensions": ["X_COL"], "graph.metrics": ["Y_COL"] }. For funnel: { "funnel.dimension": "COLUMN", "funnel.metric": "COLUMN" }. Column names must match SQL aliases or structured query field names.
archivedbooleanArchive the card
typestring (question | model | metric)Change card type: "question", "model", or "metric"
result_metadataarrayColumn metadata array for models. Each entry: { name, display_name, description, semantic_type, base_type, ... }. Use to set per-column display names, descriptions, and semantic types on model columns.
enable_embeddingbooleanEnable static embedding for this card (Pro/Enterprise)

delete_cardwritedestructiveidempotentCards

Delete a card (question)

ParameterTypeDescription
id requirednumberCard ID

copy_cardwriteCards

Copy a card to a collection

ParameterTypeDescription
id requirednumberCard ID to copy
collection_idnumberTarget collection ID

Generate a public sharing link for a card. Returns the card with a public_uuid field. The public URL is {metabase_url}/public/question/{uuid}. Public sharing must be enabled in Metabase admin settings.

ParameterTypeDescription
card_id requirednumberCard ID

Remove the public sharing link from a card

ParameterTypeDescription
card_id requirednumberCard ID

list_dashboardsreadDashboards

List all dashboards

No parameters.

get_dashboardreadDashboards

Get dashboard with all cards and layout

ParameterTypeDescription
id requirednumberDashboard ID

create_dashboardwriteDashboards

Create a new dashboard

ParameterTypeDescription
name requiredstringDashboard name
descriptionstringDashboard description
collection_idnumberCollection to save in
parametersarrayDashboard filter parameters

update_dashboardwritedestructiveidempotentDashboards

Update dashboard properties (name, description, filters)

ParameterTypeDescription
id requirednumberDashboard ID
namestringNew name
descriptionstringNew description
collection_idnumberMove to collection
archivedbooleanArchive the dashboard
parametersarrayUpdated filter parameters
enable_embeddingbooleanEnable static embedding for this dashboard (Pro/Enterprise)

delete_dashboardwritedestructiveidempotentDashboards

Delete a dashboard

ParameterTypeDescription
id requirednumberDashboard ID

copy_dashboardwriteDashboards

Copy a dashboard to a collection

ParameterTypeDescription
from_dashboard_id requirednumberDashboard ID to copy
namestringName for the copy
descriptionstringDescription for the copy
collection_idnumberTarget collection ID
is_deep_copybooleanDeep copy cards too (default: false)

update_dashboard_cardswritedestructiveidempotentDashboards

Add, remove, or reposition cards on a dashboard

ParameterTypeDescription
id requirednumberDashboard ID
cards requiredarrayArray of card positions and settings

Generate a public sharing link for a dashboard. Returns the dashboard with a public_uuid field. The public URL is {metabase_url}/public/dashboard/{uuid}. Public sharing must be enabled in Metabase admin settings.

ParameterTypeDescription
dashboard_id requirednumberDashboard ID

Remove the public sharing link from a dashboard

ParameterTypeDescription
dashboard_id requirednumberDashboard ID

list_actionsreadActions

List all actions

ParameterTypeDescription
model_idnumberFilter by model ID

get_actionreadActions

Get action details

ParameterTypeDescription
action_id requirednumberAction ID

create_actionwriteActions

Create a new action (query or implicit only — HTTP actions are not supported)

ParameterTypeDescription
name requiredstringAction name
type requiredstring (query | implicit)Action type (query or implicit)
model_id requirednumberModel card ID this action belongs to
database_idnumberDatabase ID (required for query actions)
dataset_queryobjectQuery definition for query-type actions
descriptionstringAction description

update_actionwritedestructiveidempotentActions

Update an action (cannot change type to http)

ParameterTypeDescription
id requirednumberAction ID
namestringNew action name
descriptionstringNew description
dataset_queryobjectNew query definition
database_idnumberNew database ID

delete_actionwritedestructiveidempotentActions

Delete an action

ParameterTypeDescription
action_id requirednumberAction ID

execute_actionwritedestructiveActions

Run an action with optional parameters

ParameterTypeDescription
id requirednumberAction ID
parametersobjectAction parameters as key-value pairs

Generate a public link for an action form

ParameterTypeDescription
action_id requirednumberAction ID

Remove the public link from an action

ParameterTypeDescription
action_id requirednumberAction ID

execute_queryreadDataset (ad-hoc queries)

Run an ad-hoc query (native SQL or structured) and return results as compact columns + rows (paged with max_rows/offset). WARNING: the SQL is sent as-is; this server does not block INSERT/UPDATE/DELETE/DDL. Whether it can change data depends only on the Metabase API key's permissions and the database user's grants.

ParameterTypeDescription
database requirednumberDatabase ID to query
type requiredstring (native | query)Query type: native SQL or structured
nativeobjectRequired when type is "native"
queryobjectRequired when type is "query". Structured query definition
max_rowsintegerMax rows to return (capped by METABASE_MAX_ROWS, default 500)
offsetintegerSkip this many result rows first, for paging through a large result
verbosebooleanReturn the raw Metabase response (column internals, results_metadata, insights) instead of the compact columns + rows view

list_usersreadUsers & Groups

List all Metabase users. Supports optional search query to filter by name or email.

ParameterTypeDescription
querystringSearch query to filter users by first name, last name, or email

get_userreadUsers & Groups

Get a Metabase user by ID

ParameterTypeDescription
id requirednumberUser ID

get_current_userreadUsers & Groups

Get the currently authenticated Metabase user

No parameters.

list_groupsreadUsers & Groups

List all Metabase permission groups

No parameters.

get_groupreadUsers & Groups

Get a permission group with its members (each member carries the membership_id that remove_group_member needs)

ParameterTypeDescription
id requirednumberGroup ID

create_userwriteUsers & Groups

Create a new Metabase user

ParameterTypeDescription
email requiredstringUser email address
first_namestringUser first name
last_namestringUser last name
passwordstringUser password (optional, user will receive a setup email if omitted)
group_idsarrayArray of permission group IDs to add the user to

update_userwritedestructiveidempotentUsers & Groups

Update an existing Metabase user. Only provided fields will be updated.

ParameterTypeDescription
id requirednumberUser ID
first_namestringNew first name
last_namestringNew last name
emailstringNew email address
localestringUser locale (e.g. 'en', 'fr')

deactivate_userwritedestructiveidempotentUsers & Groups

Deactivate a Metabase user (soft-delete). The user record is retained but access is disabled.

ParameterTypeDescription
id requirednumberUser ID to deactivate

reactivate_userwritedestructiveidempotentUsers & Groups

Reactivate a previously deactivated Metabase user

ParameterTypeDescription
id requirednumberUser ID to reactivate

create_groupwriteUsers & Groups

Create a new Metabase permission group

ParameterTypeDescription
name requiredstringGroup name

update_groupwritedestructiveidempotentUsers & Groups

Update the name of a Metabase permission group

ParameterTypeDescription
id requirednumberGroup ID
name requiredstringNew group name

delete_groupwritedestructiveidempotentUsers & Groups

Delete a Metabase permission group

ParameterTypeDescription
id requirednumberGroup ID to delete

add_group_memberwriteUsers & Groups

Add a user to a Metabase permission group

ParameterTypeDescription
group_id requirednumberPermission group ID
user_id requirednumberUser ID to add to the group

remove_group_memberwritedestructiveidempotentUsers & Groups

Remove a user from a Metabase permission group by membership ID

ParameterTypeDescription
membership_id requirednumberMembership ID to remove (from get_group members[].membership_id, or the add_group_member response)

get_permissions_graphreadPermissions

Get the full data permissions graph (view-data and create-queries permissions per group per database)

No parameters.

get_collection_permissionsreadPermissions

Get the collection permissions graph (which groups can access which collections)

No parameters.

update_permissions_graphwritedestructiveidempotentPermissions

Update the data permissions graph. Must include the 'revision' field from get_permissions_graph for optimistic locking.

ParameterTypeDescription
graph requiredobjectFull permissions graph object with 'revision' and 'groups' keys

update_collection_permissionswritedestructiveidempotentPermissions

Update the collection permissions graph. Must include the 'revision' field from get_collection_permissions for optimistic locking.

ParameterTypeDescription
graph requiredobjectFull collection permissions graph object with 'revision' and 'groups' keys

list_segmentsreadSegments

List all segments

ParameterTypeDescription
table_idnumberFilter segments by table ID

get_segmentreadSegments

Get segment by ID

ParameterTypeDescription
id requirednumberSegment ID

create_segmentwriteSegments

Create a new segment

ParameterTypeDescription
name requiredstringSegment name
table_id requirednumberID of the table this segment applies to
definition requiredobjectMBQL filter clause defining the segment, e.g. { "filter": [">", ["field", 4, null], 100] }
descriptionstringOptional segment description

update_segmentwritedestructiveidempotentSegments

Update an existing segment

ParameterTypeDescription
id requirednumberSegment ID
revision_message requiredstringRequired audit trail message describing the reason for this update
namestringNew segment name
definitionobjectUpdated MBQL filter clause
descriptionstringUpdated description
archivedbooleanSet to true to archive the segment

delete_segmentwritedestructiveidempotentSegments

Delete (archive) a segment

ParameterTypeDescription
id requirednumberSegment ID
revision_message requiredstringRequired audit trail message describing the reason for deletion

list_revisionsreadRevisions

List revision history for a card or dashboard

ParameterTypeDescription
entity requiredstring (card | dashboard)Entity type
id requirednumberCard or dashboard ID

revert_revisionwritedestructiveRevisions

Revert a card or dashboard to a prior revision

ParameterTypeDescription
entity requiredstring (card | dashboard)Entity type
id requirednumberCard or dashboard ID
revision_id requirednumberRevision ID to revert to

list_settingsreadSettings

List all Metabase instance settings

No parameters.

get_settingreadSettings

Get a specific Metabase setting value

ParameterTypeDescription
key requiredstringSetting key (e.g., 'site-name', 'enable-public-sharing')

update_settingwritedestructiveidempotentSettings

Update a Metabase setting value

ParameterTypeDescription
key requiredstringSetting key
value requiredobjectNew setting value

list_alertsreadAlerts & Subscriptions

List question alerts (card notifications). Optionally filter by card.

ParameterTypeDescription
card_idnumberOnly alerts on this card
include_inactivebooleanInclude deactivated (deleted) alerts

get_alertreadAlerts & Subscriptions

Get details of a specific alert (notification ID)

ParameterTypeDescription
id requirednumberAlert (notification) ID

list_dashboard_subscriptionsreadAlerts & Subscriptions

List email/Slack subscriptions for a dashboard

ParameterTypeDescription
dashboard_id requirednumberDashboard ID

list_notificationsreadAlerts & Subscriptions

List notifications of any kind (question alerts, system-event notifications). Alerts are payload_type 'notification/card'. Use list_alerts for alerts only.

ParameterTypeDescription
payload_typestringe.g. 'notification/card' (alerts) or 'notification/system-event'
card_idnumberOnly notifications on this card
creator_idnumberOnly notifications created by this user
recipient_idnumberOnly notifications this user receives
include_inactivebooleanInclude deactivated notifications

send_notificationwriteAlerts & Subscriptions

Send a notification (e.g. an alert) right now, outside its schedule. Delivers real emails/Slack messages. Metabase 0.64+ allows this only for its creator or an admin.

ParameterTypeDescription
id requirednumberNotification (alert) ID
handler_idsarrayOnly send via these handler (channel) IDs; default all

create_alertwriteAlerts & Subscriptions

Create an alert on a saved question. Metabase checks the question on the cron schedule and notifies the channels when the condition is met.

ParameterTypeDescription
card_id requirednumberCard ID to alert on
send_conditionstring (has_result | goal_above | goal_below)Alert condition (default 'has_result')
send_oncebooleanStop after the first notification (default false)
channels requiredarrayWhere to deliver the alert, e.g. [{ type: 'email', user_ids: [1] }] or [{ type: 'slack', channel: '#alerts' }]
cron_schedulestringQuartz cron schedule for checking the alert, e.g. '0 0 9 * * ? *' (daily 09:00, the default) or '0 0 * * * ? *' (hourly)

update_alertwritedestructiveidempotentAlerts & Subscriptions

Update an existing alert. Only the fields you provide will be changed.

ParameterTypeDescription
id requirednumberAlert (notification) ID
send_conditionstring (has_result | goal_above | goal_below)'has_result' = the question returns any rows; 'goal_above'/'goal_below' = the goal line is crossed
send_oncebooleanStop after the first notification
channelsarrayReplaces all delivery channels
cron_schedulestringQuartz cron schedule for checking the alert, e.g. '0 0 9 * * ? *' (daily 09:00, the default) or '0 0 * * * ? *' (hourly)
activebooleanRe-activate (true) or deactivate (false) the alert

delete_alertwritedestructiveidempotentAlerts & Subscriptions

Delete an alert (Metabase deactivates it; it can be restored with update_alert active=true)

ParameterTypeDescription
id requirednumberAlert (notification) ID

create_dashboard_subscriptionwriteAlerts & Subscriptions

Create an email or Slack subscription for a dashboard. Subscriptions deliver a snapshot of the dashboard on a schedule. By default includes every question on the dashboard.

ParameterTypeDescription
dashboard_id requirednumberDashboard ID
namestringSubscription name (default: dashboard name)
channels requiredarrayDelivery channels. Email: [{ channel_type: 'email', enabled: true, recipients: [{ id: userId }, { email: 'a@b.c' }], schedule_type: 'weekly', schedule_day: 'mon', schedule_hour: 8 }]. Slack: [{ channel_type: 'slack', enabled: true, details: { channel: '#reports' }, schedule_type: 'daily', schedule_hour: 9 }]
parametersarrayDashboard filter values to apply in the subscription
cardsarrayCards to include: [{ id: cardId, dashboard_card_id, include_csv, include_xls }]. Default: all dashboard questions

update_dashboard_subscriptionwritedestructiveidempotentAlerts & Subscriptions

Update a dashboard subscription (name, schedule, channels, parameters, cards)

ParameterTypeDescription
id requirednumberSubscription ID
namestringUpdated name
channelsarrayUpdated delivery channels
parametersarrayUpdated dashboard filter values
cardsarrayUpdated cards list

delete_dashboard_subscriptionwritedestructiveidempotentAlerts & Subscriptions

Delete a dashboard subscription (Metabase archives it)

ParameterTypeDescription
id requirednumberSubscription ID

generate_xrayreadX-Rays

Generate an automatic X-ray exploratory dashboard for a table

ParameterTypeDescription
table_id requirednumberTable ID to generate X-ray for

invalidate_cachewritedestructiveidempotentCache

Invalidate cached query results

ParameterTypeDescription
databasenumberDatabase ID to invalidate
dashboardnumberDashboard ID to invalidate
cardnumberCard ID to invalidate

update_cache_configwritedestructiveidempotentCache

Update cache strategy for a model (database, dashboard, or card)

ParameterTypeDescription
model requiredstringCache target type: 'root', 'database', 'dashboard', or 'question'
model_id requirednumberID of the target (0 for root)
strategy requiredobjectCache strategy, e.g. { type: 'duration', duration: 3600, unit: 'seconds' } or { type: 'schedule', schedule: 'cron expression' }

persist_modelwriteidempotentModel Persistence

Enable persistence (materialization) for a model card

ParameterTypeDescription
card_id requirednumberModel card ID to enable persistence for

unpersist_modelwritedestructiveidempotentModel Persistence

Disable persistence (materialization) for a model card

ParameterTypeDescription
card_id requirednumberModel card ID to disable persistence for

refresh_persisted_modelwriteidempotentModel Persistence

Manually trigger a refresh of the materialized data for a persisted model

ParameterTypeDescription
card_id requirednumberModel card ID to refresh persisted data for

upload_csvwriteUploads

Upload a CSV file as a new table in Metabase

ParameterTypeDescription
csv_data requiredstringRaw CSV content to upload
table_name requiredstringName for the new table
collection_idnumberCollection ID to place the resulting model in

get_activityreadActivity & Tasks

Get recent activity: the current user's recently viewed items plus the instance's popular items (prefer get_recent_items / get_popular_items)

No parameters.

get_recent_itemsreadActivity & Tasks

Get the current user's recently viewed and/or selected items (dashboards, questions, tables, collections, documents)

ParameterTypeDescription
contextarrayWhich recents to return (default ['views'])

Get the most popular dashboards, questions and tables across the instance

No parameters.

list_snippetsreadSnippets

List all SQL snippets

No parameters.

get_snippetreadSnippets

Get a SQL snippet by ID

ParameterTypeDescription
id requirednumberSnippet ID

create_snippetwriteSnippets

Create a reusable SQL snippet

ParameterTypeDescription
name requiredstringSnippet name
content requiredstringSQL content
descriptionstringDescription
collection_idnumberSnippet collection ID

update_snippetwritedestructiveidempotentSnippets

Update a SQL snippet

ParameterTypeDescription
id requirednumberSnippet ID
namestringNew name
contentstringNew SQL content
descriptionstringNew description
archivedbooleanArchive the snippet

delete_snippetwritedestructiveidempotentSnippets

Archive (soft-delete) a SQL snippet

ParameterTypeDescription
id requirednumberSnippet ID

list_glossary_termsreadGlossary

List all business glossary terms

No parameters.

get_glossary_termreadGlossary

Get a glossary term by ID

ParameterTypeDescription
id requirednumberGlossary term ID

create_glossary_termwriteGlossary

Create a business glossary term

ParameterTypeDescription
term requiredstringThe term to define
definition requiredstringDefinition of the term

update_glossary_termwritedestructiveidempotentGlossary

Update a glossary term

ParameterTypeDescription
id requirednumberGlossary term ID
termstringUpdated term
definitionstringUpdated definition

delete_glossary_termwritedestructiveidempotentGlossary

Delete a glossary term

ParameterTypeDescription
id requirednumberGlossary term ID

list_documentsreadDocuments

List all narrative analytics documents

No parameters.

get_documentreadDocuments

Get a document by ID

ParameterTypeDescription
id requirednumberDocument ID

create_documentwriteDocuments

Create a narrative analytics document

ParameterTypeDescription
name requiredstringDocument name
collection_idnumberCollection ID to place the document in
documentobjectDocument body as a ProseMirror JSON doc, e.g. {"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Hello"}]}]}
textstringPlain-text shortcut for the body: paragraphs separated by blank lines (ignored if document is given)
contentobjectDeprecated alias for document

update_documentwritedestructiveidempotentDocuments

Update a document

ParameterTypeDescription
id requirednumberDocument ID
namestringUpdated document name
collection_idnumberUpdated collection ID
documentobjectDocument body as a ProseMirror JSON doc, e.g. {"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Hello"}]}]}
textstringPlain-text shortcut for the body: paragraphs separated by blank lines (ignored if document is given)
contentobjectDeprecated alias for document
archivedbooleanArchive the document

delete_documentwritedestructiveidempotentDocuments

Permanently delete a document (archives it first, as Metabase requires)

ParameterTypeDescription
id requirednumberDocument ID

list_timelinesreadTimelines

List all timelines

ParameterTypeDescription
collection_idnumberFilter timelines by collection ID

get_timelinereadTimelines

Get a timeline by ID

ParameterTypeDescription
id requirednumberTimeline ID

create_timelinewriteTimelines

Create a timeline for annotating charts

ParameterTypeDescription
name requiredstringTimeline name
collection_idnumberCollection ID to place the timeline in
iconstringIcon name (default: star)
defaultbooleanWhether this is the default timeline

update_timelinewritedestructiveidempotentTimelines

Update a timeline

ParameterTypeDescription
id requirednumberTimeline ID
namestringUpdated timeline name
iconstringUpdated icon name
defaultbooleanWhether this is the default timeline
archivedbooleanArchive the timeline

delete_timelinewritedestructiveidempotentTimelines

Delete a timeline

ParameterTypeDescription
id requirednumberTimeline ID

create_timeline_eventwriteTimelines

Create an event on a timeline

ParameterTypeDescription
timeline_id requirednumberID of the timeline to add the event to
name requiredstringEvent name
timestamp requiredstringEvent timestamp (ISO 8601 format)
descriptionstringEvent description
iconstringIcon name (default: star)
timezonestringTimezone for the event (default: UTC)

update_timeline_eventwritedestructiveidempotentTimelines

Update a timeline event

ParameterTypeDescription
id requirednumberTimeline event ID
namestringUpdated event name
timestampstringUpdated event timestamp (ISO 8601 format)
descriptionstringUpdated event description
iconstringUpdated icon name
archivedbooleanArchive the event

delete_timeline_eventwritedestructiveidempotentTimelines

Delete a timeline event

ParameterTypeDescription
id requirednumberTimeline event ID

list_bookmarksreadBookmarks

List all bookmarks for the current user

No parameters.

create_bookmarkwriteBookmarks

Bookmark a card, dashboard, or collection

ParameterTypeDescription
type requiredstring (card | dashboard | collection)Type of item to bookmark
item_id requirednumberID of the item to bookmark

delete_bookmarkwritedestructiveidempotentBookmarks

Remove a bookmark from a card, dashboard, or collection

ParameterTypeDescription
type requiredstring (card | dashboard | collection)Type of bookmarked item
item_id requirednumberID of the bookmarked item

create_moderation_reviewwriteModeration

Mark a card or dashboard as verified or remove verification (Pro/Enterprise)

ParameterTypeDescription
moderated_item_id requirednumberCard or dashboard ID
moderated_item_type requiredstring (card | dashboard)Item type
status requiredunionSet to 'verified' to verify, or null to remove verification

translate_entity_idsreadEID Translation

Translate serialization entity IDs to API integer IDs

ParameterTypeDescription
entity_ids requiredobjectMap of entity type to array of entity IDs. Example: { "card": ["abc123", "def456"], "dashboard": ["ghi789"] }

list_metricsreadMetrics

List metrics: the curated, governed numbers defined in Metabase (e.g. Revenue, Number of Orders)

No parameters.

get_metricreadMetrics

Get a metric's definition (Metabase 0.64+ also returns its dimensions)

ParameterTypeDescription
id requirednumberMetric (card) ID

run_metricreadMetrics

Compute a metric (or measure) with optional filters and breakouts, without writing a query. Get dimension IDs from list_metric_dimensions. For metric math pass a raw definition, e.g. { expression: ['/', {}, ['metric', {'lib/uuid': 'a'}, 1], ['metric', {'lib/uuid': 'b'}, 2]] }. Metabase 0.60+.

ParameterTypeDescription
metric_idnumberMetric ID to compute
measure_idnumberMeasure ID to compute (instead of a metric)
filtersarrayFilters on the metric's dimensions (combined with AND)
breakoutsarrayGroup the result by these dimensions
definitionobjectRaw /api/metric/dataset definition (expression, filters, projections); overrides the other inputs
max_rowsintegerMax rows to return (capped by METABASE_MAX_ROWS, default 500)
offsetintegerSkip this many result rows first, for paging through a large result
verbosebooleanReturn the raw Metabase response (column internals, results_metadata, insights) instead of the compact columns + rows view

list_metric_dimensionsreadMetrics

List the dimensions (columns) a metric can be filtered or broken out by, with their IDs. Metabase 0.64+.

ParameterTypeDescription
id requirednumberMetric ID

get_metric_dimension_valuesreadMetrics

Get the distinct values of a metric dimension, optionally searching them. Useful before filtering. Metabase 0.64+.

ParameterTypeDescription
id requirednumberMetric ID
dimension_id requiredstringDimension ID from list_metric_dimensions
querystringSearch text; omit to list values

create_metricwriteMetrics

Create a metric: a saved aggregation others can reuse. dataset_query must aggregate exactly once, e.g. { database: 1, type: 'query', query: { 'source-table': 2, aggregation: [['sum', ['field', 5, null]]] } }

ParameterTypeDescription
name requiredstringMetric name
dataset_query requiredobjectQuery with a single aggregation (legacy MBQL or MBQL 5)
descriptionstringWhat the metric means
collection_idnumberCollection to save it in

update_metricwritedestructiveidempotentMetrics

Update a metric's name, description, definition or collection; archived: true archives it

ParameterTypeDescription
id requirednumberMetric ID
namestringNew name
dataset_queryobjectNew definition (single aggregation)
descriptionstringNew description
collection_idnumberMove to collection
archivedbooleanArchive (true) or restore (false)

list_measuresreadMeasures

List measures: reusable, table-scoped aggregations (e.g. 'Revenue = sum of Total')

No parameters.

get_measurereadMeasures

Get a measure by ID

ParameterTypeDescription
id requirednumberMeasure ID

create_measurewriteMeasures

Create a measure on a table. Run it with run_metric (measure_id).

ParameterTypeDescription
name requiredstringMeasure name
table_id requirednumberTable the measure aggregates
definition requiredobjectAggregation defining the measure, e.g. { aggregation: [['sum', ['field', 5, null]]] }, or a full query ({ database, type: 'query', query: { 'source-table', aggregation } })
descriptionstringWhat the measure means

update_measurewritedestructiveidempotentMeasures

Update a measure; archived: true archives it

ParameterTypeDescription
id requirednumberMeasure ID
revision_message requiredstringAudit message describing the change
namestringNew name
definitionobjectAggregation defining the measure, e.g. { aggregation: [['sum', ['field', 5, null]]] }, or a full query ({ database, type: 'query', query: { 'source-table', aggregation } })
descriptionstringNew description
archivedbooleanArchive (true) or restore (false)

list_transformsreadTransforms

List transforms. Transforms write a query's result into a warehouse table. Self-hosted Metabase must enable them (MB_TRANSFORMS_ENABLED=true); the sample database can't be a target.

ParameterTypeDescription
database_idnumberOnly transforms on this database
tag_idsarrayOnly transforms with these tags

get_transformreadTransforms

Get a transform: source query, target table, last run

ParameterTypeDescription
id requirednumberTransform ID

list_transform_runsreadTransforms

List transform runs (status, start/end time, message), newest first

ParameterTypeDescription
transform_idsarrayOnly runs of these transforms
statusesarraye.g. ['started', 'succeeded', 'failed']

get_transform_runreadTransforms

Get one transform run

ParameterTypeDescription
run_id requirednumberRun ID

list_transform_jobsreadTransforms

List transform jobs: cron schedules that run every transform carrying one of the job's tags

No parameters.

list_transform_tagsreadTransforms

List transform tags

No parameters.

create_transformwriteTransforms

Create a transform that materialises a query into a table. Transforms write a query's result into a warehouse table. Self-hosted Metabase must enable them (MB_TRANSFORMS_ENABLED=true); the sample database can't be a target.

ParameterTypeDescription
name requiredstringTransform name
sqlstringNative SQL whose result becomes the table (needs database_id)
database_idnumberDatabase to run sql against (also the target database)
queryobjectA full dataset_query instead of sql
sourceobjectRaw transform source, e.g. { type: 'query', query: {...} }; overrides sql/query
target_table requiredstringName of the table to create/replace
target_schemastringSchema for the table (e.g. 'public'); omit for schema-less databases
descriptionstringDescription
collection_idnumberCollection to file the transform in
tag_idsarrayTags (jobs run transforms by tag)

update_transformwritedestructiveidempotentTransforms

Update a transform's name, description, source query, target or tags

ParameterTypeDescription
id requirednumberTransform ID
namestringNew name
descriptionstringNew description
sqlstringNative SQL whose result becomes the table (needs database_id)
database_idnumberDatabase to run sql against (also the target database)
queryobjectA full dataset_query instead of sql
sourceobjectRaw transform source, e.g. { type: 'query', query: {...} }; overrides sql/query
target_tablestringNew target table name
target_schemastringNew target schema
tag_idsarrayReplace tags

delete_transformwritedestructiveidempotentTransforms

Delete a transform. drop_table: true also drops the table it produced.

ParameterTypeDescription
id requirednumberTransform ID
drop_tablebooleanAlso drop the target table (default false)

run_transformwriteTransforms

Run a transform now. Returns a run_id; poll get_transform_run or list_transform_runs for the result.

ParameterTypeDescription
id requirednumberTransform ID

cancel_transform_runwritedestructiveTransforms

Cancel the transform's current run

ParameterTypeDescription
id requirednumberTransform ID

create_transform_jobwriteTransforms

Create a transform job that runs all transforms with the given tags on a schedule

ParameterTypeDescription
name requiredstringJob name
schedule requiredstringQuartz cron, e.g. '0 0 3 * * ? *' (daily 03:00)
tag_idsarrayTransform tags this job runs
descriptionstringDescription

run_transform_jobwriteTransforms

Run a transform job now

ParameterTypeDescription
job_id requirednumberJob ID

delete_transform_jobwritedestructiveidempotentTransforms

Delete a transform job (the transforms stay)

ParameterTypeDescription
job_id requirednumberJob ID

create_transform_tagwriteTransforms

Create a transform tag

ParameterTypeDescription
name requiredstringTag name

export_card_queryreadExports

Export a saved question's full results as csv, json or xlsx (all rows, unlike execute_card_query's 2000-row cap)

ParameterTypeDescription
card_id requirednumberCard ID
format requiredstring (csv | json | xlsx)File format
parameter_valuesobjectTemplate tag values, as for execute_card_query
format_rowsbooleanApply Metabase column formatting (default false: raw values)
output_pathstringAbsolute path on the MCP server's machine to save the file to. Required for xlsx/pdf; for csv/json omit it to get the content inline.
overwritebooleanReplace output_path if it exists (default false)
max_inline_charsnumberMax characters returned inline for csv/json (default 100000); longer output is truncated

export_queryreadExports

Export an ad-hoc query's results as csv, json or xlsx. WARNING: the SQL is sent as-is; this server does not block INSERT/UPDATE/DELETE/DDL. Whether it can change data depends only on the Metabase API key's permissions and the database user's grants.

ParameterTypeDescription
query requiredobjectdataset_query, e.g. { database: 1, type: 'native', native: { query: 'SELECT ...' } }
format requiredstring (csv | json | xlsx)File format
format_rowsbooleanApply Metabase column formatting (default false)
output_pathstringAbsolute path on the MCP server's machine to save the file to. Required for xlsx/pdf; for csv/json omit it to get the content inline.
overwritebooleanReplace output_path if it exists (default false)
max_inline_charsnumberMax characters returned inline for csv/json (default 100000); longer output is truncated

export_dashboard_pdfreadExports

Render a dashboard to PDF on the Metabase server and save it to output_path. Metabase 0.64+.

ParameterTypeDescription
dashboard_id requirednumberDashboard ID
output_path requiredstringAbsolute path to save the PDF to
overwritebooleanReplace output_path if it exists (default false)
paper_sizestring (a4 | letter)Paper size (default a4)
parametersarrayDashboard filter values, e.g. [{ id: '<parameter id>', value: ['Widget'] }]

list_api_keysreadAPI Keys

List Metabase API keys (masked) with the group each one acts as. Admin only.

No parameters.

create_api_keywriteAPI Keys

Create an API key that acts with the permissions of one group. The full key (unmasked_key) is returned only once: store it right away. Admin only.

ParameterTypeDescription
name requiredstringKey name, e.g. 'etl-pipeline'
group_id requirednumberGroup whose permissions the key gets (see list_groups). Note: every key is also in All Users.

update_api_keywritedestructiveidempotentAPI Keys

Rename an API key or move it to another group. Admin only.

ParameterTypeDescription
id requirednumberAPI key ID
namestringNew name
group_idnumberNew group ID

regenerate_api_keywritedestructiveAPI Keys

Replace an API key's secret. The old key stops working immediately; the new one (unmasked_key) is shown only once. Admin only.

ParameterTypeDescription
id requirednumberAPI key ID

delete_api_keywritedestructiveidempotentAPI Keys

Delete an API key; anything using it loses access immediately. Admin only.

ParameterTypeDescription
id requirednumberAPI key ID

get_embedding_statusreadEmbedding

Embedding settings (static / interactive / SDK), whether a signing key exists (never its value), and which cards and dashboards are embeddable. Admin only.

No parameters.

create_embed_urlreadEmbedding

Create a signed static-embedding iframe URL for a card or dashboard that has embedding enabled. Signed locally with the instance's embedding secret key; the key is never returned. Admin only.

ParameterTypeDescription
resource requiredstring (card | dashboard)What to embed
id requirednumberCard or dashboard ID
paramsobjectValues for locked parameters, by slug, e.g. { category: 'Widget' }
expires_in_minutesintegerToken lifetime (default 10)
borderedbooleanShow a border (default true)
titledbooleanShow the title (default true)
themestring (light | night | transparent)Color theme

set_static_embeddingwritedestructiveidempotentEmbedding

Turn static (signed) embedding on or off for the whole instance. Turning it off breaks existing embeds. Admin only.

ParameterTypeDescription
enabled requiredbooleantrue to enable, false to disable

set_resource_embeddingwritedestructiveidempotentEmbedding

Allow or stop static embedding of one card or dashboard, and choose per parameter whether embedders may change it (enabled), must set it in the token (locked) or never see it (disabled). Admin only.

ParameterTypeDescription
resource requiredstring (card | dashboard)What to embed
id requirednumberCard or dashboard ID
enabled requiredbooleanAllow embedding
embedding_paramsobjectPer parameter slug: 'enabled' | 'locked' | 'disabled'

list_tasksreadTasks & Logs

Background task history (sync, analyze, field values, fingerprinting, notification sends, transform runs), newest first. Use to debug slow or failing syncs. Admin only.

ParameterTypeDescription
statusstring (success | failed | started | unknown)Only tasks with this status
taskstringOnly this task type (see list_task_types), e.g. 'sync'
limitintegerPage size (default 50)
offsetintegerSkip this many tasks
verbosebooleanInclude each task's log lines

get_taskreadTasks & Logs

One background task with its details and log lines. Admin only.

ParameterTypeDescription
id requirednumberTask ID from list_tasks

list_task_typesreadTasks & Logs

Task type names usable as list_tasks' task filter. Admin only.

No parameters.

list_task_runsreadTasks & Logs

Grouped task runs: one sync/analyze/fingerprint run of a database with success/failure counts. Admin only.

ParameterTypeDescription
limitintegerPage size (default 50)
offsetintegerSkip this many runs

get_scheduler_inforeadTasks & Logs

Quartz scheduler status and every scheduled job with its triggers and next fire time. Admin only.

No parameters.

get_server_logsreadTasks & Logs

Recent Metabase server log lines (the last ~250 kept in memory), newest first, ANSI colors stripped. Admin only.

ParameterTypeDescription
levelstring (ERROR | WARN | INFO | DEBUG | TRACE)Minimum level
containsstringOnly lines whose message or logger contains this text
limitintegerMax lines (default 100)

list_log_presetsreadTasks & Logs

Logging presets (groups of loggers for troubleshooting, e.g. sync). Admin only.

No parameters.

get_premium_token_statusreadTasks & Logs

Status of the premium (paid plan) token: validity, features, expiry. Open-source instances report no token. Admin only.

No parameters.

set_log_levelswritedestructiveidempotentTasks & Logs

Temporarily change log levels for some loggers (e.g. from list_log_presets) to debug an issue; Metabase reverts them after the duration. Admin only.

ParameterTypeDescription
log_levels requiredobjectLogger name → level, e.g. { 'metabase.sync': 'debug' }
duration requiredintegerHow long the change lasts
duration_unit requiredstring (seconds | minutes | hours | days)Unit of duration

reset_log_levelswritedestructiveidempotentTasks & Logs

Undo set_log_levels now. Admin only.

No parameters.