Système d'agents intelligents pour interroger BigQuery et créer des visualisations automatiquement, avec support du protocole MCP pour Claude Desktop.
🎯 Nouveau : Support multi-LLM ! Le système est maintenant agnostique au modèle LLM. Choisissez entre Gemini, Claude, OpenAI ou Ollama.
⚡ Utilise uv pour une installation ultra-rapide et fiable !
- 🔍 Agent BigQuery Intelligent : Découverte automatique des datasets et tables
- 📊 Agent Dashboard : Génération automatique de visualisations Plotly
- 🔌 Support MCP : Compatible avec Claude Desktop et autres clients MCP
- 🤝 Interaction naturelle : Posez vos questions en langage naturel
- 🎯 Exploration autonome : L'agent raisonne et trouve les bonnes données
- 🔄 Multi-LLM : Choisissez votre modèle préféré (Gemini, Claude, OpenAI, Ollama)
- ⚡ Installation moderne avec
uv: 10-100x plus rapide que pip
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | shWindows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"git clone <votre-repo>
cd agent-py
# Créer le fichier .env
cp .env.example .env
# Éditez .env et ajoutez votre GOOGLE_CLOUD_PROJECT_ID
# Authentification Google Cloud
gcloud auth application-default loginPas besoin d'installer manuellement les dépendances. uv s'en charge automatiquement.
Configuration minimale - Juste ça suffit :
Éditez ~/Library/Application Support/Claude/claude_desktop_config.json :
{
"mcpServers": {
"bigquery-dashboard": {
"command": "uv",
"args": [
"--directory",
"/Users/younessdrissislimani/PycharmProjects/agent-py",
"run",
"bigquery-dashboard-mcp"
],
"env": {
"GOOGLE_CLOUD_PROJECT_ID": "votre-projet-gcp"
}
}
}
}Avantages :
- ✅ Pas de clé API LLM nécessaire (utilise Claude)
- ✅ Installation automatique des dépendances par
uv - ✅ Pas de gestion d'environnement virtuel
- ✅ Mises à jour simplifiées
Redémarrez Claude Desktop et c'est prêt !
# Configure ton LLM dans .env
echo 'LLM_PROVIDER=gemini' >> .env
echo 'GEMINI_API_KEY=ta-cle' >> .env
# Lance le script
uv run python main.pypython -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py| Méthode | Installation | Performance | Gestion dépendances | Recommandé pour |
|---|---|---|---|---|
| uv | Automatique | ⚡ Ultra-rapide | Automatique | MCP, production |
| pip + venv | Manuelle | Lent | Manuelle | Développement local |
# Avec uv
uv run bigquery-dashboard-mcp
# Avec Python
python mcp_server.pynpx @modelcontextprotocol/inspector uv --directory $(pwd) run bigquery-dashboard-mcpCela ouvre une interface web pour tester vos outils interactivement.
┌─────────────────────────────────────────────────┐
│ Interface Utilisateur │
├─────────────────┬───────────────────────────────┤
│ Claude Desktop │ Terminal Direct (main.py) │
│ (utilise │ (LLM configurable) │
│ Claude) │ │
└────────┬────────┴───────────────────────────────┘
│ │
│ MCP │ Direct
│ │
┌────────▼────────────────▼───────────────────────┐
│ Orchestration Layer │
│ - mcp_server.py (pas de LLM interne) │
│ - main.py (LLM configurable) │
└────────┬────────────────────────────────────────┘
│
┌────┴──────────────────────┐
│ │
┌───▼──────────────┐ ┌──────▼──────────────┐
│ BigQuery Agent │ │ Dashboard Agent │
│ (LangChain) │ │ (LangChain) │
│ │ │ │
│ Outils: │ │ Fonctions: │
│ - list_datasets │ │ - Génération code │
│ - list_tables │ │ - Visualisation │
│ - get_schema │ │ Plotly │
│ - execute_sql │ │ │
└───┬──────────────┘ └──────┬──────────────┘
│ │
┌───▼────────────┐ ┌──────▼──────┐
│ Google │ │ Plotly │
│ BigQuery │ │ Express │
└────────────────┘ └─────────────┘
git clone <votre-repo>
cd agent-pypython -m venv .venv
source .venv/bin/activate # Sur Windows: .venv\Scripts\activatepip install -r requirements.txtCopiez le fichier .env.example vers .env et configurez-le :
cp .env.example .envÉditez .env selon votre cas d'usage :
GOOGLE_CLOUD_PROJECT_ID="votre-projet-gcp"Option 1 : Gemini (Google)
GOOGLE_CLOUD_PROJECT_ID="votre-projet-gcp"
LLM_PROVIDER="gemini"
GEMINI_API_KEY="votre-cle-api-gemini"Option 2 : Claude (Anthropic)
GOOGLE_CLOUD_PROJECT_ID="votre-projet-gcp"
LLM_PROVIDER="claude"
ANTHROPIC_API_KEY="votre-cle-api-claude"Option 3 : OpenAI (GPT-4)
GOOGLE_CLOUD_PROJECT_ID="votre-projet-gcp"
LLM_PROVIDER="openai"
OPENAI_API_KEY="votre-cle-api-openai"Option 4 : Ollama (Local)
GOOGLE_CLOUD_PROJECT_ID="votre-projet-gcp"
LLM_PROVIDER="ollama"
OLLAMA_BASE_URL="http://localhost:11434"
OLLAMA_MODEL="llama2"gcloud auth application-default loginAvantage : Pas besoin de clé API LLM ! Claude Desktop utilise son propre modèle Claude.
- Configurez Claude Desktop avec seulement
GOOGLE_CLOUD_PROJECT_ID:
{
"mcpServers": {
"bigquery-dashboard": {
"command": "python",
"args": [
"/Users/younessdrissislimani/PycharmProjects/agent-py/mcp_server.py"
],
"env": {
"GOOGLE_CLOUD_PROJECT_ID": "votre-projet-gcp"
}
}
}
}-
Redémarrez Claude Desktop
-
Utilisez Claude naturellement :
- "Montre-moi le nombre de vues par vidéo dans BigQuery"
- "Crée un graphique à barres de ces données"
Claude utilisera automatiquement les outils MCP pour explorer BigQuery !
Lancez le script principal interactif avec votre LLM choisi :
python main.pyLe système affichera le modèle utilisé :
🤖 Utilisation du modèle: Google Gemini Pro
ou
🤖 Utilisation du modèle: Anthropic Claude 3.5 Sonnet
Exemple d'interaction :
=== Agent BigQuery Intelligent ===
🤖 Utilisation du modèle: Anthropic Claude 3.5 Sonnet
Posez votre question : donne moi le nombre de vues par vidéo
--- L'agent analyse votre question et explore BigQuery ---
[L'agent liste les datasets...]
[L'agent explore les tables...]
[L'agent examine les schémas...]
[L'agent exécute la requête...]
--- Résultats de la requête ---
video_id video_title views
0 v123 Introduction 15000
1 v124 Tutorial Part 1 8500
2 v125 Demo 12300
Voulez-vous visualiser ces résultats dans un tableau de bord ? (oui/non): oui
--- Création de la Visualisation ---
🤖 Utilisation du modèle: Anthropic Claude 3.5 Sonnet
[Un graphique interactif s'affiche dans votre navigateur]
| Caractéristique | MCP (Claude Desktop) | Terminal Direct |
|---|---|---|
| Modèle LLM | Claude (inclus) | Configurable (Gemini, Claude, OpenAI, Ollama) |
| Configuration | Minimale (juste BigQuery) | Nécessite clé API LLM |
| Interface | Interface graphique Claude | Ligne de commande |
| Coût | Inclus dans Claude Desktop | Selon API choisie |
| Flexibilité | Limité à Claude | Choix du modèle |
| Recommandé pour | Utilisateurs Claude Desktop | Développeurs, scripts |
Quand vous utilisez Claude Desktop, Claude a accès à 5 outils :
Liste tous les datasets disponibles.
Liste les tables d'un dataset.
Récupère le schéma d'une table.
Exécute une requête SQL sur BigQuery.
Crée une visualisation à partir des données.
Claude les utilise automatiquement de manière intelligente !
python mcp_server.pynpx @modelcontextprotocol/inspector python mcp_server.pyagent-py/
├── main.py # Script principal interactif
├── mcp_server.py # Serveur MCP (agnostique au modèle)
├── requirements.txt # Dépendances Python
├── .env # Variables d'environnement (à créer)
├── .env.example # Exemple de configuration
├── MCP_SETUP.md # Guide détaillé MCP
├── README.md # Ce fichier
└── src/
├── llm_config.py # Configuration dynamique des LLM
├── bigquery_agent/
│ ├── __init__.py
│ ├── agent.py # Agent BigQuery (multi-LLM)
│ └── main.py # Exemple standalone
└── dashboard_agent/
├── __init__.py
├── agent.py # Agent Dashboard (multi-LLM)
└── main.py # Exemple standalone
- Python 3.12+
- LangChain : Orchestration des agents
- Google Cloud BigQuery : Base de données
- LLM supportés :
- Gemini Pro (Google)
- Claude 3.5 Sonnet (Anthropic)
- GPT-4 (OpenAI)
- Llama2/Mistral (Ollama - local)
- Plotly Express : Visualisations interactives
- MCP (Model Context Protocol) : Intégration avec Claude Desktop
- ✅ Claude Desktop (utilise Claude automatiquement)
- ✅ Cline/VSCode (configurable)
- ✅ Cursor (configurable)
- ✅ Tout client MCP
- ✅ Google Gemini Pro
- ✅ Anthropic Claude 3.5 Sonnet
- ✅ OpenAI GPT-4
- ✅ Ollama (Llama2, Mistral, etc.)
- "Donne moi le nombre de vues par vidéo"
- "Quels sont les top 10 clients par montant de commandes ?"
- "Montre moi les tendances de ventes par mois"
- "Liste les produits les plus vendus"
- "Analyse les performances par région"
✅ Pour MCP : Pas de coûts API supplémentaires (utilise le LLM du client) ✅ Pour terminal : Flexibilité totale du choix du modèle ✅ Pas de vendor lock-in : Changez de modèle à tout moment ✅ Optimisation des coûts : Utilisez Ollama localement si besoin ✅ Meilleure performance : Chaque modèle a ses forces
Les outils n'apparaissent pas :
- Vérifiez le chemin absolu dans
claude_desktop_config.json - Redémarrez Claude Desktop
- Vérifiez que
GOOGLE_CLOUD_PROJECT_IDest défini
Erreur "Provider not found" :
# Vérifiez votre fichier .env
cat .env | grep LLM_PROVIDERErreur "API key not found" :
# Assurez-vous que la clé API correspondante est définie
# Pour Gemini : GEMINI_API_KEY
# Pour Claude : ANTHROPIC_API_KEY
# Pour OpenAI : OPENAI_API_KEYErreur d'authentification BigQuery :
gcloud auth application-default loginMIT
Créé avec ❤️ pour faciliter l'analyse de données avec l'IA