Metabase MCP Plus
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Host for SSE/HTTP transport (default: 0.0.0.0) | 0.0.0.0 |
| PORT | No | Port for SSE/HTTP transport (default: 8000) | 8000 |
| METABASE_URL | Yes | The URL of your Metabase instance (e.g., https://your-metabase-instance.com) | |
| METABASE_API_KEY | No | Your Metabase API key (alternative to email/password) | |
| METABASE_PASSWORD | No | Your Metabase password (for email/password authentication) | |
| METABASE_USER_EMAIL | No | Your Metabase user email (for email/password authentication) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_cardsB | List all saved questions/cards in Metabase. Returns: Dictionary containing all cards with their metadata. |
| get_cardA | Get detailed information about a specific card/question. Args: card_id: The ID of the card to retrieve. Returns: Dictionary with full card metadata including query, visualization settings, and collection info. |
| execute_cardB | 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_cardB | 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. |
| update_cardA | Update an existing card/question in Metabase. Args: card_id: The ID of the card to update. name: New name for the card. description: New description. query: New SQL query (requires database_id). database_id: Database ID for the query. collection_id: Move card to this collection. visualization_settings: New visualization configuration. Returns: The updated card object. |
| archive_cardA | Archive a card/question in Metabase (soft delete). This sets the card's archived status to true, which hides it from normal views but preserves the data. Safer than permanent deletion. Args: card_id: The ID of the card to archive. Returns: The updated card object with archived status. |
| list_collectionsA | List all collections in Metabase. Returns: Dictionary containing all collections with their metadata. |
| get_collection_itemsA | List items inside a specific collection. Args: collection_id: The ID of the collection to browse. models: Optional filter for item types (e.g., ["card", "dashboard", "collection"]). Returns: Dictionary containing the items in the collection. |
| create_collectionB | 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. |
| list_dashboardsA | List all dashboards in Metabase. Returns: A list of dashboard metadata dictionaries. |
| get_dashboardB | Get detailed information about a specific dashboard. Args: dashboard_id: The ID of the dashboard. Returns: Dictionary with full dashboard metadata including cards, parameters, and layout. |
| create_dashboardA | Create a new dashboard in Metabase. Args: name: Name of the dashboard. description: Optional description. collection_id: Optional collection to place the dashboard in. parameters: Optional dashboard filter parameters. Returns: The created dashboard object. |
| update_dashboardA | Update an existing dashboard in Metabase. Args: dashboard_id: The ID of the dashboard to update. name: New name for the dashboard. description: New description. collection_id: Move dashboard to this collection. parameters: New dashboard filter parameters. Returns: The updated dashboard object. |
| delete_dashboardC | Delete a dashboard from Metabase. Args: dashboard_id: The ID of the dashboard to delete. Returns: Confirmation of the deletion. |
| list_databasesA | List all databases configured in Metabase. Returns: A dictionary containing all available databases with their metadata. |
| list_tablesB | 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_fieldsB | 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. |
| get_databaseA | Get detailed information about a specific database. Args: database_id: The ID of the database. Returns: Dictionary with full database metadata including engine, features, and settings. |
| list_database_schemasA | List all schemas in a specific database. Args: database_id: The ID of the database. Returns: A list of schema names available in the database. |
| get_schema_tablesA | List all tables within a specific schema of a database. Args: database_id: The ID of the database. schema_name: The name of the schema. Returns: A list of table metadata dictionaries for the given schema. |
| execute_queryC | 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. |
| searchA | Search across Metabase entities by keyword. Searches cards (questions), dashboards, collections, and tables for matching results. Args: query: The search keyword or phrase. models: Optional filter for entity types (e.g., ["card", "dashboard", "collection", "table"]). Returns: Dictionary containing search results with matched entities. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Each tool has a clearly distinct purpose. For example, list_cards vs get_card (list vs single), execute_card vs execute_query (saved vs ad-hoc), and get_collection_items vs list_collections (items vs collections themselves) are well-differentiated.
All tools follow a consistent verb_noun pattern in snake_case (e.g., list_cards, create_card, execute_query). The pattern is predictable and easy for an agent to infer.
With 22 tools covering cards, dashboards, collections, databases, schemas, tables, fields, search, and execution, the count is well-scoped for a Metabase management server—not too few nor too many.
Core entities like cards and dashboards have CRUD (except card hard delete), but collections lack update/delete and get_collection by ID. Database management is read-only. These gaps may require workarounds.