A comprehensive Model Context Protocol (MCP) server for Metabase integration, providing AI assistants with full access to Metabase's analytics platform.
# 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- π 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
Access Metabase entities via standardized URIs:
metabase://dashboards- All dashboardsmetabase://cards- All cards/questionsmetabase://databases- All database connectionsmetabase://collections- All collectionsmetabase://users- All users
π‘ Recommended: Node.js 20.19.0+ and npm 8.0.0+ for optimal compatibility
npx @cognitionai/metabase-mcp-servernpm install -g @cognitionai/metabase-mcp-server
metabase-mcp-serverdocker run -it --rm \
-e METABASE_URL=https://your-metabase-instance.com \
-e METABASE_API_KEY=your_metabase_api_key \
ghcr.io/CognitionAI/metabase-mcp-serverAPI Key Authentication (Preferred):
export METABASE_URL=https://your-metabase-instance.com
export METABASE_API_KEY=your_metabase_api_keyUsername/Password Authentication (Fallback):
export METABASE_URL=https://your-metabase-instance.com
export METABASE_USERNAME=your_username
export METABASE_PASSWORD=your_passwordThe server supports command-line arguments to customize tool loading:
--essential(default): Load only essential tools--all: Load all 80+ available tools--write: Load only write/modification tools--read: Load only read-only tools
# Using published package (recommended)
# Default behavior (essential tools only)
npx @cognitionai/metabase-mcp-server
# Load all tools
npx @cognitionai/metabase-mcp-server --all
# Load only write tools
npx @cognitionai/metabase-mcp-server --write
# Load only read-only tools
npx @cognitionai/metabase-mcp-server --read
# Using local development build
npm run build
node dist/server.js # Default (essential tools)
node dist/server.js --all # All tools
node dist/server.js --write # Write tools only
node dist/server.js --read # Read-only tools onlyAdd to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Using published package:
{
"mcpServers": {
"metabase": {
"command": "npx",
"args": ["@cognitionai/metabase-mcp-server"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your_metabase_api_key"
}
}
}
}Using local development build:
{
"mcpServers": {
"metabase": {
"command": "node",
"args": ["/path/to/metabase-mcp-server/dist/server.js"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your_metabase_api_key"
}
}
}
}With custom flags:
{
"mcpServers": {
"metabase-all": {
"command": "npx",
"args": ["@cognitionai/metabase-mcp-server", "--all"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your_metabase_api_key"
}
}
}
}Add to your Windsurf MCP config (~/.windsurf/mcp_config.json):
Using published package:
{
"mcpServers": {
"metabase": {
"command": "npx",
"args": ["@cognitionai/metabase-mcp-server"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your_metabase_api_key"
}
}
}
}Using local development build:
{
"mcpServers": {
"metabase": {
"command": "node",
"args": ["/path/to/metabase-mcp-server/dist/server.js"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your_metabase_api_key"
}
}
}
}With custom flags:
{
"mcpServers": {
"metabase-read": {
"command": "npx",
"args": ["@cognitionai/metabase-mcp-server", "--read"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your_metabase_api_key"
}
},
"metabase-write": {
"command": "npx",
"args": ["@cognitionai/metabase-mcp-server", "--write"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your_metabase_api_key"
}
}
}
}π Dashboard Management (23 tools)
list_dashboards- List all dashboardsget_dashboard- Get dashboard by IDcreate_dashboard- Create new dashboardupdate_dashboard- Update existing dashboarddelete_dashboard- Delete dashboardcopy_dashboard- Copy dashboard
get_dashboard_cards- Get all cards in dashboardadd_card_to_dashboard- Add card to dashboardremove_card_from_dashboard- Remove card from dashboardupdate_dashboard_card- Update card position/settingsexecute_dashboard_card- Execute specific dashboard card
create_public_link- Create public dashboard linkdelete_public_link- Delete public dashboard linklist_public_dashboards- List public dashboardslist_embeddable_dashboards- List embeddable dashboards
get_dashboard_param_values- Get parameter valuessearch_dashboard_param_values- Search parameter valuesget_dashboard_param_remapping- Get parameter remappingexecute_dashboard_query- Execute dashboard queries
get_dashboard_related- Get related contentget_dashboard_query_metadata- Get query metadataupdate_dashboard_cards- Bulk update cardssave_dashboard- Save dashboard changesget_dashboard_items- Get dashboard items
π Card/Question Management (21 tools)
list_cards- List all cards/questionsget_card- Get card by IDcreate_card- Create new cardupdate_card- Update existing carddelete_card- Delete cardcopy_card- Copy card
execute_card- Execute card queryexecute_card_query_with_format- Execute with specific formatexecute_pivot_card_query- Execute pivot queryget_card_query_metadata- Get query metadata
move_cards- Move cards between collectionsmove_cards_to_collection- Bulk move to collectionget_card_dashboards- Get dashboards containing cardget_card_series- Get card series data
get_card_param_values- Get parameter valuessearch_card_param_values- Search parameter valuesget_card_param_remapping- Get parameter remapping
create_card_public_link- Create public card linkdelete_card_public_link- Delete public card linkget_public_cards- List public cardsget_embeddable_cards- List embeddable cards
ποΈ Database Management (13 tools)
list_databases- List all databasesget_database- Get database detailscreate_database- Create database connectionupdate_database- Update database settingsdelete_database- Delete database connection
get_database_schema_tables- Get database tablesget_database_schemas- Get database schemasget_database_metadata- Get complete metadatasync_database_schema- Sync schema metadata
execute_query- Execute SQL queriesexecute_query_export- Execute and export results
get_database_usage_info- Get usage statisticsrescan_database_field_values- Rescan field values
π Table Management (16 tools)
list_tables- List tables with filteringget_table- Get table detailsupdate_table- Update table configurationupdate_tables- Bulk update tables
get_table_data- Retrieve table dataappend_csv_to_table- Append CSV datareplace_table_csv- Replace with CSV data
get_table_query_metadata- Get query metadataget_table_fks- Get foreign key relationshipsget_table_related- Get related tablessync_table_schema- Sync table schema
reorder_table_fields- Reorder field displayrescan_table_field_values- Rescan field valuesdiscard_table_field_values- Discard cached values
get_card_table_fks- Get card table foreign keysget_card_table_query_metadata- Get card table metadata
π Additional Tools (9 tools)
list_collections- List all collectionscreate_collection- Create new collectionupdate_collection- Update collectiondelete_collection- Delete collectionget_collection_items- Get collection items
search_content- Search across all content
get_recent_views- Get recent activityget_popular_items- Get popular content
get_metabase_playground_link- Generate interactive playground links
git clone https://github.com/CognitionAI/metabase-mcp-server.git
cd metabase-mcp-server
npm installnpm run buildnpm run watchUse the MCP Inspector for debugging:
npm run inspector- Set
METABASE_URLandMETABASE_API_KEY - Start server and verify "Using Metabase API Key" in logs
- Test with
list_dashboardstool
- Unset
METABASE_API_KEY - Set
METABASE_URL,METABASE_USERNAME,METABASE_PASSWORD - Start server and verify "Using username/password" in logs
- Test with
list_dashboardstool
Authentication Errors:
- Verify your Metabase URL is accessible
- Check API key validity in Metabase admin settings
- Ensure username/password credentials are correct
Connection Issues:
- Confirm Metabase instance is running
- Check network connectivity
- Verify SSL certificates if using HTTPS
Tool Execution Errors:
- Check Metabase permissions for your user/API key
- Verify the requested resource exists
- Review server logs for detailed error messages
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please visit our GitHub repository to:
- π Report bugs
- π‘ Request features
- π§ Submit pull requests
- π Improve documentation
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Ensure all tests pass
- Submit a pull request
- π Documentation
- π Issue Tracker
Built with β€οΈ for the world