metabase-mcp
If you are the rightful owner of metabase-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol server that integrates AI assistants with Metabase analytics platform.
Metabase FastMCP Server
A FastMCP (Model Context Protocol) server for Metabase, built with Python. This server provides tools to interact with Metabase databases, execute queries, manage cards, and work with collections.
Features
- List and manage Metabase databases
- Execute SQL queries and saved questions/cards
- Create and manage cards (questions)
- Work with collections
- List tables and fields
- Full authentication support (API Key or Session-based)
Installation
Quick Start with uv (Recommended)
-
Install uv if not already installed: Please refer to uv
-
Clone and setup:
uv sync # Install dependencies and create virtual environment
- Configure environment:
cp .env.example .env
# Edit .env with your Metabase configuration
Alternative Installation (pip)
pip install -r requirements.txt
Configuration
Set the following environment variables in your .env
file:
METABASE_URL
: Your Metabase instance URLMETABASE_API_KEY
: Your Metabase API key (preferred method)
OR
METABASE_USER_EMAIL
: Your Metabase user emailMETABASE_PASSWORD
: Your Metabase password
Usage
Run the Server
# STDIO transport (default)
uv run python server.py
# SSE transport on port 8000
uv run python server.py --sse
# SSE transport on custom port
uv run python server.py --sse 9000
# HTTP transport on port 8000
uv run python server.py --http
FastMCP CLI Integration
# Run with FastMCP CLI
fastmcp run server.py
# Install as Claude Desktop MCP server
fastmcp install server.py -n "Metabase MCP"
Cursor Integration
For Cursor IDE integration:
STDIO Transport (Default)
uv run python scripts/install-cursor.py
SSE Transport
# Install with SSE transport
uv run python scripts/install-cursor.py --sse # Port 8000 (default)
uv run python scripts/install-cursor.py --sse 9000 # Custom port
# Or use the dedicated SSE installer
uv run python scripts/install-cursor-sse.py # Port 8000
uv run python scripts/install-cursor-sse.py 9000 # Custom port
Important for SSE: You must start the server before using Cursor:
uv run python server.py --sse 8000
Available Tools
list_databases
: List all databases in Metabaselist_cards
: List all questions/cards in Metabaseexecute_card
: Execute a Metabase question/card and get resultsexecute_query
: Execute a SQL query against a Metabase databasecreate_card
: Create a new question/card in Metabaselist_collections
: List all collections in Metabasecreate_collection
: Create a new collection in Metabaselist_tables
: List all tables in a databaseget_table_fields
: Get all fields/columns in a table
Transport Methods
The server supports multiple transport methods:
- STDIO (default): For IDE integration (Cursor, Claude Desktop)
- SSE: Server-Sent Events for web applications
- HTTP: Standard HTTP for API access
uv run python server.py # STDIO (default)
uv run python server.py --sse # SSE on port 8000
uv run python server.py --http # HTTP on port 8000
Development
Development Setup
# Install development dependencies (Python 3.12+)
uv sync --group dev
# Run tests
uv run pytest
# Format and lint code
uv run ruff check . # Lint
uv run ruff format . # Format
uv run black . # Alternative formatter
uv run isort . # Import sorting
# Type checking
uv run mypy server.py
Validation
# Validate installation
uv run python scripts/validate.py
Examples
Check out the example files for usage patterns:
examples/examples.py
- Basic usage examplesexamples/quick-start.py
- Quick start guideexamples/sse-example.py
- SSE transport usage example
Files Overview
server.py
- Main FastMCP serverpyproject.toml
- Modern Python project configurationscripts/install-cursor.py
- Cross-platform Cursor installationscripts/install-cursor-sse.py
- SSE-specific Cursor installationscripts/validate.py
- Installation validationexamples/
- Usage examples and quick start guidestests/test_server.py
- Basic server testsconfig/cursor-config.json
- Example Cursor configuration