metabase-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Optional custom host for SSE/HTTP (default 0.0.0.0) | |
| PORT | No | Optional custom port for SSE/HTTP (default 8000) | |
| METABASE_URL | Yes | The URL of your Metabase instance | |
| METABASE_API_KEY | No | Your Metabase API key (recommended) | |
| METABASE_PASSWORD | No | Your Metabase password | |
| METABASE_USER_EMAIL | No | Your Metabase user email | |
| METABASE_HTTP_TIMEOUT | No | Optional HTTP timeout in seconds (default 30.0) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_databasesA | List all databases configured in Metabase. Returns: A dictionary containing all available databases with their metadata. |
| list_tablesA | List all tables in a specific database. Args: database_id: The ID of the database to query. Returns: Formatted markdown table showing table details. |
| get_table_fieldsA | Get all fields/columns in a specific table. Args: table_id: The ID of the table. limit: Maximum number of fields to return (default: 20). Returns: Dictionary with field metadata, truncated if necessary. |
| execute_queryB | Execute a native SQL query against a Metabase database. Args: database_id: The ID of the database to query. query: The SQL query to execute. native_parameters: Optional parameters for the query. Returns: Query execution results. |
| execute_mongodb_queryB | Execute a MongoDB native query against a Metabase database. Args: database_id: The ID of the MongoDB database to query. collection: The MongoDB collection name. query: The MongoDB query (aggregation pipeline array or query object). native_parameters: Optional parameters for the query. Returns: Query execution results. |
| list_cardsB | List all saved questions/cards in Metabase. Returns: Dictionary containing all cards with their metadata. |
| execute_cardA | Execute a saved Metabase question/card and retrieve results. Args: card_id: The ID of the card to execute. parameters: Optional parameters for the card execution. Returns: Card execution results. |
| create_cardA | Create a new question/card in Metabase. Args: name: Name of the card. database_id: ID of the database to query. query: SQL query for the card. description: Optional description. collection_id: Optional collection to place the card in. visualization_settings: Optional visualization configuration. Returns: The created card object. |
| create_mongodb_cardA | Create a new MongoDB question/card in Metabase. Args: name: Name of the card. database_id: ID of the MongoDB database. collection: MongoDB collection name. query: MongoDB query string (aggregation pipeline or query). description: Optional description. collection_id: Optional collection to place the card in. visualization_settings: Optional visualization configuration. Returns: The created MongoDB card object. |
| update_cardA | Update properties of a saved question/card in Metabase. When Args:
card_id: The ID of the card to update.
name: New name for the card.
description: New description for the card.
query: New SQL query for the card.
database_id: New database ID (required if changing query).
display: Display type (e.g. "table", "bar", "line", "pie", "scalar", "row", "area", "combo", "pivot", "smartscalar", "funnel", "waterfall", "map").
collection_id: Move the card to a different collection.
visualization_settings: Visualization settings to apply.
archived: Set to true to archive the card, false to unarchive.
template_tags: Replacement template-tags map (tag-name -> config). If
provided, replaces the card's template-tags. If omitted while
Returns: The updated card object. |
| create_modelA | Create a new model in Metabase. A model is a special type of saved question that acts as a curated dataset. Models can define metadata for their columns and serve as building blocks for other questions. Args: name: Name of the model. database_id: ID of the database to query. query: SQL query that defines the model. description: Optional description of the model. collection_id: Optional collection to place the model in. result_metadata: Optional list of column metadata dicts. Each dict can include keys like "name", "display_name", "base_type", "semantic_type", "description", and "field_ref". visualization_settings: Optional visualization configuration. Returns: The created model object. |
| update_modelA | Update an existing model in Metabase. Args: card_id: The ID of the model to update. name: New name for the model. description: New description for the model. query: New SQL query for the model. database_id: New database ID (required if changing query). collection_id: Move the model to a different collection. result_metadata: Updated column metadata list. Each dict can include keys like "name", "display_name", "base_type", "semantic_type", "description", and "field_ref". visualization_settings: Visualization settings to apply. archived: Set to true to archive the model, false to unarchive. Returns: The updated model object. |
| update_card_displayA | Update the display type of a saved question/card in Metabase. Args: card_id: The ID of the card to update. display: The display type (e.g. "table", "bar", "line", "pie", "scalar", "row", "area", "combo", "pivot", "smartscalar", "funnel", "waterfall", "map"). visualization_settings: Optional visualization settings to apply with the display change. Returns: The updated card object. |
| list_dashboardsA | List all dashboards in Metabase. Returns: A list of dashboards with their metadata including id, name, description, collection_id, and creator info. |
| create_dashboardA | – Returns: The created dashboard object. |
| update_dashboardA | Update properties of a dashboard, including its parameter/filter list. Use Args: dashboard_id: The ID of the dashboard to update. name: New name for the dashboard. description: New description for the dashboard. collection_id: Move the dashboard to a different collection. parameters: Full replacement list of dashboard parameters. archived: Set true to archive, false to unarchive. Returns: The updated dashboard object. |
| set_card_template_tagsA | Set or update the template tags on a card's native SQL query. Metabase auto-creates template tags for each Each entry in
Existing fields (including the auto-generated Args: card_id: The ID of the card whose native query tags should be updated. template_tags: Map of tag-name -> tag-config. merge: If True (default), merge with existing tags. If False, replace entirely. Returns: The updated card object. |
| update_card_parametersA | Set the card-level Card parameters drive the filter widgets shown on a card's own page AND are what Metabase uses to wire dashboard parameters into the card. For a date filter to render as a date picker (instead of a plain text box), the card must have a matching parameter entry — the template-tag type alone is not enough. Each parameter is a dict. Common keys:
Args:
card_id: The ID of the card whose parameters should be updated.
parameters: List of parameter configs. When Returns: The updated card object. |
| set_dashcard_parameter_mappingsA | Wire dashboard parameters to card template tags on specific dashcards. Each mapping entry must include:
Optional per-entry fields:
Existing parameter_mappings on each touched dashcard are preserved and
extended, unless Args: dashboard_id: The ID of the dashboard. mappings: List of mapping entries as described above. replace: If True, replace parameter_mappings on touched dashcards instead of appending. Returns: The updated dashboard object. |
| set_dashcard_inline_parametersA | Attach dashboard filters inline to specific dashcards. By default, dashboard parameters render as filter widgets at the top of the
dashboard. Setting Each entry in
Existing inline_parameters on each touched dashcard are preserved and
extended, unless Note: the dashboard parameter should still be mapped to the card's
template tag via Args: dashboard_id: The ID of the dashboard. inline_parameters: List of entries as described above. replace: If True, replace inline_parameters on touched dashcards instead of appending. Returns: The updated dashboard object. |
| get_dashboard_cardsB | Get the cards and their layout information for a specific dashboard. Returns each card's id, name, display type, size, and position on the dashboard grid (col, row, size_x, size_y). Args: dashboard_id: The ID of the dashboard. Returns: A list of dashboard card objects with layout and card metadata. |
| list_dashboard_tabsA | List all tabs configured on a dashboard. Args: dashboard_id: The ID of the dashboard. Returns: A list of tab objects with id, name, and position. Empty list if the dashboard has no tabs. |
| list_dashboard_tab_cardsA | List the cards belonging to a specific tab on a dashboard. Args: dashboard_id: The ID of the dashboard. tab_id: The ID of the tab (from list_dashboard_tabs). Returns: A list of dashcards on the given tab with layout and card metadata. |
| add_card_to_dashboardA | Add an existing card to a dashboard at a specified position and size. Args: dashboard_id: The ID of the dashboard to add the card to. card_id: The ID of the card to add. col: Column position on the dashboard grid (default: 0). row: Row position on the dashboard grid (default: 0). size_x: Width of the card in grid units (default: 6). size_y: Height of the card in grid units (default: 4). Returns: The created dashboard card object. |
| update_dashboard_card_positionA | Reposition or resize a single card on a dashboard. Only the provided fields are updated; omitted fields keep their current values. Args: dashboard_id: The ID of the dashboard. dashcard_id: The ID of the dashcard (from get_dashboard_cards) to move or resize. col: New column position on the dashboard grid. row: New row position on the dashboard grid. size_x: New width in grid units. size_y: New height in grid units. Returns: The updated dashboard object. |
| reposition_dashboard_cardsA | Reposition and/or resize multiple cards on a dashboard in a single update. Use this to rearrange a dashboard layout atomically. Any dashcards not
included in Args:
dashboard_id: The ID of the dashboard.
positions: A list of layout updates. Each entry must include Returns: The updated dashboard object. |
| list_collectionsA | List all collections in Metabase that the current user has read permissions for. Args: archived: If true, return only archived collections. exclude_other_user_collections: If true, hide other users' personal collections. namespace: Filter collections by namespace (e.g. "snippets" for snippet folders). personal_only: If true, return only personal collections (where personal_owner_id is not null). Returns: Dictionary containing all collections with their metadata. |
| create_collectionA | Create a new collection in Metabase. Args: name: Name of the collection. description: Optional description. color: Optional color for the collection. parent_id: Optional parent collection ID. Returns: The created collection object. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/voducdan/matebase-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server