Metabase Analytics
Model Context Protocol server integrating AI assistants with Metabase analytics platform.
Model Context Protocol server integrating AI assistants with Metabase analytics platform.
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=[email protected] 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": "[email protected]", "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\":\"[email protected]\"}" ] } } }
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.