metabase
一个高性能的Model Context Protocol (MCP) 服务器,用于Metabase,使像Claude和Cursor这样的AI助手能够与您的Metabase实例进行交互。它支持数据库操作、查询执行、卡片管理等功能。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"metabase-mcp": {
"args": [
"metabase-mcp"
],
"command": "uvx",
"env": {
"METABASE_API_KEY": "your-api-key-here",
"METABASE_URL": "https://your-metabase-instance.com"
}
}
}
}
该服务需要配置环境变量:METABASE_API_KEY、METABASE_URL
可用工具 (9 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
list_databases
List all databases configured in Metabase. Returns: A dictionary containing all available databases with their metadata.
该工具无需必填参数,直接调用即可
list_tables 1 个参数 需填 1 项
List all tables in a specific database. Args: database_id: The ID of the database to query. Returns: Formatted markdown table showing table details.
必填参数:database_id
get_table_fields 2 个参数 需填 1 项
Get all fields/columns in a specific table. Args: table_id: The ID of the table. limit: Maximum number of fields to return (default: 20). Returns: Dictionary with field metadata, truncated if necessary.
必填参数:table_id
execute_query 3 个参数 需填 2 项
Execute a native SQL query against a Metabase database. Args: database_id: The ID of the database to query. query: The SQL query to execute. native_parameters: Optional parameters for the query. Returns: Query execution results.
必填参数:database_id、query
list_cards
List all saved questions/cards in Metabase. Returns: Dictionary containing all cards with their metadata.
该工具无需必填参数,直接调用即可
execute_card 2 个参数 需填 1 项
Execute a saved Metabase question/card and retrieve results. Args: card_id: The ID of the card to execute. parameters: Optional parameters for the card execution. Returns: Card execution results.
必填参数:card_id
create_card 6 个参数 需填 3 项
Create a new question/card in Metabase. Args: name: Name of the card. database_id: ID of the database to query. query: SQL query for the card. description: Optional description. collection_id: Optional collection to place the card in. visualization_settings: Optional visualization configuration. Returns: The created card object.
必填参数:name、database_id、query
list_collections
List all collections in Metabase. Returns: Dictionary containing all collections with their metadata.
该工具无需必填参数,直接调用即可
create_collection 4 个参数 需填 1 项
Create a new collection in Metabase. Args: name: Name of the collection. description: Optional description. color: Optional color for the collection. parent_id: Optional parent collection ID. Returns: The created collection object.
必填参数:name
服务介绍
Metabase MCP Server - Connect AI Assistants to Your Metabase Analytics
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
- Card Management: Execute, create, and manage Metabase questions/cards
- Collection Organization: Create and manage collections for better organization
- Natural Language Queries: Let AI assistants translate questions into SQL
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
.envfiles
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
ToolErrorexceptions 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
uvxoruvpackage 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
METABASE_USER_EMAIL=your-email@example.com
METABASE_PASSWORD=your-password
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
| Tool | Description |
|---|---|
list_databases |
List all configured databases in Metabase |
list_tables |
Get all tables in a specific database with metadata |
get_table_fields |
Retrieve field/column information for a table |
Query Operations
| Tool | Description |
|---|---|
execute_query |
Execute native SQL queries with parameter support |
execute_card |
Run saved Metabase questions/cards |
Card Management
| Tool | Description |
|---|---|
list_cards |
List all saved questions/cards |
create_card |
Create new questions/cards with SQL queries |
Collection Management
| Tool | Description |
|---|---|
list_collections |
Browse all collections |
create_collection |
Create 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
- FastMCP Documentation
- Model Context Protocol
- Metabase API Documentation
- Claude Desktop Documentation
- Cursor IDE
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