Skip to main content
Glama
CW-Codewalnut

Metabase MCP Server

update_metabase_dashboard

Modify an existing Metabase dashboard by updating its name, layout, filters, or settings while preserving unchanged elements automatically.

Instructions

Update an existing dashboard in Metabase using structured inputs and auto-fallback behavior.

This function allows partial updates to a dashboard. If you don't pass optional fields like dashcards or tabs, the current values from the existing dashboard will be fetched and reused.

Args: dashboard_id (int): The ID of the dashboard to update.

name (str, optional):
    New name for the dashboard. If not provided, the current name will be retained.

description (str, optional):
    Updated description for the dashboard.

collection_id (int, optional):
    ID of the collection (folder) to move the dashboard into.
    If not provided, the existing collection is kept. However,
    if a new collection has been created,
    it is mandatory to pass the collection ID.
    Failure to do so will result in the dashboard being moved to the default collection,
    where the chart details may not exist.

parameters (List[dict], optional):
    List of dashboard-level filters (used for interactive filtering).
    If omitted, existing parameters will be preserved.

tabs (List[DashboardTab], optional):
    List of tabs to set on the dashboard.
    If not passed, the current tab configuration is reused.
    Each tab includes:
        - `id`: Tab ID (optional if new)
        - `name`: Display name of the tab

dashcards (List[DashboardCard], optional):
    List of cards to place in the dashboard layout.
    If omitted, the existing card layout is retained.
    Each card requires:
        - `id`: Use negative numbers to auto generate the ids 
            or use any unique value but,
            it must be unique within the dashboard
        - `card_id`: ID of the saved chart
        - `row`, `col`: Grid position (top-left = 0,0)
        - `size_x`, `size_y`: Width/height in grid cells
        - `parameter_mappings`: List of filter mappings

points_of_interest (str, optional):
    Free-text notes that appear in the dashboard as "Points of Interest".

caveats (str, optional):
    Free-text notes that appear in the dashboard as "Caveats".

enable_embedding (bool, optional):
    Whether to enable embedding for this dashboard.
    If omitted, the existing setting is reused.

embedding_params (EmbeddingParams, optional):
    Optional embedding configuration. Includes:
        - `url`: Optional embed URL override
        - `custom_css`: Optional custom styling

archived (bool, optional):
    Whether to archive the dashboard. Defaults to existing value if omitted.

position (int, optional):
    Optional global ordering value (affects dashboard listing).

collection_position (int, optional):
    Sort order inside its collection folder.

cache_ttl (int, optional):
    Result caching time in seconds (e.g., 3600 = 1 hour). 0 disables caching.

width (str, optional):
    Dashboard layout mode: "fixed" (grid) or "full" (fluid width).
    Defaults to existing setting if omitted.

show_in_getting_started (bool, optional):
    Whether to show this dashboard in Metabase’s “Getting Started” view.

Returns: Dict[str, Any]: JSON object containing updated dashboard metadata from Metabase. Includes fields like: - id, name, description - dashcards, tabs, parameters - updated_at, created_at, etc.

Behavior: - If dashcards is omitted, the existing layout will be preserved. - If dashcards are passed without an id, id = -1 will be set automatically. - If tabs are omitted, current dashboard tabs are reused. - All unspecified fields fall back to the dashboard's current value.

Example: >>> await update_metabase_dashboard( dashboard_id=1, name="Updated Flight Dashboard", dashcards=[ DashboardCard(card_id=123, row=0, col=0, size_x=4, size_y=3), DashboardCard(card_id=124, row=0, col=4, size_x=4, size_y=3) ], tabs=[DashboardTab(name="Overview")], width="fixed" )

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dashboard_idYes
nameNo
descriptionNo
collection_idNo
parametersNo
tabsNo
dashcardsNo
points_of_interestNo
caveatsNo
enable_embeddingNo
embedding_paramsNo
archivedNo
positionNo
collection_positionNo
cache_ttlNo
widthNo
show_in_getting_startedNo

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CW-Codewalnut/metabase-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server