add_card_to_dashboard
Add a card/question to a dashboard.
Build and run Metabase from your client: execute a saved question or raw SQL, assemble a dashboard and wire its filters to card variables, and administer collections, groups and users.
LABSCO SUMMARY
The valuable half is what the Metabase UI makes tedious: template-tags on a native query, filter parameters on a dashboard, and the mapping between the two, all reachable through get_card, update_card and update_dashboard_cards. The other half is administration — users, groups, the permissions graph — which puts real authority behind the API key or account you connect with. Deletes lean toward archiving by default, with hard_delete the flag you have to set on purpose.
A server over a Metabase instance's API covering questions, dashboards, collections, permission groups and users in 33 tools.
METABASE_URL plus a Metabase API key in METABASE_API_KEY — the method the project recommends and checks first. Without a key, it signs in with METABASE_USERNAME and METABASE_PASSWORD instead. Whatever that key or account can reach in Metabase is what these tools can reach, including create_user and update_collection_permissions.
One command plus a key — npx -y @imlewc/metabase-server, then supply credentials
USE CASES
Read the card to see which template-tags its query defines, add the variable if it is missing, put the filter parameter on the dashboard, and map the two together so the filter actually drives the card.
Find which registered database holds the data, then run the SQL directly with a row cap instead of building a saved question you will never open again.
Find the cards worth surfacing, create the dashboard in the right collection, and place each card at a row and column with the size it needs.
Create the account, put it in the groups that match their role, and check the collection permissions graph to confirm what those groups actually open up.
Run it once to see what it currently returns, then archive it — or set hard_delete when it should be gone rather than hidden.
See how collections are nested today, create the structure the next team will use, move things under it, and set which group can reach what.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
add_card_to_dashboardAdd a card/question to a dashboard.
add_dashboard_filterAdd or update a filter parameter on a dashboard.
add_user_to_groupAdd a user to a permission group.
create_cardCreate a new Metabase question (card).
create_collectionCreate a new collection in Metabase.
create_dashboardCreate a new Metabase dashboard.
create_permission_groupCreate a new permission group in Metabase.
create_userCreate a new user in Metabase.
delete_cardDelete a Metabase question (card).
delete_dashboardDelete a Metabase dashboard.
delete_permission_groupDelete a permission group in Metabase.
disable_userDisable (deactivate) a user in Metabase. This prevents them from logging in but preserves their data.
execute_cardExecute a Metabase question/card and get results
execute_queryExecute a SQL query against a Metabase database
get_cardGet a single Metabase question/card by ID with full details including dataset_query with template-tags configuration for variables/filters. Use this to inspect a card before updating it.
get_collection_permissionsGet the collection permissions graph showing which groups have access to which collections.
get_dashboardGet full dashboard details including cards and parameters.
get_dashboard_cardsGet all cards in a dashboard
get_userGet details about a specific user including their group memberships.
list_cardsList all questions/cards in Metabase
list_collectionsList all collections in Metabase.
list_dashboardsList all dashboards in Metabase
list_databasesList all databases in Metabase
list_permission_groupsList all permission groups in Metabase.
list_usersList all users in Metabase.
remove_card_from_dashboardRemove a card from a dashboard.
remove_user_from_groupRemove a user from a permission group.
update_cardUpdate an existing Metabase question (card). For native SQL queries with template variables (like dropdown filters), use dataset_query.native.template-tags to configure each variable. Each template-tag can have: name, display-name, type (text/number/dimension), dimension (for field filters), widget-type (category, string/=, number/=, etc.), and default value.
update_collectionUpdate a collection in Metabase.
update_collection_permissionsUpdate collection permissions for a group. Sets the permission level for a group on a collection.
update_dashboardUpdate an existing Metabase dashboard.
update_dashboard_cardsUpdate dashboard cards including their parameter mappings. Use this to connect dashboard filters to card variables.
update_userUpdate an existing user in Metabase.
BEFORE YOU INSTALL
33 tools when we connected. The documentation covers only six. The rest are live but undocumented, including tools that create and delete dashboards and cards, create and disable users, create permission groups and change collection permissions.
npx on PATH
CONTEXT COST
Rated by the size of the 33 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y @imlewc/metabase-server{
"mcpServers": {
"metabase-server": {
"command": "npx",
"args": [
"-y",
"@imlewc/metabase-server"
],
"env": {
"METABASE_URL": "<YOUR_METABASE_URL>",
"METABASE_API_KEY": "<YOUR_METABASE_API_KEY>"
}
}
}
}<YOUR_METABASE_URL> is your Metabase address. No API key? Set METABASE_USERNAME and METABASE_PASSWORD (your Metabase login) instead of METABASE_API_KEY.
claude mcp add metabase-server -s user -e METABASE_URL="<YOUR_METABASE_URL>" -e METABASE_API_KEY="<YOUR_METABASE_API_KEY>" -- npx -y @imlewc/metabase-server<YOUR_METABASE_URL> is your Metabase address.
{
"mcpServers": {
"metabase-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@imlewc/metabase-server"
],
"env": {
"METABASE_URL": "<YOUR_METABASE_URL>",
"METABASE_USERNAME": "<YOUR_METABASE_USERNAME>",
"METABASE_PASSWORD": "<YOUR_METABASE_PASSWORD>"
}
}
}
}<YOUR_METABASE_URL> is your Metabase address, and <YOUR_METABASE_USERNAME> and <YOUR_METABASE_PASSWORD> are the email and password you sign in to Metabase with.
npx -y @smithery/cli install @imlewc/metabase-server --client claude