Atlas / MCP servers / cognitionai / Readme: Metabase MCP Server

Readme: Metabase MCP ServerSAFE

mcp/cognitionai/metabase-mcp-server

Cognition's Metabase MCP Server

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
83 41r · 33w · 9d
Transport
—
License
NOASSERTION
Stars
63
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/@cognitionai/metabase-mcp-server) [](https://www.typescriptlang.org/) [](https://opensource.org/licenses/MIT) [](https://nodejs.org/)

A comprehensive Model Context Protocol (MCP) server for Metabase integration, providing AI assistants with full access to Metabase's analytics platform.

🚀 Quick Start

# Install and run with npx
export METABASE_URL=https://your-metabase-instance.com
export METABASE_API_KEY=your_metabase_api_key
npx @cognitionai/metabase-mcp-server

✨ Features

🎯 81+ Tools Available - Complete Metabase API Coverage

  • 📊 Dashboard Management (23 tools) - Full CRUD operations, card management, public sharing, embedding
  • 📈 Card/Question Management (21 tools) - Query execution, parameter handling, pivot queries, public links
  • 🗄️ Database Management (13 tools) - Connection management, schema sync, query execution
  • 📋 Table Management (16 tools) - Metadata operations, field management, data operations
  • 🔍 Additional Tools (9 tools) - Collections, search, users, activity tracking, playground links

📦 Installation

💡 Recommended: Node.js 20.19.0+ and npm 8.0.0+ for optimal compatibility

Method 1: NPX (Recommended)

npx @cognitionai/metabase-mcp-server

Method 2: Global Installation

npm install -g @cognitionai/metabase-mcp-server
metabase-mcp-server

Method 3: Docker

docker run -it --rm \
-e METABASE_URL=https://your-metabase-instance.com \
-e METABASE_API_KEY=your_metabase_api_key \
ghcr.io/CognitionAI/metabase-mcp-server

⚙️ Configuration

E

Read from source at commit a2f5e0902344OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add metabase-mcp-server --env METABASE_API_KEY=${METABASE_API_KEY} --env METABASE_PASSWORD=${METABASE_PASSWORD} -- npx -y @cognitionai/[email protected]
claude-desktop
{
  "mcpServers": {
    "metabase-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@cognitionai/[email protected]"
      ],
      "env": {
        "METABASE_API_KEY": "${METABASE_API_KEY}",
        "METABASE_PASSWORD": "${METABASE_PASSWORD}"
      }
    }
  }
}
03

Exposed tools (83)

41 read · 33 write · 9 destructive. Blast radius: 9 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
add_card_to_dashboardwriteAdd an existing card to a dashboard with optional parameter mappings - use this to build comprehensive dashboards by combining multiple visualizations
add_sample_databasewriteAdd the built-in Metabase sample database with demo data - use this for testing, learning, or exploring Metabase features
add_text_blockwriteAdd a text block or heading to a dashboard - use this for explanatory text, titles, or instructions
append_csv_to_tablewriteAdd new rows from CSV content to existing table - use this for incremental data loading, updates, or importing additional records
audit_dashboard_filtersreadAnalyze dashboard filter connections to find unconnected or misconfigured cards - use this to diagnose filter issues and ensure all cards are properly connected
check_database_healthreadPerform health check on database connection - use this to diagnose issues, monitor status, or troubleshoot sync problems
copy_cardwriteCreate a duplicate copy of an existing Metabase card with identical query and settings - use this to create variations of existing cards, build templates for similar analyses, or backup important queries before modifications
create_cardwriteCreate a new Metabase card with custom query, visualization type, and settings - use this to programmatically build new analytical cards, dashboards charts, or data exploration queries
create_card_public_linkwriteGenerate a publicly accessible URL for a Metabase card that can be viewed without authentication (requires admin privileges) - use this to share analytical insights with external stakeholders, create public reports, or embed charts in websites
create_collectionwriteCreate a new Metabase collection for organizing analytical content - use this to establish organizational containers for cards, dashboards, and reports
create_dashboardwriteCreate a new Metabase dashboard - use this to build new analytical views, organize related cards, or establish monitoring interfaces
create_databasewriteAdd a new database connection to Metabase - use this to connect new data sources, establish analytical pipelines, or expand data access
create_public_linkwriteGenerate publicly accessible URL for a dashboard (requires superuser) - use this for external reporting, client dashboards, or public data sharing
delete_carddestructiveRemove a Metabase card either by archiving (soft delete, preserves history) or permanent deletion - use this to clean up unused cards, remove broken cards, or organize analytical content
delete_card_public_linkdestructiveRemove public access to a Metabase card by deleting its public URL (requires admin privileges) - use this to revoke external access to sensitive data, clean up unused public links, or update security permissions
delete_collectiondestructivePermanently delete a Metabase collection - use with caution as this affects contained content and cannot be undone
delete_dashboarddestructiveDelete or archive a dashboard (soft or hard delete) - use with caution as permanent deletion cannot be undone
delete_databasedestructivePermanently remove a database from Metabase - use with caution as this will break dependent content and cannot be undone
delete_public_linkdestructiveRemove public URL access for a dashboard (requires superuser) - use this to revoke external access for security or privacy reasons
discard_table_field_valuesdestructiveClear cached field values to force fresh data loading - use this when table data has changed or cached values are stale
execute_cardwriteRun a Metabase card query and return the actual data results - use this to get current data from existing cards, refresh analytical insights, or programmatically access query results for further processing
execute_dashboard_cardwriteExecute a specific card from a dashboard and retrieve fresh data - use this to get current results from dashboard components or test card functionality
execute_pivot_card_querywriteRun a Metabase card with pivot table formatting to cross-tabulate data with rows and columns - use this to create summary tables, analyze data relationships, or generate matrix-style reports from existing cards
execute_querywriteExecute a native SQL query against a Metabase database - use this for custom data analysis, complex queries, or extracting specific data not available through existing cards
export_card_resultwriteExecute a Metabase card and export the results in a specific format (CSV, Excel, JSON, etc.) - use this to download data for external analysis, create reports for stakeholders, or integrate query results with other systems
favorite_dashboardreadMark a dashboard as favorite for quick access - use this to bookmark frequently accessed analytical views
get_cardreadGet complete metadata and configuration for a specific Metabase card including query definition, visualization settings, collection location, and permissions - use this when you need to examine or understand how a particular card is built
get_card_dashboardsreadFind all dashboards that include a specific Metabase card - use this to understand where a card is being used, track dependencies before making changes, or find related analytical content
get_card_param_remappingreadRetrieve how parameter values are remapped or transformed for display in a Metabase card - use this to understand data transformations, debug parameter issues, or see how raw values are presented to users
get_card_param_valuesreadRetrieve all available values for a specific parameter in a Metabase card - use this to populate dropdown filters, validate parameter inputs, or understand what data options are available for interactive cards
get_card_query_metadatareadRetrieve structural metadata about a Metabase card
get_card_seriesreadRetrieve time series data or related card suggestions for a Metabase card - use this to get chronological data trends, find similar cards, or discover related analytical content for dashboard building
get_card_table_fksreadRetrieve foreign keys for a card
get_card_table_query_metadatareadRetrieve query metadata for a card
get_collection_itemsreadRetrieve all items (cards, dashboards) within a Metabase collection - use this to explore collection contents, organize analytical assets, or understand content structure
get_dashboardreadRetrieve detailed information about a specific Metabase dashboard including cards, layout, and settings - use this to examine dashboard structure or get configuration details
get_dashboard_cardsreadRetrieve all cards within a specific Metabase dashboard - use this to analyze dashboard content, understand data sources, or examine card configurations
get_dashboard_queriesreadExtract all queries from a dashboard with IDs resolved to actual table/column names - use this to understand dashboard data sources, audit queries, or plan migrations
get_dashboard_relatedreadRetrieve entities related to a Metabase dashboard - use this to discover related content, find similar analytical views, or understand dashboard relationships
get_dashboard_revisionsreadRetrieve revision history for a Metabase dashboard - use this to track dashboard evolution, review past changes, or restore previous versions
get_databasereadRetrieve detailed information about a specific Metabase database including connection details and schema - use this to examine database properties or troubleshoot connections
get_database_metadatareadRetrieve comprehensive database metadata including tables, fields, and relationships - use this to understand structure or build dynamic queries
get_database_schemareadRetrieve detailed information about a specific schema including tables and objects - use this to explore schema contents or understand organization
get_field_idreadLook up a field
get_metabase_playground_linkreadGenerate a Metabase playground link for interactive query exploration - allows users to see results and experiment with data in a user-friendly interface
get_tablereadRetrieve comprehensive table information including schema, fields, and metadata - use this to understand structure, explore fields, or get configuration details
get_table_datareadRetrieve sample data from table for preview and analysis - use this to examine content, verify quality, or understand data patterns
get_table_fksreadRetrieve foreign key relationships for a table - use this to understand data connections, build joins, or explore table dependencies
get_table_query_metadatareadRetrieve query-optimized table metadata for building dynamic queries - use this when constructing queries or building query interfaces
get_table_relatedreadFind tables and entities related through relationships or schemas - use this to discover connected data, find related content, or understand context
list_cardsreadRetrieve all Metabase cards with optional filtering by source type (e.g.,
list_collectionsreadRetrieve all Metabase collections for organizing analytical content - use this to understand content structure, find collections, or explore organizational hierarchy
list_dashboardsreadRetrieve all Metabase dashboards - use this to discover available dashboards, get an overview of analytical content, or find specific dashboards
list_database_schemasreadRetrieve all schema names in a database - use this to explore database organization or navigate multi-schema databases
list_databasesreadRetrieve all database connections in Metabase - use this to discover available data sources, check connection status, or get an overview of connected databases
list_embeddable_cardsreadRetrieve all Metabase cards configured for embedding in external applications (requires admin privileges) - use this to audit embedded content, manage external integrations, or review public-facing analytics
list_public_cardsreadRetrieve all Metabase cards that have public URLs enabled (requires admin privileges) - use this to audit publicly accessible content, review security settings, or manage external data sharing
list_tablesreadRetrieve all Metabase tables with optional ID filtering - use this to discover available tables, explore database schema, or get metadata about specific tables
list_usersreadRetrieve all Metabase users with their roles and permissions - use this to understand user access, manage permissions, or audit accounts
move_cardswriteRelocate multiple Metabase cards to a different collection or dashboard for better organization - use this to reorganize analytical content, group related cards, or clean up workspace structure
move_cards_to_collectionwriteBulk transfer multiple Metabase cards to a specific collection for organizational purposes - use this to categorize cards by team, project, or topic, or to implement content governance policies
move_to_collectionwriteMove a Metabase card or dashboard to a different collection - use this to reorganize content, implement governance policies, or clean up analytical assets
remove_cards_from_dashboarddestructiveRemove specific dashcards from a dashboard by their dashcard IDs (not card_id) - use this to clean up dashboards or reorganize content
reorder_table_fieldswriteChange display order of table fields for better organization - use this to arrange fields logically, group columns, or improve presentation
replace_table_csvreadCompletely replace table data with new CSV content - use this for full data refreshes, model updates, or complete table replacements
rescan_table_field_valueswriteTrigger rescan to refresh field values cache with current data - use this to update dropdown options, statistics, or filter values
revert_dashboardreadRestore a dashboard to a specific previous revision - use this to undo changes, restore deleted content, or return to known good configuration
save_dashboardwriteSave a complete dashboard object with nested data - use this for bulk operations or complex dashboard structures
save_dashboard_to_collectionwriteSave a dashboard object directly into a specific collection - use this for organized dashboard creation or bulk imports
search_card_param_valuesreadSearch and filter available parameter values for a Metabase card using a text query - use this to find specific parameter options in large datasets, help users locate filter values, or implement autocomplete functionality
search_contentreadSearch across all Metabase content including cards, dashboards, collections, and models - use this to find specific content, discover assets, or explore analytical resources
sync_database_schemawriteInitiate schema sync to update Metabase metadata cache - use this after database changes to recognize new tables, columns, or relationships
sync_table_schemawriteInitiate schema sync for specific table to update metadata - use this when table structure has changed and needs recognition
unfavorite_dashboarddestructiveRemove a dashboard from the user
update_cardwriteModify an existing Metabase card
update_collectionwriteUpdate collection properties including name, description, and organization - use this to maintain metadata, reorganize hierarchies, or update structure
update_dashboardwriteUpdate dashboard properties including name, description, parameters, and settings - use this to maintain metadata, reorganize content, or configure sharing
update_dashboard_cardswrite⚠️ DANGER: REPLACES ALL dashboard cards - any cards not in the array will be DELETED. To update a single card, first get_dashboard to fetch ALL cards, then include ALL of them with your modifications. This affects ALL tabs.
update_dashcardwriteUpdate a specific dashcard
update_databasewriteUpdate database configuration including name, connection details, and sync settings - use this to maintain connections, update credentials, or modify sync behavior
update_tablewriteUpdate table configuration including display name, description, and field settings - use this to customize presentation, update metadata, or configure data model
update_tableswriteBulk update multiple Metabase tables with same configuration - use this to apply consistent settings, update metadata, or modify table properties efficiently
validate_databasereadTest database connection parameters before creating - use this to verify credentials, connectivity, and accessibility
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (1 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (3)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_card, delete_card_public_link, delete_collection, delete_dashboard, delete_database, delete_public_link, discard_table_field_values, remove_cards_from_dashboard, unfavorite_dashboard
Why it matters. 9 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, abort-controller, axios, cors, express, @types/node, typescript
Why it matters. 7 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
README.md:8
A comprehensive Model Context Protocol (MCP) server for Metabase integration, providing AI assistants with full access to Metabase's analytics platform.

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha a2f5e0902344full audit observations/trust-audit/mcp-server/cognitionai__metabase-mcp-server.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12a2f5e0902344SAFEB89first audit
06

Questions

What is the @cognitionai/metabase-mcp-server MCP server?

Cognition's Metabase MCP Server

What tools does @cognitionai/metabase-mcp-server expose?

83 in total: 41 read-only, 33 that write, and 9 that can delete or overwrite (delete_card, delete_card_public_link, delete_collection, delete_dashboard, delete_database). Every one is listed on this page with its risk.

Is @cognitionai/metabase-mcp-server safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 9 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @cognitionai/metabase-mcp-server need?

It reads METABASE_API_KEY and METABASE_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

The grade is for one exact copy of the source (a2f5e0902344), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement