Connect AI assistants to your Metabase analytics platform. Access dashboards, execute queries, and retrieve data seamlessly through conversational interfaces. Enhance your analytics experience with structured data access and robust error handling.
Author: Hyeongjun Yu (@hyeongjun-dev)
A Model Context Protocol server that integrates AI assistants with Metabase analytics platform.
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.
metabase://
URIsThe 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 databaseThe server supports two authentication methods:
# 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, fatal
# Required METABASE_URL=https://your-metabase-instance.com METABASE_API_KEY=your_api_key # Optional LOG_LEVEL=info # Options: debug, info, warn, error, fatal
You can set these environment variables directly or use a .env
file with dotenv.
# Install dependencies npm install # Build the project npm run build # Start the server npm start # For development with auto-rebuild npm run watch
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:
{ "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":""}" ] } } }
{ "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"}" ] } } }
Since MCP servers communicate over stdio, use the MCP Inspector for debugging:
npm run inspector
The Inspector will provide a browser-based interface for monitoring requests and responses.
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-server
Contributions are welcome! Please feel free to submit a Pull Request.
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!