# io.github.enessari/metabase-ai-assistant (npm · metabase-ai-assistant)

MCP Server for Metabase - 111 tools for SQL generation, dashboards & PostgreSQL

- Trust score: 63/100 (medium)
- Change this week: +39
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `metabase-ai-assistant`: 63/100 (this document), [markdown](https://verifymcp.io/servers/enessari-metabase-ai-assistant/metabase-ai-assistant.md), [page](https://verifymcp.io/servers/enessari-metabase-ai-assistant/metabase-ai-assistant)

## Channel facts

- Registry: `npm`
- Package: `metabase-ai-assistant`
- Version: `3.2.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 83/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects hono 4.12.33, reached via @modelcontextprotocol/sdk > hono. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (250 of 289), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 173 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 70/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 7745 tokens (~63/item across 122 items; 122 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add enessari-metabase-ai-assistant -- npx -y metabase-ai-assistant
```

### Codex

```bash
codex mcp add enessari-metabase-ai-assistant -- npx -y metabase-ai-assistant
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "enessari-metabase-ai-assistant": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "metabase-ai-assistant"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add enessari-metabase-ai-assistant --command npx --arg -y --arg metabase-ai-assistant
```

### Hermes

```yaml
mcp_servers:
  enessari-metabase-ai-assistant:
    command: "npx"
    args: ["-y", "metabase-ai-assistant"]
```

### Other

```json
{
  "mcpServers": {
    "enessari-metabase-ai-assistant": {
      "command": "npx",
      "args": [
        "-y",
        "metabase-ai-assistant"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 63, +29)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: good
- [functional] First check of Schema quality: pass
- [functional] First check of Schema quality: fail

### 2026-08-02 (score 34, +29)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Security disclosure: fail → unverified
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional] Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional] Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.
- [functional] Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.
- [functional] Licence: Apache-2.0

### 2026-07-31 (score 5, −19)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 24, 0)

- [functional] Tool coverage: Tool coverage not yet verified: our sandbox run of this package did not complete, so we have no tool definitions to assess.
- [functional] Schema quality: Schema quality not yet verified: our sandbox run of this package did not complete, so we have no schema to assess.

### 2026-07-27 (score 24)

First indexed and scored.

## MCP tools (122)

### `db_list` (~23 tokens)

Get list of all databases in Metabase instance with IDs and connection types

### `db_test_speed` (~39 tokens)

Check database response time and performance - run this before heavy operations to determine optimal timeout settings

Input parameters:

- `database_id` (number, required): Database ID to test

### `db_schemas` (~37 tokens)

Get all schema names in specified database - useful for data exploration and finding business data locations

Input parameters:

- `database_id` (number, required): Database ID

### `db_tables` (~35 tokens)

Get comprehensive table list across all schemas with field counts - provides overview of data structure

Input parameters:

- `database_id` (number, required): Database ID

### `sql_execute` (~52 tokens)

Run SQL queries against database - supports SELECT, DDL with security controls, returns formatted results

Input parameters:

- `database_id` (number, required): Database ID to execute query against
- `sql` (string, required): SQL query to execute

### `mb_question_create` (~79 tokens)

Create new question/chart

Input parameters:

- `collection_id` (number): Collection ID to save the question to (optional)
- `database_id` (number, required): Database ID to query
- `description` (string, required): Description of what the question shows
- `name` (string, required): Name for the question
- `sql` (string, required): SQL query for the question

### `mb_questions` (~39 tokens)

Browse saved questions and charts in Metabase - filter by collection to find specific reports

Input parameters:

- `collection_id` (number): Filter by collection ID (optional)

### `mb_dashboard_create` (~81 tokens)

Create a new dashboard in Metabase with layout options

Input parameters:

- `collection_id` (number): Collection ID to save dashboard to (optional)
- `description` (string, required): Dashboard description
- `name` (string, required): Dashboard name
- `template` (string): Dashboard template type
- `width` (number): Dashboard width in grid units (default: 12)

### `mb_dashboard_template_executive` (~127 tokens)

Create an executive dashboard with standard KPIs, metrics, and layout - auto-generates questions and arranges them professionally

Input parameters:

- `business_domain` (string): Business domain (e.g., ecommerce, saas, retail, finance)
- `collection_id` (number): Collection ID to save dashboard to (optional)
- `database_id` (number, required): Database ID to analyze and create dashboard for
- `name` (string, required): Dashboard name
- `schema_name` (string): Target schema name for analysis (optional)
- `time_period` (string): Default time period for metrics

### `mb_dashboards` (~13 tokens)

List existing dashboards

### `mb_question_create_parametric` (~124 tokens)

Create a parametric question with filters, variables, and dynamic queries - supports date ranges, dropdowns, and field filters

Input parameters:

- `collection_id` (number): Collection ID to save question to (optional)
- `database_id` (number, required): Database ID
- `description` (string): Question description
- `name` (string, required): Question name
- `parameters` (array): Parameter definitions for the question
- `sql` (string, required): SQL query with parameter placeholders (e.g., {{date_range}}, {{category_filter}})
- `visualization` (string): Chart type

### `mb_dashboard_add_card` (~83 tokens)

Add a question card to a dashboard with specific positioning, sizing, and layout

Input parameters:

- `dashboard_id` (number, required): Dashboard ID to add card to
- `parameter_mappings` (array): Connect dashboard filters to question parameters
- `position` (object): Card position and size on dashboard grid
- `question_id` (number, required): Question ID to add as card

### `web_fetch_metabase_docs` (~69 tokens)

Fetch specific Metabase documentation page for API details, best practices, and feature information

Input parameters:

- `search_terms` (string): Specific terms to search in documentation
- `topic` (string, required): Documentation topic to fetch (e.g., "dashboard-api", "questions", "parameters", "charts")

### `web_explore_metabase_docs` (~91 tokens)

Comprehensively explore Metabase documentation - crawls main docs and discovers all available sections, APIs, and guides

Input parameters:

- `depth` (number): Crawling depth (1=main sections, 2=subsections, 3=deep crawl)
- `focus_areas` (array): Specific areas to focus on during exploration
- `include_examples` (boolean): Include code examples and API samples

### `web_search_metabase_docs` (~85 tokens)

Search across all Metabase documentation for specific topics, APIs, or solutions - uses intelligent content analysis

Input parameters:

- `doc_type` (string): Type of documentation to prioritize
- `max_results` (number): Maximum number of relevant pages to return
- `query` (string, required): Search query (e.g., "dashboard API create card", "parameter filters", "embedding iframe")

### `web_metabase_api_reference` (~66 tokens)

Get comprehensive Metabase API reference with endpoints, parameters, examples, and response formats

Input parameters:

- `auth_info` (boolean): Include authentication and permission details
- `endpoint_category` (string): API category to explore
- `include_examples` (boolean): Include request/response examples

### `mb_metric_create` (~83 tokens)

Create a custom metric definition in Metabase for KPI tracking and business intelligence

Input parameters:

- `aggregation` (object, required): Metric aggregation definition
- `description` (string, required): Metric description and business context
- `filters` (array): Optional filters to apply to metric calculation
- `name` (string, required): Metric name
- `table_id` (number, required): Base table ID for the metric

### `mb_dashboard_add_filter` (~112 tokens)

Add a filter to a dashboard for interactive data filtering across multiple cards

Input parameters:

- `dashboard_id` (number, required): Dashboard ID to add filter to
- `default_value`: Default filter value (optional)
- `field_id` (number): Field ID to filter on (optional for some filter types)
- `name` (string, required): Filter display name
- `position` (object): Filter position in dashboard header
- `required` (boolean): Whether filter is required
- `type` (string, required): Filter type and operator

### `mb_dashboard_layout_optimize` (~76 tokens)

Automatically optimize dashboard layout for better visual hierarchy and user experience

Input parameters:

- `dashboard_id` (number, required): Dashboard ID to optimize
- `grid_width` (number): Dashboard grid width (default: 12)
- `layout_style` (string): Layout optimization style
- `preserve_order` (boolean): Keep existing card order when optimizing

### `mb_auto_describe` (~68 tokens)

Automatically generate AI-powered descriptions for databases, tables, and fields with timestamp signatures

Input parameters:

- `database_id` (number, required): Database ID to generate descriptions for
- `force_update` (boolean): Update existing descriptions (default: false)
- `target_type` (string): What to generate descriptions for

### `ai_sql_generate` (~54 tokens)

Convert natural language requests into SQL queries - understands business context and table relationships

Input parameters:

- `database_id` (number, required): Database ID to generate query for
- `description` (string, required): Natural language description of what you want to query

### `ai_sql_optimize` (~39 tokens)

Analyze and improve SQL query performance - suggests indexes, query restructuring, and execution optimizations

Input parameters:

- `sql` (string, required): SQL query to optimize

### `ai_sql_explain` (~40 tokens)

Break down complex SQL queries into plain English - explains joins, aggregations, and business logic

Input parameters:

- `sql` (string, required): SQL query to explain

### `db_connection_info` (~36 tokens)

Get database connection information from Metabase (requires admin permissions)

Input parameters:

- `database_id` (number, required): Database ID to get connection info for

### `db_table_create` (~117 tokens)

Create new table directly in database with security controls - requires schema selection and approval

Input parameters:

- `approved` (boolean): Set to true to confirm execution
- `columns` (array, required): Array of column definitions
- `database_id` (number, required): Database ID to create table in
- `dry_run` (boolean): Set to true to preview without executing
- `schema` (string): Target schema name (optional, uses database default if not specified)
- `table_name` (string, required): Table name (claude_ai_ prefix will be added automatically)

### `db_view_create` (~119 tokens)

Create a new view directly in the database (with claude_ai_ prefix)

Input parameters:

- `approved` (boolean): Set to true to confirm execution
- `database_id` (number, required): Database ID to create view in
- `dry_run` (boolean): Set to true to preview without executing
- `schema` (string): Target schema name (optional, uses database default if not specified)
- `select_sql` (string, required): SELECT statement for the view
- `view_name` (string, required): View name (claude_ai_ prefix will be added automatically)

### `db_matview_create` (~125 tokens)

Create a new materialized view directly in the database (PostgreSQL only)

Input parameters:

- `approved` (boolean): Set to true to confirm execution
- `database_id` (number, required): Database ID to create materialized view in
- `dry_run` (boolean): Set to true to preview without executing
- `schema` (string): Target schema name (optional, uses database default if not specified)
- `select_sql` (string, required): SELECT statement for the materialized view
- `view_name` (string, required): Materialized view name (claude_ai_ prefix will be added)

### `db_index_create` (~128 tokens)

Create database index for query performance - improves search and join operations on specified columns

Input parameters:

- `approved` (boolean): Set to true to confirm execution
- `columns` (array, required): Array of column names or single column name
- `database_id` (number, required): Database ID to create index in
- `dry_run` (boolean): Set to true to preview without executing
- `index_name` (string, required): Index name (claude_ai_ prefix will be added automatically)
- `table_name` (string, required): Table name to create index on
- `unique` (boolean): Whether to create unique index

### `db_table_ddl` (~47 tokens)

Get the DDL (CREATE statement) for a table

Input parameters:

- `database_id` (number, required): Database ID
- `table_name` (string, required): Table name to get DDL for

### `db_view_ddl` (~47 tokens)

Get the DDL (CREATE statement) for a view

Input parameters:

- `database_id` (number, required): Database ID
- `view_name` (string, required): View name to get DDL for

### `db_ai_list` (~38 tokens)

List all database objects created by AI (with claude_ai_ prefix)

Input parameters:

- `database_id` (number, required): Database ID to list objects from

### `db_ai_drop` (~101 tokens)

Safely remove AI-created database objects - only works on objects with claude_ai_ prefix for security

Input parameters:

- `approved` (boolean): Set to true to confirm deletion
- `database_id` (number, required): Database ID
- `dry_run` (boolean): Set to true to preview without executing
- `object_name` (string, required): Object name to drop (must have claude_ai_ prefix)
- `object_type` (string, required): Type of object to drop

### `db_schema_explore` (~67 tokens)

Fast schema exploration with table counts and basic info - lightweight method for discovering data structure

Input parameters:

- `database_id` (number, required): Database ID
- `limit` (number): Maximum number of tables to return (default: 20)
- `schema_name` (string, required): Schema name to explore

### `db_test_speed` (~31 tokens)

Quick test to check database connection and response time

Input parameters:

- `database_id` (number, required): Database ID to test

### `db_schema_analyze` (~99 tokens)

Deep schema analysis with column details, keys, constraints - requires direct DB connection for comprehensive insights

Input parameters:

- `database_id` (number, required): Database ID
- `include_columns` (boolean): Include detailed column information
- `limit` (number): Maximum number of tables to analyze (default: 10)
- `schema_name` (string, required): Schema name to explore
- `timeout_seconds` (number): Maximum execution time in seconds (default: 30)

### `db_relationships_detect` (~66 tokens)

Detect existing foreign key relationships between tables - finds explicitly defined database constraints

Input parameters:

- `database_id` (number, required): Database ID
- `schema_name` (string, required): Schema name to analyze
- `table_names` (array): Specific tables to analyze (optional, analyzes all if not provided)

### `ai_relationships_suggest` (~68 tokens)

AI-powered virtual relationship discovery using naming patterns and data analysis - finds implicit connections between tables

Input parameters:

- `confidence_threshold` (number): Minimum confidence level (0.0-1.0)
- `database_id` (number, required): Database ID
- `schema_name` (string, required): Schema name

### `mb_relationships_create` (~63 tokens)

Create virtual relationships in Metabase model - enables cross-table queries and improved dashboard capabilities

Input parameters:

- `confirmed` (boolean): Confirm that relationships have been reviewed
- `database_id` (number, required): Database ID
- `relationships` (array, required): Array of confirmed relationships to create

### `activity_log_init` (~55 tokens)

Initialize activity logging system for a database - creates log table and starts tracking operations

Input parameters:

- `database_id` (number, required): Database ID to initialize logging for
- `schema` (string): Schema name for log table (default: public)

### `activity_session_summary` (~40 tokens)

Get comprehensive summary of current or specified session activities and performance

Input parameters:

- `session_id` (string): Session ID to analyze (optional, defaults to current session)

### `activity_operation_stats` (~36 tokens)

Analyze operation statistics and patterns over specified time period

Input parameters:

- `days` (number): Number of days to analyze (default: 7)

### `activity_database_usage` (~39 tokens)

Get database usage patterns and statistics showing which databases are most active

Input parameters:

- `days` (number): Number of days to analyze (default: 30)

### `activity_error_analysis` (~38 tokens)

Analyze error patterns and common failure points to identify improvement opportunities

Input parameters:

- `days` (number): Number of days to analyze (default: 7)

### `activity_performance_insights` (~38 tokens)

Get performance insights showing slow operations and optimization opportunities

Input parameters:

- `days` (number): Number of days to analyze (default: 7)

### `activity_timeline` (~55 tokens)

Get chronological timeline of recent activities for debugging and monitoring

Input parameters:

- `days` (number): Number of days to show (default: 7)
- `limit` (number): Maximum number of activities to return (default: 100)

### `activity_cleanup` (~56 tokens)

Clean up old activity logs to maintain performance and storage efficiency

Input parameters:

- `dry_run` (boolean): Preview what would be deleted without actually deleting
- `retention_days` (number): Keep logs newer than this many days (default: 90)

### `definition_tables_init` (~39 tokens)

Initialize definition lookup tables system for documentation, metrics, templates, and search

Input parameters:

- `database_id` (number, required): Database ID to create definition tables in

### `definition_search_terms` (~63 tokens)

Search business terms and definitions with relevance ranking

Input parameters:

- `category` (string): Optional category filter (customer_metrics, revenue_metrics, etc.)
- `database_id` (number, required): Database ID to search in
- `search_term` (string, required): Term to search for in definitions

### `definition_get_metric` (~44 tokens)

Get metric definition with calculation formula and business context

Input parameters:

- `database_id` (number, required): Database ID to search in
- `metric_name` (string, required): Metric name to lookup

### `definition_get_template` (~57 tokens)

Get dashboard or question template with layout and configuration

Input parameters:

- `database_id` (number, required): Database ID to search in
- `template_name` (string, required): Template name to lookup
- `template_type` (string, required): Type of template to retrieve

### `definition_global_search` (~66 tokens)

Search across all definition tables with unified results

Input parameters:

- `content_types` (array): Filter by content types (business_terms, metrics, templates, etc.)
- `database_id` (number, required): Database ID to search in
- `search_term` (string, required): Term to search across all definitions

### `parametric_question_create` (~115 tokens)

Create parametric question with date, text search, and category filters

Input parameters:

- `collection_id` (number): Collection ID to save question to
- `database_id` (number, required): Database ID to create question in
- `description` (string): Question description
- `name` (string, required): Question name
- `parameters` (object, required): Parameter definitions with types and defaults
- `question_type` (string)
- `sql_template` (string, required): SQL template with parameter placeholders (e.g., {{date_range}}, {{search_term}})

### `parametric_dashboard_create` (~98 tokens)

Create dashboard with parametric questions and shared filters

Input parameters:

- `collection_id` (number): Collection ID to save dashboard to
- `database_id` (number, required): Database ID to create dashboard in
- `description` (string): Dashboard description
- `filters` (object): Dashboard-level filters
- `layout` (array): Layout configuration for questions
- `name` (string, required): Dashboard name
- `questions` (array, required): Array of question configurations

### `parametric_template_preset` (~84 tokens)

Create parametric question from preset templates (date range analysis, category filter, text search, period comparison)

Input parameters:

- `collection_id` (number): Collection ID to save question to
- `config` (object, required): Configuration for the preset template
- `database_id` (number, required): Database ID to create question in
- `preset_type` (string, required): Preset template type

### `db_vacuum_analyze` (~106 tokens)

Run VACUUM and ANALYZE on PostgreSQL tables to optimize storage and update statistics (PostgreSQL only)

Input parameters:

- `database_id` (number, required): Database ID
- `dry_run` (boolean): Preview command without executing
- `schema_name` (string): Schema name (default: public)
- `table_name` (string): Table name to vacuum/analyze (optional, all tables if not specified)
- `vacuum_type` (string): Type of maintenance operation

### `db_query_explain` (~89 tokens)

Get execution plan for a SQL query - shows how PostgreSQL will execute the query

Input parameters:

- `analyze` (boolean): Actually run the query to get real execution times
- `database_id` (number, required): Database ID
- `format` (string): Output format for the plan
- `sql` (string, required): SQL query to analyze
- `verbose` (boolean): Include additional details in the plan

### `db_table_stats` (~65 tokens)

Get table statistics including row count, size, dead tuples, last vacuum/analyze times

Input parameters:

- `database_id` (number, required): Database ID
- `schema_name` (string): Schema name (default: public)
- `table_name` (string, required): Table name to get stats for

### `db_index_usage` (~63 tokens)

Analyze index usage statistics - find unused or rarely used indexes

Input parameters:

- `database_id` (number, required): Database ID
- `min_size_mb` (number): Minimum index size in MB to include
- `schema_name` (string): Schema name to analyze (default: public)

### `mb_visualization_settings` (~63 tokens)

Get or update visualization settings for a question (chart type, colors, labels, etc.)

Input parameters:

- `display` (string): Chart display type
- `question_id` (number, required): Question ID to get/update visualization for
- `settings` (object): Visualization settings object

### `mb_visualization_recommend` (~64 tokens)

AI-powered visualization recommendation based on query results and data types

Input parameters:

- `data_sample` (object): Sample data to analyze (optional if question_id provided)
- `purpose` (string): Purpose of the visualization
- `question_id` (number, required): Question ID to analyze

### `mb_collection_create` (~68 tokens)

Create a new collection in Metabase for organizing questions and dashboards

Input parameters:

- `color` (string): Collection color (hex code)
- `description` (string): Collection description
- `name` (string, required): Collection name
- `parent_id` (number): Parent collection ID (null for root level)

### `mb_collection_list` (~48 tokens)

List all collections with hierarchy and item counts

Input parameters:

- `include_items` (boolean): Include items in each collection
- `parent_id` (number): Filter by parent collection ID (null for root)

### `mb_collection_move` (~64 tokens)

Move questions, dashboards, or collections to a different collection

Input parameters:

- `item_id` (number, required): ID of the item to move
- `item_type` (string, required): Type of item to move
- `target_collection_id` (number, required): Target collection ID (null for root)

### `mb_action_create` (~111 tokens)

Create a Metabase Action for data modification (INSERT, UPDATE, DELETE)

Input parameters:

- `database_id` (number): Database ID for query actions
- `dataset_query` (object): Query definition for query actions
- `description` (string): Action description
- `model_id` (number, required): Model ID the action belongs to
- `name` (string, required): Action name
- `parameters` (array): Action parameters
- `type` (string, required): Action type
- `visualization_settings` (object): Form visualization settings

### `mb_action_list` (~30 tokens)

List all actions for a model

Input parameters:

- `model_id` (number, required): Model ID to get actions for

### `mb_action_execute` (~41 tokens)

Execute a Metabase action with parameters

Input parameters:

- `action_id` (number, required): Action ID to execute
- `parameters` (object, required): Parameter values for the action

### `mb_alert_create` (~88 tokens)

Create an alert for a question that triggers on specified conditions

Input parameters:

- `alert_above_goal` (boolean): Alert when above goal (for goal condition)
- `alert_condition` (string): Alert condition type
- `alert_first_only` (boolean): Only alert on first occurrence
- `card_id` (number, required): Question/Card ID to create alert for
- `channels` (array): Notification channels

### `mb_alert_list` (~33 tokens)

List all alerts, optionally filtered by question

Input parameters:

- `card_id` (number): Filter alerts by question ID (optional)

### `mb_pulse_create` (~87 tokens)

Create a scheduled report (pulse) that sends dashboards/questions on a schedule

Input parameters:

- `cards` (array, required): Cards to include in the pulse
- `channels` (array, required): Delivery channels (email/slack)
- `collection_id` (number): Collection to save pulse in
- `name` (string, required): Pulse name
- `skip_if_empty` (boolean): Skip sending if no results

### `mb_field_metadata` (~97 tokens)

Get or update field metadata including display name, description, and semantic type

Input parameters:

- `description` (string): Field description
- `display_name` (string): Human-readable display name
- `field_id` (number, required): Field ID to get/update
- `has_field_values` (string): How to show field values in filters
- `semantic_type` (string): Semantic type for the field
- `visibility_type` (string): Field visibility

### `mb_table_metadata` (~68 tokens)

Get or update table metadata including display name, description, and visibility

Input parameters:

- `description` (string): Table description
- `display_name` (string): Human-readable display name
- `table_id` (number, required): Table ID to get/update
- `visibility_type` (string): Table visibility type

### `mb_field_values` (~35 tokens)

Get distinct values for a field (for filter dropdowns)

Input parameters:

- `field_id` (number, required): Field ID to get values for

### `mb_embed_url_generate` (~115 tokens)

Generate signed embedding URL for a dashboard or question

Input parameters:

- `bordered` (boolean): Show border around embed
- `exp_minutes` (number): Token expiration in minutes
- `params` (object): Locked parameter values for the embedding
- `preview` (boolean): Include preview-mode frame styles
- `resource_id` (number, required): ID of the dashboard or question
- `resource_type` (string, required): Type of resource to embed
- `theme` (string): Embed theme
- `titled` (boolean): Show title in embed

### `mb_embed_settings` (~21 tokens)

Get embedding settings and enabled features for the Metabase instance

### `mb_user_list` (~44 tokens)

List all Metabase users with filtering options

Input parameters:

- `group_id` (number): Filter by permission group ID (optional)
- `status` (string): Filter by user status

### `mb_user_get` (~29 tokens)

Get detailed information about a specific user

Input parameters:

- `user_id` (number, required): User ID to retrieve

### `mb_user_create` (~87 tokens)

Create a new Metabase user

Input parameters:

- `email` (string, required): User email address (also used as login)
- `first_name` (string, required): User first name
- `group_ids` (array): Array of permission group IDs to assign
- `last_name` (string, required): User last name
- `password` (string): Initial password (optional, will send invite email if not provided)

### `mb_user_update` (~83 tokens)

Update an existing user

Input parameters:

- `email` (string): New email address
- `first_name` (string): New first name
- `group_ids` (array): New permission group IDs
- `is_superuser` (boolean): Set superuser status
- `last_name` (string): New last name
- `user_id` (number, required): User ID to update

### `mb_user_disable` (~30 tokens)

Disable (deactivate) a user account

Input parameters:

- `user_id` (number, required): User ID to disable

### `mb_permission_group_list` (~18 tokens)

List all permission groups in Metabase

### `mb_permission_group_create` (~28 tokens)

Create a new permission group

Input parameters:

- `name` (string, required): Name of the permission group

### `mb_permission_group_delete` (~27 tokens)

Delete a permission group

Input parameters:

- `group_id` (number, required): Group ID to delete

### `mb_permission_group_add_user` (~42 tokens)

Add a user to a permission group

Input parameters:

- `group_id` (number, required): Permission group ID
- `user_id` (number, required): User ID to add

### `mb_permission_group_remove_user` (~42 tokens)

Remove a user from a permission group

Input parameters:

- `group_id` (number, required): Permission group ID
- `user_id` (number, required): User ID to remove

### `mb_collection_permissions_get` (~35 tokens)

Get permissions graph for a collection

Input parameters:

- `collection_id` (number, required): Collection ID (use "root" for root collection)

### `mb_collection_permissions_update` (~48 tokens)

Update permissions for a collection

Input parameters:

- `collection_id` (number, required): Collection ID
- `group_id` (number, required): Permission group ID
- `permission` (string, required): Permission level to set

### `mb_card_get` (~30 tokens)

Get detailed information about a specific card/question

Input parameters:

- `card_id` (number, required): Card/Question ID

### `mb_card_update` (~77 tokens)

Update an existing card/question

Input parameters:

- `card_id` (number, required): Card/Question ID
- `collection_id` (number): Move to collection ID
- `description` (string): New description
- `display` (string): Chart type
- `name` (string): New name
- `visualization_settings` (object): New visualization settings

### `mb_card_delete` (~30 tokens)

Permanently delete a card/question

Input parameters:

- `card_id` (number, required): Card/Question ID to delete

### `mb_card_archive` (~31 tokens)

Archive a card/question (soft delete)

Input parameters:

- `card_id` (number, required): Card/Question ID to archive

### `mb_card_data` (~55 tokens)

Execute a card/question and get the results in specified format

Input parameters:

- `card_id` (number, required): Card/Question ID
- `format` (string): Output format
- `parameters` (object): Optional parameters for parametric questions

### `mb_dashboard_get` (~26 tokens)

Get detailed information about a dashboard

Input parameters:

- `dashboard_id` (number, required): Dashboard ID

### `mb_dashboard_update` (~62 tokens)

Update dashboard properties

Input parameters:

- `collection_id` (number): Move to collection
- `dashboard_id` (number, required): Dashboard ID
- `description` (string): New description
- `enable_embedding` (boolean): Enable embedding
- `name` (string): New name

### `mb_dashboard_delete` (~25 tokens)

Delete a dashboard

Input parameters:

- `dashboard_id` (number, required): Dashboard ID to delete

### `mb_dashboard_card_update` (~84 tokens)

Update card position and size on a dashboard

Input parameters:

- `card_id` (number, required): Dashboard card ID
- `col` (number): New column position
- `dashboard_id` (number, required): Dashboard ID
- `row` (number): New row position
- `size_x` (number): Width in grid units
- `size_y` (number): Height in grid units

### `mb_dashboard_card_remove` (~40 tokens)

Remove a card from a dashboard

Input parameters:

- `card_id` (number, required): Dashboard card ID to remove
- `dashboard_id` (number, required): Dashboard ID

### `mb_card_copy` (~62 tokens)

Copy a card/question to a new location

Input parameters:

- `card_id` (number, required): Source card ID
- `collection_id` (number): Destination collection ID
- `new_name` (string): Name for the copy (optional, defaults to "Copy of [original]")

### `mb_card_clone` (~76 tokens)

Clone a card and retarget to a different table (for template cards)

Input parameters:

- `card_id` (number, required): Source card ID
- `collection_id` (number): Destination collection ID
- `column_mappings` (object): Column name mappings from source to target table
- `target_table_id` (number, required): New target table ID

### `mb_dashboard_copy` (~74 tokens)

Copy a dashboard with all its cards

Input parameters:

- `collection_id` (number): Destination collection ID
- `dashboard_id` (number, required): Source dashboard ID
- `deep_copy` (boolean): If true, also copies all cards. If false, links to existing cards.
- `new_name` (string): Name for the copy

### `mb_collection_copy` (~52 tokens)

Copy an entire collection with all contents

Input parameters:

- `collection_id` (number, required): Source collection ID
- `destination_id` (number): Destination parent collection ID
- `new_name` (string): Name for the copy

### `mb_search` (~71 tokens)

Search across all Metabase items (cards, dashboards, collections, tables)

Input parameters:

- `collection_id` (number): Search within specific collection
- `limit` (number): Maximum results to return
- `models` (array): Filter by item types (default: all)
- `query` (string, required): Search query text

### `mb_segment_create` (~64 tokens)

Create a segment (reusable filter) for a table

Input parameters:

- `definition` (object, required): MBQL filter definition
- `description` (string): Segment description
- `name` (string, required): Segment name
- `table_id` (number, required): Table ID to create segment for

### `mb_segment_list` (~27 tokens)

List all segments

Input parameters:

- `table_id` (number): Filter by table ID (optional)

### `mb_bookmark_create` (~39 tokens)

Bookmark an item for quick access

Input parameters:

- `id` (number, required): Item ID to bookmark
- `type` (string, required): Item type to bookmark

### `mb_bookmark_list` (~15 tokens)

List all bookmarked items

### `mb_bookmark_delete` (~32 tokens)

Remove a bookmark

Input parameters:

- `id` (number, required): Item ID
- `type` (string, required): Item type

### `db_sync_schema` (~28 tokens)

Trigger schema sync for a database

Input parameters:

- `database_id` (number, required): Database ID to sync

### `mb_cache_invalidate` (~52 tokens)

Invalidate cache for specific items or entire database

Input parameters:

- `card_id` (number): Specific card ID to invalidate
- `database_id` (number): Database ID (optional, invalidates all if provided alone)

### `mb_meta_query_performance` (~100 tokens)

Get comprehensive query performance statistics from Metabase metadata - analyze execution times, cache hit rates, error rates, and identify slow queries. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `days` (number): Number of days to analyze (default: 7)
- `include_slow_queries` (boolean): Include detailed slow query analysis (default: true)
- `slow_threshold_ms` (number): Threshold for slow queries in milliseconds (default: 10000)

### `mb_meta_content_usage` (~100 tokens)

Analyze content usage patterns - find popular questions/dashboards, unused content, orphaned cards. Great for content cleanup and optimization. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `days` (number): Number of days to analyze (default: 30)
- `limit` (number): Number of top items to return (default: 20)
- `unused_threshold_days` (number): Days without usage to consider content "unused" (default: 90)

### `mb_meta_user_activity` (~99 tokens)

Get user activity statistics - active users, inactive users, query patterns, login history. Useful for license optimization and user engagement analysis. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `days` (number): Number of days to analyze (default: 30)
- `inactive_threshold_days` (number): Days without activity to consider user "inactive" (default: 90)
- `include_login_history` (boolean): Include login timeline data (default: true)

### `mb_meta_database_usage` (~63 tokens)

Analyze database usage patterns - query counts, performance, errors by database and table. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `database_id` (number): Optional: analyze specific database tables
- `days` (number): Number of days to analyze (default: 30)

### `mb_meta_dashboard_complexity` (~36 tokens)

Analyze dashboard complexity - card counts, load times, performance issues. Identify dashboards that need optimization. Requires MB_METADATA_ENABLED=true.

### `mb_meta_info` (~37 tokens)

Get overview of Metabase metadata database - active users, questions, dashboards, recent activity. Quick health check. Requires MB_METADATA_ENABLED=true.

### `mb_meta_table_dependencies` (~85 tokens)

Analyze table dependencies - find all questions and dashboards that depend on a specific table. Essential for impact analysis before schema changes. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `database_id` (number, required): Database ID containing the table
- `schema_name` (string): Schema name (optional, recommended for disambiguation)
- `table_name` (string, required): Name of the table to analyze

### `mb_meta_impact_analysis` (~82 tokens)

Analyze impact of removing a table - breaking changes, affected questions/dashboards, severity assessment, and recommendations. Critical for safe database migrations. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `database_id` (number, required): Database ID
- `schema_name` (string): Schema name (optional)
- `table_name` (string, required): Table name to analyze for removal impact

### `mb_meta_optimization_recommendations` (~108 tokens)

Get comprehensive optimization recommendations - index suggestions, materialized view candidates, and cache optimization. Data-driven performance improvements. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `database_id` (number, required): Database ID to analyze
- `days` (number): Number of days to analyze (default: 30)
- `include_cache_recommendations` (boolean): Include cache optimization suggestions (default: true)
- `include_matview_candidates` (boolean): Include materialized view recommendations (default: true)

### `mb_meta_error_patterns` (~96 tokens)

Analyze error patterns and categorize recurring errors - identify systemic issues, suggest resolutions, find questions with high error rates. Proactive error management. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `days` (number): Number of days to analyze (default: 30)
- `include_recurring_questions` (boolean): Include questions with recurring errors (default: true)
- `include_timeline` (boolean): Include temporal error analysis (default: true)

### `mb_meta_export_workspace` (~120 tokens)

📤 Export workspace to JSON (questions, dashboards, collections). READ-ONLY operation - safe to execute. Perfect for backups and migrations. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `archived` (boolean): Include archived items (default: false)
- `collection_ids` (array): Optional: Export specific collections only (array of IDs)
- `include_collections` (boolean): Include collections (default: true)
- `include_dashboards` (boolean): Include dashboards (default: true)
- `include_questions` (boolean): Include questions (default: true)

### `mb_meta_import_preview` (~58 tokens)

🔍 Preview import impact WITHOUT making changes (dry-run). Analyzes conflicts, detects issues, provides recommendations. ALWAYS run this before actual import. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `workspace` (object, required): Workspace data from export_workspace

### `mb_meta_compare_environments` (~59 tokens)

🔄 Compare current environment with another (dev → staging → prod). Identifies drift, missing items, and differences. READ-ONLY operation. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `target_workspace` (object, required): Workspace export from target environment

### `mb_meta_auto_cleanup` (~191 tokens)

🧹 Auto-cleanup unused content with SAFETY CHECKS. ⚠️ DRY-RUN by default, requires approved:true for execution. Finds unused questions (180+ days), orphaned cards, empty collections, broken questions. Requires MB_METADATA_ENABLED=true.

Input parameters:

- `approved` (boolean): 🔒 SAFETY: Requires explicit approval (default: false). Set true to execute
- `broken_questions` (boolean): Include questions with 100% error rate (default: true)
- `dry_run` (boolean): 🔒 SAFETY: Dry-run mode (default: true). Set false to execute
- `empty_collections` (boolean): Include empty collections (default: true)
- `orphaned_cards` (boolean): Include orphaned cards (not in dashboards) (default: true)
- `unused_days` (number): Days without usage to consider content unused (default: 180)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/enessari-metabase-ai-assistant/metabase-ai-assistant#diagnostics

## Score history

- 2026-08-04: 63
- 2026-08-03: 34
- 2026-08-02: 34
- 2026-08-01: 5
- 2026-07-31: 5
- 2026-07-30: 24
- 2026-07-28: 24
- 2026-07-27: 24

## Links

- npm package: https://www.npmjs.com/package/metabase-ai-assistant
- Socket report: https://socket.dev/npm/package/metabase-ai-assistant
- Repository: https://github.com/enessari/metabase-ai-assistant
- Changelog RSS feed: https://verifymcp.io/servers/enessari-metabase-ai-assistant/metabase-ai-assistant/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/enessari-metabase-ai-assistant/metabase-ai-assistant/changelog.json
- HTML version of this page: https://verifymcp.io/servers/enessari-metabase-ai-assistant/metabase-ai-assistant
