Supports containerized deployment via Docker for running the MCP server in isolated environments with proper environment variable configuration.
Enables configuration through .env files for setting up authentication and other server parameters.
Links to the developer's GitHub profile and potentially hosts the source code repository.
Provides specific configuration instructions for integration with Claude Desktop on macOS systems.
Provides direct access to Metabase analytics platform data, enabling retrieval of dashboards, cards, databases, and execution of both saved questions and custom SQL queries against connected databases.
Runs on Node.js runtime environment, requiring version 18.0.0 or higher for server operation.
Built using TypeScript for type safety and improved developer experience.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Metabase MCPshow me last month's sales dashboard"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Metabase MCP Server
Author: Hyeongjun Yu (@hyeongjun-dev)
A Model Context Protocol server that integrates AI assistants with Metabase analytics platform.
Overview
This TypeScript-based MCP server provides seamless integration with the Metabase API, enabling AI assistants to directly interact with your analytics data. Designed for Claude and other MCP-compatible AI assistants, this server acts as a bridge between your analytics platform and conversational AI.
Key Features
Resource Access: Navigate Metabase resources via intuitive
metabase://URIsTwo Authentication Methods: Support for both session-based and API key authentication
Structured Data Access: JSON-formatted responses for easy consumption by AI assistants
Comprehensive Logging: Detailed logging for easy debugging and monitoring
Error Handling: Robust error handling with clear error messages
Related MCP server: MariaDB Reader MCP Server
Available Tools
The server exposes the following tools for AI assistants:
list_dashboards: Retrieve all available dashboards in your Metabase instancelist_cards: Get all saved questions/cards in Metabaselist_databases: View all connected database sourcesexecute_card: Run saved questions and retrieve results with optional parametersget_dashboard_cards: Extract all cards from a specific dashboardexecute_query: Execute custom SQL queries against any connected database
Configuration
The server supports two authentication methods:
Option 1: Username and Password Authentication
# Required
METABASE_URL=https://your-metabase-instance.com
METABASE_USER_EMAIL=your_email@example.com
METABASE_PASSWORD=your_password
# Optional
LOG_LEVEL=info # Options: debug, info, warn, error, fatalOption 2: API Key Authentication (Recommended for Production)
# Required
METABASE_URL=https://your-metabase-instance.com
METABASE_API_KEY=your_api_key
# Optional
LOG_LEVEL=info # Options: debug, info, warn, error, fatalYou can set these environment variables directly or use a .env file with dotenv.
Installation
Prerequisites
Node.js 18.0.0 or higher
An active Metabase instance with appropriate credentials
Development Setup
# Install dependencies
npm install
# Build the project
npm run build
# Start the server
npm start
# For development with auto-rebuild
npm run watchClaude Desktop Integration
To use with Claude Desktop, add this server configuration:
MacOS: Edit ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: Edit %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"metabase-mcp-server": {
"command": "/absolute/path/to/metabase-mcp-server/build/index.js",
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_USER_EMAIL": "your_email@example.com",
"METABASE_PASSWORD": "your_password"
// Or alternatively, use API key authentication
// "METABASE_API_KEY": "your_api_key"
}
}
}
}Alternatively, you can use the Smithery hosted version via npx with JSON configuration:
API Key Authentication:
{
"mcpServers": {
"metabase-mcp-server": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@hyeongjun-dev/metabase-mcp-server",
"--config",
"{\"metabaseUrl\":\"https://your-metabase-instance.com\",\"metabaseApiKey\":\"your_api_key\",\"metabasePassword\":\"\",\"metabaseUserEmail\":\"\"}"
]
}
}
}Username and Password Authentication:
{
"mcpServers": {
"metabase-mcp-server": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@hyeongjun-dev/metabase-mcp-server",
"--config",
"{\"metabaseUrl\":\"https://your-metabase-instance.com\",\"metabaseApiKey\":\"\",\"metabasePassword\":\"your_password\",\"metabaseUserEmail\":\"your_email@example.com\"}"
]
}
}
}Debugging
Since MCP servers communicate over stdio, use the MCP Inspector for debugging:
npm run inspectorThe Inspector will provide a browser-based interface for monitoring requests and responses.
Docker Support
A Docker image is available for containerized deployment:
# Build the Docker image
docker build -t metabase-mcp-server .
# Run the container with environment variables
docker run -e METABASE_URL=https://your-metabase.com \
-e METABASE_API_KEY=your_api_key \
metabase-mcp-serverSecurity Considerations
We recommend using API key authentication for production environments
Keep your API keys and credentials secure
Consider using Docker secrets or environment variables instead of hardcoding credentials
Apply appropriate network security measures to restrict access to your Metabase instance
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.