← Back to directory
M

MCP Metabase Server

Community
Comprehensive Metabase access for AI assistants (70+ tools)
Category
Other #83 of 230
Stars
★ 82 Popular
Transport
stdio (local process)
Runtime
Node.js · Docker
Credentials
API key / credential required
License
MIT
Last commit
Tools
95
59FMRS · C

This MCP server provides comprehensive functionality for Metabase via its REST API, including dashboards, cards, databases, tables, collections, and user management. It supports multiple deployment methods and offers tool filtering for controlled access. It is a powerful tool for organizations looking to integrate Metabase with AI workflows, but careful management of API permissions is required to avoid unintended modifications.

Strongest · Documentation 15/20 Weakest · Reliability 6/20

Reliability
6/20
Security and permissions
12/20
Maintenance
12/20
Documentation
15/20
Setup experience
14/20
Why each score
Reliability 6/20
Only the README and repository metadata were supplied; no source code, tests, CI workflows, or server manifest could be inspected, so neither the MCP init/tool-list handshake nor actual tool behavior can be verified. The README's 96-tool claim is internally coherent (27+21+16+17+13+2=96) and a happy path is plausible, but the repository description says 70+ tools, a minor inconsistency. Per static calibration, missing execution evidence lowers the score; 6 is appropriate.
Security and permissions 12/20
No real tokens or secrets appear in the documentation; credentials are passed via METABASE_URL/METABASE_API_KEY environment variables and the server interacts only with the Metabase API, giving a clear data boundary. TOOL_MODE offers all/essential/read/write scoping, but the default is 'all', which exposes permanent destructive operations such as delete_database, replace_table_csv, delete_collection, and revert_dashboard with no confirmation step; the username/password fallback is weaker than an API key. No red lines are triggered (no malware, credential theft, or real secrets), but least privilege is not the default and destructive actions lack confirmation, so 12.
Maintenance 12/20
The repository is not archived, has an MIT license, 3 open issues, an npm version badge, and a clearly identified maintainer (EaseCloud) with a support contact, indicating an active project. However, the supplied material contains no commit history, release cadence, CHANGELOG, or dependency-update evidence to verify governance and versioning. This matches 'active but with governance/versioning gaps' near the 10 anchor, rated 12.
Documentation 15/20
The README is well-layered: quick start, npx/global/Docker installation, authentication and TOOL_MODE matrix, grouped tables describing all 96 tools across six domains, metabase:// resource URIs, development/debugging commands, an issue template, and client config examples for macOS and Windows. Gaps include no troubleshooting section, no per-tool parameter or limit documentation, undisclosed failure modes, and a referenced but unshown .env.example, leaving hidden assumptions. Rated 15 for strong coverage with acknowledged troubleshooting/limitation gaps.
Setup experience 14/20
Setup is clear: a one-line npx command, plus global npm, Docker, and local-build (node dist/index.js) alternatives, with Claude Desktop JSON configuration examples for both macOS and Windows covering npx and local builds. Static calibration caps setup at 15 without verifiable execution evidence, and this review could not confirm the dist/index.js path, docker build, or the existence of .env.example, so a conservative 14 is given.

Static review · not runListed 2026-08-07

Read the FMRS scoring method →

Fit and risk

What it can accessUses the networkConnects to a database

Best for

  • Organizations using Metabase that want AI-driven interactions with their BI platform
  • Developers building AI agents that need to interact with Metabase data
  • Teams needing automated Metabase administration and monitoring

Not for

  • Users not using Metabase
  • Scenarios requiring real-time, low-latency data queries (this server uses API calls)
  • Teams looking to avoid maintaining a Metabase instance

Required permissions

  • Requires an API key or username/password for the Metabase instance
  • Tools can read and modify dashboards, cards, databases, collections, and users, depending on API token permissions
  • Schema cache may require local filesystem write access (~/.easecloud/metabase-mcp/)

Risks and side effects

  • Accidental modification or deletion of Metabase resources if API token permissions are too broad
  • Write tools can cause irreversible changes if misused
  • Unencrypted API keys could be exposed
  • Potential rate limiting or increased load on the Metabase instance due to frequent requests

Setup

Before you start

Runtime:Node.js · Docker

METABASE_URL required Base URL of your Metabase instance, e.g. https://your-metabase-instance.com; required.
METABASE_API_KEY optionalsecret Metabase API key (preferred auth), generated in your Metabase account settings.
METABASE_PASSWORD optionalsecret Metabase password, paired with METABASE_USERNAME as fallback auth.
Other optional settings (2)
METABASE_USERNAME optional Metabase username; fallback auth only when no API key is used.
TOOL_MODE optional Optional; controls tool exposure: all (default), essential, read, write.
  1. Set environment variables METABASE_URL and METABASE_API_KEY (or use username/password).
  2. Run npx @easecloudio/mcp-metabase-server.
  3. Configure your MCP client to point to this command.
claude_desktop_config.json
{
  "mcpServers": {
    "metabase": {
      "command": "npx",
      "args": [
        "@easecloudio/mcp-metabase-server"
      ],
      "env": {
        "METABASE_URL": "https://your-metabase-instance.com",
        "METABASE_API_KEY": "your_metabase_api_key"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "metabase": {
      "command": "npx",
      "args": [
        "@easecloudio/mcp-metabase-server"
      ],
      "env": {
        "METABASE_URL": "https://your-metabase-instance.com",
        "METABASE_API_KEY": "your_metabase_api_key"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add metabase -e METABASE_URL=https://your-metabase-instance.com -e METABASE_API_KEY=your_metabase_api_key -- npx @easecloudio/mcp-metabase-server

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

The client's tool list should include tools like list_dashboards; running list_dashboards or check_database_health and getting real data back confirms the connection works.

Troubleshooting

  1. Ensure METABASE_URL is accessible from the machine running the server
  2. Verify that the API key is valid and has sufficient permissions
  3. Check that Metabase version is v0.46 or higher, preferably v0.48+
  4. If using Docker, make sure environment variables are passed correctly
  5. Use the MCP Inspector to debug tool calls

Things to try

Once connected, you can ask your AI assistant things like:

  • List all dashboards in my Metabase instance
  • Execute card 12 and export the results as CSV
  • Run a health check on my database connection
  • Convert this SQL question to an MBQL question and save it as a new card

Tools 95

list_dashboards read-only
List all dashboards
get_dashboard read-only
Get a specific dashboard by ID
create_dashboard writes
Create a new dashboard
update_dashboard writes
Update an existing dashboard
delete_dashboard destructive
Delete / archive a dashboard
copy_dashboard writes
Duplicate a dashboard (shallow or deep copy)
save_dashboard writes
Save a complete dashboard object with nested data
save_dashboard_to_collection writes
Move a dashboard into a specific collection
Show 87 more tools
search_dashboards read-only
Search dashboards by name or description
favorite_dashboard writes
Mark a dashboard as a favourite
unfavorite_dashboard writes
Remove a dashboard from favourites
get_dashboard_cards read-only
Get all cards in a dashboard
add_card_to_dashboard writes
Add a card with positioning
add_text_block writes
Add a text or heading block to a dashboard
remove_card_from_dashboard writes
Remove a card from a dashboard
update_dashboard_card writes
Update card position, size, and settings
update_dashboard_cards writes
Bulk-replace all cards on a dashboard
update_dashcard writes
Update a specific dashcard's properties
execute_dashboard_card read-only
Execute a specific dashcard and return results
create_dashboard_public_link writes
Create a public sharing link
delete_dashboard_public_link writes
Remove the public link
list_public_dashboards read-only
List dashboards with public links
list_embeddable_dashboards read-only
List dashboards enabled for embedding
get_dashboard_revisions read-only
Get revision history (audit trail)
revert_dashboard writes
Revert to a previous revision
get_dashboard_related read-only
Get related content suggestions
get_dashboard_queries read-only
Extract all card queries with resolved field IDs
list_cards read-only
List all questions / cards
get_card read-only
Get a card by ID (includes full SQL / MBQL query)
create_card writes
Create a new question
update_card writes
Update an existing question
delete_card destructive
Delete / archive a question
copy_card writes
Duplicate a card
move_cards writes
Move one or more cards to a different collection
move_cards_to_collection writes
Bulk-move cards from a source collection
execute_card read-only
Run a card and return results
execute_pivot_card_query read-only
Run a card formatted as a pivot table
export_card_result read-only
Export results as CSV or JSON
get_card_param_values read-only
Get available values for a card parameter
search_card_param_values read-only
Search / filter parameter values
get_card_param_remapping read-only
Get how parameter values are remapped for display
get_card_query_metadata read-only
Get column types and display names
get_card_dashboards read-only
List dashboards containing this card
get_card_series read-only
Get series data or related card suggestions
create_card_public_link writes
Create a public sharing link
delete_card_public_link writes
Remove the public link
list_public_cards read-only
List cards with public links
list_embeddable_cards read-only
List cards enabled for embedding
list_databases read-only
List all database connections
get_database read-only
Get a specific database by ID
create_database_connection writes
Create a new database connection
update_database writes
Update a database connection's config or credentials
delete_database destructive
Permanently remove a database connection
add_sample_database writes
Add the built-in H2 sample database with demo data
execute_query read-only
Execute a SQL query against a database
get_database_schema read-only
Get schema information
get_database_tables read-only
Get all tables in a database
get_database_metadata read-only
Get full metadata including all tables and field IDs
list_database_schemas read-only
List all schemas within a database
sync_database_schema writes
Trigger a schema metadata sync
get_database_sync_status read-only
Check sync status
check_database_health read-only
Check connection health
validate_database read-only
Validate connection settings before saving
test_database_connection read-only
Test an existing connection
list_tables read-only
List tables (optionally filtered by database)
get_table read-only
Get table metadata by ID
get_table_metadata read-only
Get full query metadata including field IDs and types
get_table_fks read-only
Get foreign key relationships
get_table_related read-only
Find related tables via FK relationships
get_table_data read-only
Get a sample data preview from a table
get_field_id read-only
Look up a field ID by table ID + column name (returns MBQL ref)
get_card_table_fks read-only
Get FK relationships for a card's virtual table
get_card_table_query_metadata read-only
Get query metadata for a card's virtual table
update_table writes
Update display name, description, or visibility
update_tables writes
Bulk-update multiple tables with the same config
reorder_table_fields writes
Change the display order of fields
sync_table_schema writes
Trigger a schema sync for a specific table
rescan_table_field_values writes
Rescan field values (updates filter dropdowns)
discard_table_field_values writes
Discard cached field values
append_csv_to_table writes
Append new rows from CSV content
replace_table_csv destructive
Replace all table data with new CSV content
list_collections read-only
List all collections
create_collection writes
Create a new collection
get_collection read-only
Get collection details
update_collection writes
Update name, description, color, or parent
delete_collection destructive
Delete a collection and its contents
get_collection_items read-only
List cards, dashboards, and sub-collections
move_to_collection writes
Move a card or dashboard to a different collection
list_users read-only
List all users
create_user writes
Create a new user
list_permission_groups read-only
List all permission groups
create_permission_group writes
Create a new permission group
search_content read-only
Search across all Metabase content
get_schema_cache read-only
Return cached schema (auto-fetches if missing or stale)
refresh_schema_cache writes
Force-refresh cache for one or all databases

Use cases

Automating dashboard, card, and database management in Metabase
Querying and manipulating Metabase data via natural language
Integrating AI assistants into BI workflows

Supported clients

Claude Desktop

Listed from the project's documentation, not tested by this site.

Overview

A Model Context Protocol (MCP) server for Metabase that gives AI assistants full access to your analytics platform — dashboards, cards, databases, tables, collections, and more. Developed and maintained by EaseCloud.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 659 · Tools 11 Compare with this →

Source revision 464fc93edd22 Data synced 2026-10-19 Read the FMRS scoring method