mcpField
M
Metabase MCP Server

Metabase MCP Server

Local
github.com/cheukyin175Data & Analytics73Updated 28w ago

About Metabase MCP Server

Metabase MCP Server is an MCP server that connects AI assistants to a Metabase instance, exposing databases, tables and saved cards. It targets data analysts and developers who want to run SQL or MongoDB queries from natural language.

Key features

  1. 01Browse databases, tables and fields
  2. 02Run native SQL queries with parameters
  3. 03Run native MongoDB aggregation queries
  4. 04Execute, create and manage saved cards
  5. 05Create and manage collections
  6. 06API key or email and password authentication

Use cases

  1. 01Ask an AI assistant to query Metabase databases in plain language
  2. 02Get help writing and reviewing SQL queries
  3. 03Create cards and collections to organize reports

MCP support

This project is an MCP server that exposes tools such as list_databases, execute_query and create_card to MCP clients like Claude Desktop and Cursor.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"metabase": {
"command": "uvx",
"args": [
"metabase-mcp"
]
}
}
}
Run commanduvx metabase-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimetabase-mcp

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Metabase MCP Server - Connect AI Assistants to Your Metabase Analytics

PyPI version Python 3.12+ License: MIT FastMCP

A high-performance Model Context Protocol (MCP) server for Metabase, enabling AI assistants like Claude, Cursor, and other MCP clients to interact seamlessly with your Metabase instance. Query databases, execute SQL, manage dashboards, and automate analytics workflows with natural language through AI-powered database operations.

Perfect for: Data analysts, developers, and teams looking to integrate AI assistants with their Metabase business intelligence platform for automated SQL queries, dashboard management, and data exploration.

Key Features

Database Operations
  • List Databases: Browse all configured Metabase databases
  • Table Discovery: Explore tables with metadata and descriptions
  • Field Inspection: Get detailed field/column information with smart pagination
Query & Analytics
  • SQL Execution: Run native SQL queries with parameter support and templating
  • MongoDB Support: Execute native MongoDB queries with automatic JSON conversion for aggregation pipelines
  • Card Management: Execute, create, and manage Metabase questions/cards (SQL and MongoDB)
  • Collection Organization: Create and manage collections for better organization
  • Natural Language Queries: Let AI assistants translate questions into SQL or MongoDB queries
Authentication & Security
  • API Key Support: Secure authentication via Metabase API keys (recommended)
  • Session-based Auth: Alternative email/password authentication
  • Environment Variables: Secure credential management via .env files
AI Assistant Integration
  • Claude Desktop: Native integration with Anthropic's Claude AI
  • Cursor IDE: Seamless integration for AI-assisted development
  • Any MCP Client: Compatible with all Model Context Protocol clients
Enhanced Performance & Reliability
  • Context-aware Logging: Real-time logging with debug, info, warning, and error levels visible to AI clients
  • Proper Error Handling: FastMCP ToolError exceptions for better error messages and debugging
  • Middleware Stack: Built-in error handling and logging middleware for production reliability
  • Best Practices: Follows latest FastMCP patterns with duplicate prevention and clean configuration
  • Modern Python: Uses Python 3.12+ type hints (| syntax) for better type safety

Quick Start

Prerequisites
  • Python 3.12+
  • Metabase instance with API access
  • uvx or uv package manager
Installation
Option 1: Using uvx (Easiest - No Installation Required)
# Run directly without installing (like npx for Python)
uvx metabase-mcp

# With environment variables
METABASE_URL=https://your-instance.com METABASE_API_KEY=your-key uvx metabase-mcp
Option 2: Install from PyPI
# Install globally
uv tool install metabase-mcp

# Or with pip
pip install metabase-mcp

# Then run
metabase-mcp
Option 3: Development Setup (From Source)
# Clone the repository
git clone https://github.com/cheukyin175/metabase-mcp.git
cd metabase-mcp

# Install dependencies
uv sync

# Run the server
uv run python server.py

Configuration

Create a .env file with your Metabase credentials:

cp .env.example .env
Configuration Options
Option 1: API Key Authentication (Recommended)
METABASE_URL=https://your-metabase-instance.com
METABASE_API_KEY=your-api-key-here
Option 2: Email/Password Authentication
METABASE_URL=https://your-metabase-instance.com
[email protected]
METABASE_PASSWORD=your-password
Optional: Metabase API HTTP Timeout
METABASE_HTTP_TIMEOUT=30.0  # Default: 30.0 seconds
Optional: Custom Host/Port for SSE/HTTP
HOST=localhost  # Default: 0.0.0.0
PORT=9000      # Default: 8000

Usage

Run the Server
Quick Start (No Setup Required)
# Run directly with uvx
uvx metabase-mcp

# With custom Metabase instance
METABASE_URL=https://your-instance.com METABASE_API_KEY=your-key uvx metabase-mcp
From Source (Development)
# STDIO transport (default)
uv run python server.py

# SSE transport (uses HOST=0.0.0.0, PORT=8000 by default)
uv run python server.py --sse

# HTTP transport (uses HOST=0.0.0.0, PORT=8000 by default)
uv run python server.py --http

# Custom host and port via environment variables
HOST=localhost PORT=9000 uv run python server.py --sse
HOST=192.168.1.100 PORT=8080 uv run python server.py --http
Cursor Integration

You can manually configure Cursor by editing your Cursor settings.

For SSE transport: You must start the server before using Cursor:

uv run python server.py --sse
Claude Desktop Integration
Option 1: Using uvx (Recommended)

Add this to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
    "mcpServers": {
        "metabase-mcp": {
            "command": "uvx",
            "args": ["metabase-mcp"],
            "env": {
                "METABASE_URL": "https://your-metabase-instance.com",
                "METABASE_API_KEY": "your-api-key-here"
            }
        }
    }
}
Option 2: Using Local Installation

If you've cloned the repository:

{
    "mcpServers": {
        "metabase-mcp": {
            "command": "uv",
            "args": [
                "run",
                "--directory",
                "/absolute/path/to/metabase-mcp",
                "python",
                "server.py"
            ],
            "env": {
                "METABASE_URL": "https://your-metabase-instance.com",
                "METABASE_API_KEY": "your-api-key-here"
            }
        }
    }
}
Option 3: Using FastMCP CLI
fastmcp install server.py -n "Metabase MCP"

Available Tools

Database Operations
ToolDescription
list_databasesList all configured databases in Metabase
list_tablesGet all tables in a specific database with metadata
get_table_fieldsRetrieve field/column information for a table
Query Operations
ToolDescription
execute_queryExecute native SQL queries with parameter support
execute_mongodb_queryExecute native MongoDB queries with automatic JSON conversion for aggregation pipelines
execute_cardRun saved Metabase questions/cards
Card Management
ToolDescription
list_cardsList all saved questions/cards
create_cardCreate new questions/cards with SQL queries
create_mongodb_cardCreate new MongoDB questions/cards with native query support
Collection Management
ToolDescription
list_collectionsBrowse all collections
create_collectionCreate new collections for organization

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 (HOST=0.0.0.0, PORT=8000)
uv run python server.py --http                 # HTTP (HOST=0.0.0.0, PORT=8000)
HOST=localhost PORT=9000 uv run python server.py --sse   # Custom host/port

Development

Setup Development Environment
# Install with dev dependencies
uv sync --group dev

# Or with pip
pip install -r requirements-dev.txt
Code Quality
# Run linting
uv run ruff check .

# Format code
uv run ruff format .

# Type checking
uv run mypy server.py

Usage Examples

Query Examples
# List all databases
databases = await list_databases()

# Execute a SQL query
result = await execute_query(
    database_id=1,
    query="SELECT * FROM users LIMIT 10"
)

# Create and run a card
card = await create_card(
    name="Active Users Report",
    database_id=1,
    query="SELECT COUNT(*) FROM users WHERE active = true",
    collection_id=2
)

Project Structure

metabase-mcp/
├── server.py                 # Main MCP server implementation
├── pyproject.toml           # Project configuration and dependencies
└── .env.example             # Environment variables template

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details

Resources

Keywords & Topics

metabase mcp model-context-protocol claude cursor ai-assistant fastmcp sql database analytics business-intelligence bi data-analysis anthropic llm python automation api data-science query-builder natural-language-sql

Star History

If you find this project useful, please consider giving it a star! It helps others discover this tool.

Use Cases

  • Natural Language Database Queries: Ask Claude to query your Metabase databases using plain English
  • Automated Report Generation: Use AI to create and manage Metabase cards and collections
  • Data Exploration: Let AI assistants help you discover insights from your data
  • SQL Query Assistance: Get help writing and optimizing SQL queries through AI
  • Dashboard Management: Automate the creation and organization of Metabase dashboards
  • Data Analysis Workflows: Integrate AI-powered analytics into your development workflow

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.