Install
$ agentstack add mcp-takeokunn-metabase-mcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
@takeokunn/metabase-mcp
[](https://www.npmjs.com/package/@takeokunn/metabase-mcp) [](LICENSE)
A Model Context Protocol (MCP) server for Metabase, enabling AI assistants to interact with your Metabase instance.
Features
- 429 tools across 59 categories covering the Metabase OSS API
- Database Management - List, create, update, delete databases and sync metadata
- Card/Question Management - Create, execute, and manage saved questions
- Dashboard Management - Build and manage dashboards with cards, tabs, and subscriptions
- Collection Management - Organize content in collections with tree navigation
- Table & Field Management - Configure metadata, semantic types, and values
- User & Permissions Management - Users, groups, membership, and data access control
- Actions - Write-back model actions for updating data
- Notifications - Modern notification system for alerts and dashboard subscriptions
- Timelines & Events - Annotate charts with contextual timeline events
- Embedding - Signed JWT embedding and anonymous public sharing
- AI Features - X-ray auto-generated dashboards, LLM SQL generation
[Pro], Metabot[Pro] - Admin Tools - Settings, email, API keys, caching, tasks, logging, and more
- Secure API Token Authentication - API key-based access control
- TypeScript Implementation - Full type safety throughout
> Note: Tools marked [Requires Metabase Pro] require a Metabase Pro or Enterprise license.
Installation
npm install -g @takeokunn/metabase-mcp
Or run directly with npx:
npx @takeokunn/metabase-mcp
Configuration
Set the following environment variables:
| Variable | Description | Example | |----------|-------------|---------| | METABASE_URL | Your Metabase instance URL (HTTPS required) | https://metabase.example.com | | METABASE_API_TOKEN | Metabase API key | mb_xxxxxxxxxxxxx |
Getting an API Token
- Log in to Metabase as an admin
- Go to Admin Panel → Settings → Authentication → API Keys
- Click Create API Key
- Copy the generated token
Usage
Claude Desktop Integration
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"metabase": {
"command": "npx",
"args": ["@takeokunn/metabase-mcp"],
"env": {
"METABASE_URL": "https://metabase.example.com",
"METABASE_API_TOKEN": "mb_your_api_token"
}
}
}
}
Or if installed globally:
{
"mcpServers": {
"metabase": {
"command": "metabase-mcp",
"env": {
"METABASE_URL": "https://metabase.example.com",
"METABASE_API_TOKEN": "mb_your_api_token"
}
}
}
}
Available Tools
This MCP server provides 429 tools organized into 59 categories.
> Coverage note: tools mirror the Metabase OSS REST API (/api/docs/openapi.json). Enterprise/Pro-only endpoints (/api/ee/*, sandboxing /api/mt/*, transforms, Metabot/agent, embedding themes, data-studio), test-only endpoints (/api/testing/*), and session-based auth flows (/api/session/* login/logout/password) are intentionally out of scope — this server authenticates with an API key.
Database Tools (30)
| Tool | Description | |------|-------------| | list_databases | Get list of databases configured in Metabase | | get_database | Get a single database by ID from Metabase | | get_database_metadata | Get database metadata including tables and fields from Metabase | | list_database_schemas | List all schemas in a database from Metabase | | list_database_tables | List tables in a database schema from Metabase | | sync_database | Trigger a sync for a database in Metabase | | create_database | Add a new database connection to Metabase | | update_database | Update an existing database connection configuration in Metabase | | delete_database | Delete a database connection from Metabase | | rescan_database_values | Rescan field values for a database in Metabase | | discard_database_values | Discard cached field values for a database in Metabase | | validate_database | Validate a database connection configuration before creating it in Metabase | | create_sample_database | Create the built-in sample database in Metabase | | sync_database_schema | Sync the schema of a database in Metabase (schema only, not a full resync) | | get_database_fields | Get all fields for a database in Metabase | | get_database_id_fields | Get all ID-type fields for a database in Metabase | | get_database_autocomplete | Get autocomplete suggestions for a database in Metabase | | get_database_usage_info | Get usage information for a database in Metabase | | get_database_healthcheck | Perform a healthcheck on a database connection in Metabase | | list_database_schemas_with_tables | List all tables within a specific schema of a database in Metabase | | list_database_virtual_tables | List virtual tables (saved questions) available as tables in a database in Metabase | | get_database_virtual_schema | Get a virtual schema (datasets) for a database in Metabase | | list_database_virtual_schema_tables | List all virtual tables (saved questions as tables) across all databases in Metabase | | append_csv_to_table | Append rows from a CSV upload to an existing table in a database in Metabase | | replace_table_csv | Replace an existing table with CSV data in a database in Metabase | | get_database_card_autocomplete | Get card autocomplete suggestions for a database in Metabase | | get_database_available_settings | Get available settings for a database connection in Metabase | | get_database_syncable_schemas | Get syncable schemas for a database in Metabase | | get_virtual_database_datasets | Get datasets for a virtual database in Metabase | | dismiss_database_spinner | Dismiss the loading spinner for a database in Metabase |
Card Tools (20)
| Tool | Description | |------|-------------| | list_cards | List all saved questions/cards | | get_card | Get card details by ID | | get_card_metadata | Get card metadata including query info | | create_card | Create a new saved question | | update_card | Update an existing card | | delete_card | Delete a card | | execute_card | Execute a card and return results | | create_card_public_link | Create a public sharing link for a card (saved question) in Metabase (returns UUID) | | delete_card_public_link | Delete a public sharing link from a card (saved question) in Metabase | | list_embeddable_cards | List all cards (saved questions) available for embedding in Metabase (admin only) | | list_public_cards | List all cards (saved questions) with public sharing links in Metabase (admin only) | | copy_card | Copy an existing card (saved question) in Metabase | | get_card_series | Get related series data for a card (saved question) in Metabase | | get_card_param_values | Get possible values for a card (saved question) filter parameter in Metabase | | search_card_param_values | Search possible values for a card (saved question) filter parameter in Metabase | | get_card_param_remapping | Get remapping for a parameter of a card in Metabase | | get_card_dashboards | Get dashboards that contain a specific card in Metabase | | move_cards_to_collection | Move multiple cards to a collection in Metabase | | execute_card_pivot | Execute a card (saved question) as a pivot table query in Metabase | | export_card_query | Export a card (saved question) query result in a specified format (csv, json, xlsx, pdf) in Metabase |
Dashboard Tools (38)
| Tool | Description | |------|-------------| | list_dashboards | List all dashboards | | get_dashboard | Get dashboard details by ID | | create_dashboard | Create a new dashboard | | update_dashboard | Update an existing dashboard | | delete_dashboard | Delete a dashboard | | copy_dashboard | Copy a dashboard to a new location | | get_dashboard_metadata | Get dashboard metadata including cards | | add_dashboard_card | Add a card to a dashboard (v0.49+) | | update_dashboard_card | Update a dashboard card position/size/settings (v0.49+) | | remove_dashboard_card | Remove a card from a dashboard (v0.49+) | | update_dashboard_cards | Bulk update dashboard cards (v0.49+) | | add_dashboard_tab | Add a new tab to a dashboard (v0.49+) | | update_dashboard_tab | Update a dashboard tab name/position (v0.49+) | | remove_dashboard_tab | Remove a tab from a dashboard (v0.49+) | | create_dashboard_public_link | Create a public sharing link for a dashboard | | delete_dashboard_public_link | Delete a public sharing link from a dashboard | | list_public_dashboards | List all dashboards with public sharing links | | list_dashboard_revisions | List revision history for a dashboard | | revert_dashboard | Revert a dashboard to a previous revision | | list_dashboard_subscriptions | List dashboard subscriptions (email/Slack notifications) | | create_dashboard_subscription | Create a dashboard subscription | | update_dashboard_subscription | Update a dashboard subscription | | execute_dashboard_card_query | Execute a dashcard query with dashboard filter parameters in Metabase | | export_dashboard_card_query | Export a dashcard query result in a specified format (csv, json, xlsx, pdf) in Metabase | | get_dashboard_param_values | Get possible values for a dashboard filter parameter in Metabase | | search_dashboard_param_values | Search possible values for a dashboard filter parameter in Metabase | | get_dashboard_embeddable | List all dashboards available for embedding in Metabase (admin only) | | get_dashboard_param_remapping | Get remapping for a parameter of a dashboard in Metabase | | get_dashboard_related | Get related items for a dashboard in Metabase | | get_valid_filter_fields | Get valid filter fields for dashboard parameters in Metabase | | save_dashboard | Save a dashboard (creates or updates) in Metabase | | save_dashboard_to_collection | Save a dashboard to a specific collection in Metabase | | get_dashboard_items | Get items (dashcards) of a dashboard in Metabase | | get_dashcard_action_params | Get action parameters for a dashcard in Metabase | | run_dashcard_query | Run the query for a specific card on a dashboard in Metabase | | export_dashcard_query | Export query results for a dashcard in Metabase | | execute_dashcard_action | Execute an action on a dashcard in Metabase | | pivot_dashcard_query | Run a pivot query for a specific dashcard in Metabase |
Collection Tools (15)
| Tool | Description | |------|-------------| | list_collections | List all collections | | get_collection | Get collection details by ID | | get_collection_items | Get items within a collection | | get_collection_tree | Get the full collection hierarchy tree | | get_root_collection | Get the root collection from Metabase | | get_root_collection_items | Get items (cards, dashboards, etc.) within the root collection in Metabase | | get_trash_collection | Get the trash collection from Metabase | | create_collection | Create a new collection | | update_collection | Update collection properties | | delete_collection | Delete a collection | | hard_delete_collection | Permanently delete a collection in Metabase (cannot be undone) | | get_root_dashboard_question_candidates | Get dashboard question candidates from the root collection in Metabase | | get_collection_dashboard_question_candidates | Get dashboard question candidates from a collection in Metabase | | move_root_dashboard_question_candidates | Move dashboard question candidates from the root collection in Metabase | | move_collection_dashboard_question_candidates | Move dashboard question candidates from a collection in Metabase |
Table Tools (14)
| Tool | Description | |------|-------------| | list_all_tables | List all tables across all databases in Metabase | | get_table | Get table details by ID | | get_table_metadata | Get table metadata including fields | | update_table | Update table properties | | bulk_update_tables | Bulk update multiple tables in Metabase | | resync_table_fields | Resync field metadata for a table | | get_table_foreign_keys | Get foreign keys for a table in Metabase | | sync_table_schema | Sync the schema for a table in Metabase | | discard_table_values | Discard cached field values for a table in Metabase | | get_table_related | Get related tables and cards for a table in Metabase | | update_table_fields_order | Reorder fields in a table in Metabase | | get_virtual_card_table_fks | Get foreign keys for a virtual card-based table in Metabase | | get_virtual_card_table_query_metadata | Get query metadata for a virtual card-based table in Metabase | | get_table_data | Get data rows from a table in Metabase |
Field Tools (13)
| Tool | Description | |------|-------------| | get_field | Get field details by ID | | update_field | Update field properties | | get_field_values | Get cached values for a field | | update_field_values | Update cached field values | | rescan_field_values | Trigger a rescan of field values | | discard_field_values | Discard cached field values | | get_field_related | Get related fields and tables | | search_field_values | Search for values within a field | | create_field_dimension | Create a dimension (remapping) for a field in Metabase | | delete_field_dimension | Delete a dimension (remapping) from a field in Metabase | | get_field_remapping | Get remapping between two fields in Metabase | | get_field_summary | Get summary statistics for a field in Metabase | | get_field_table_ids | Get unique Table IDs for a list of Field IDs in Metabase |
Search Tools (5)
| Tool | Description | |------|-------------| | search | Full-text search across Metabase content | | get_search_weights | Get search result ranking weights in Metabase | | update_search_weights | Update search result ranking weights in Metabase | | force_reindex_search | Force a full reindex of the search index in Metabase | | reinit_search | Re-initialize the search index in Metabase |
Dataset/Query Tools (8)
| Tool | Description | |------|-------------| | execute_query | Execute an ad-hoc query | | export_query | Export query results in various formats | | execute_query_pivot | Execute a pivot query against a Metabase database | | get_native_query | Convert an MBQL query to native SQL without executing it | | get_dataset_param_values | Get values for a dataset parameter in Metabase | | search_dataset_param_values | Search values for a dataset parameter in Metabase | | get_dataset_param_remapping | Get remapping for a dataset parameter in Metabase | | get_dataset_query_metadata | Get metadata for a dataset query in Metabase |
User Tools (11)
| Tool | Description | |------|-------------| | list_users | List all users with optional filtering | | get_user | Get user details by ID | | create_user | Create a new user account | | update_user | Update user properties | | delete_user | Deactivate a user account | | get_current_user | Get the currently authenticated user | | update_user_password | Update a user's password | | reactivate_user | Reactivate a deactivated user | | get_user_recipients | Get a list of users who are eligible to receive notifications and alerts in Metabase | | dismiss_user_modal | Dismiss a modal for a user in Metabase | | create_user_password_reset_url | Generate a password reset URL for a user in Metabase (admin only) |
Permissions Tools (16)
| Tool | Description | |------|-------------| | list_permission_groups | List all permission groups | | get_permission_group | Get permission group details by ID | | create_permission_group | Create a new
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: takeokunn
- Source: takeokunn/metabase-mcp
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.