metabase-server
metabase-mcp-mbql
Serveur MCP (Model Context Protocol) pour l'intégration avec Metabase, avec support complet de MBQL pour l'édition visuelle des requêtes.
Installation
npm install metabase-mcp-mbqlConfiguration MCP
Ajoutez cette configuration à votre client MCP (Claude Desktop, etc.) :
{
"mcpServers": {
"metabase": {
"command": "npx",
"args": ["metabase-mcp-mbql"],
"env": {
"METABASE_URL": "https://metabase.example.com",
"METABASE_API_KEY": "mb_votre_cle_api"
}
}
}
}Authentification
Deux méthodes sont supportées :
1. Clé API (recommandé) :
{
"METABASE_URL": "https://metabase.example.com",
"METABASE_API_KEY": "mb_votre_cle_api"
}2. Identifiants utilisateur :
{
"METABASE_URL": "https://metabase.example.com",
"METABASE_USERNAME": "votre_email",
"METABASE_PASSWORD": "votre_mot_de_passe"
}Outils disponibles
Dashboards
Outil | Description |
| Liste tous les dashboards |
| Récupère les détails complets d'un dashboard (cartes, paramètres) |
| Crée un nouveau dashboard |
| Met à jour un dashboard existant |
| Archive ou supprime un dashboard |
| Liste toutes les cartes d'un dashboard |
| Ajoute une carte à un dashboard |
| Retire une carte d'un dashboard |
| Met à jour les cartes avec leurs mappings de paramètres |
| Ajoute ou met à jour un filtre sur un dashboard |
Cards (Questions)
Outil | Description |
| Liste toutes les questions/cartes (filtres: |
| Récupère une carte avec sa configuration complète (dataset_query, template-tags) |
| Crée une nouvelle question |
| Met à jour une question existante |
| Archive ou supprime une question |
| Exécute une question et retourne les résultats |
Requêtes MBQL
Outil | Description |
| Crée une question en MBQL (éditable dans le query builder visuel) |
| Exécute une requête MBQL sans créer de carte |
Requêtes SQL
Outil | Description |
| Exécute une requête SQL native sur une base de données |
Bases de données
Outil | Description |
| Liste toutes les bases de données |
| Récupère les métadonnées complètes (tables, champs, IDs) |
| Récupère les métadonnées détaillées d'une table |
Collections
Outil | Description |
| Liste toutes les collections |
| Crée une nouvelle collection |
| Met à jour une collection |
Utilisateurs
Outil | Description |
| Liste tous les utilisateurs |
| Récupère les détails d'un utilisateur |
| Crée un nouvel utilisateur |
| Met à jour un utilisateur |
| Désactive un utilisateur |
Permissions
Outil | Description |
| Liste les groupes de permissions |
| Crée un groupe de permissions |
| Supprime un groupe de permissions |
| Récupère le graphe des permissions par collection |
| Met à jour les permissions d'un groupe sur une collection |
| Ajoute un utilisateur à un groupe |
| Retire un utilisateur d'un groupe |
Exemples d'utilisation
Créer une question MBQL
{
"name": "Ventes par mois",
"database_id": 1,
"query": {
"source-table": 123,
"aggregation": [["sum", ["field", 456, null]]],
"breakout": [["field", 789, {"temporal-unit": "month"}]]
},
"display": "line"
}Configurer un filtre avec template-tag
{
"card_id": 42,
"dataset_query": {
"type": "native",
"database": 1,
"native": {
"query": "SELECT * FROM orders WHERE status = {{status}}",
"template-tags": {
"status": {
"id": "abc-123",
"name": "status",
"display-name": "Statut",
"type": "dimension",
"dimension": ["field", 456, null],
"widget-type": "category"
}
}
}
}
}Connecter un filtre dashboard à une carte
{
"dashboard_id": 10,
"cards": [{
"id": 100,
"card_id": 42,
"row": 0,
"col": 0,
"size_x": 6,
"size_y": 4,
"parameter_mappings": [{
"parameter_id": "filter-1",
"card_id": 42,
"target": ["variable", ["template-tag", "status"]]
}]
}]
}Développement
# Installation des dépendances
npm install
# Build
npm run build
# Watch mode
npm run watch
# Inspector MCP (debug)
npm run inspectorLicence
MIT