Odel
André — Analyse électorale française

André — Analyse électorale française

@joelgombinPythonMITUpdated 6 days ago

Résultats des élections françaises 1999-2026 par bureau de vote, socio-démo INSEE et cartes.

Server endpointStreamable HTTPProbe failed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

André MCP — Analyse électorale française

andre-mcp MCP server

Serveur MCP (Model Context Protocol) donnant accès aux résultats de 55 élections françaises (1999-2026) au niveau du bureau de vote, croisés avec les données socio-démographiques de l'INSEE, la base des élus de la République et les découpages administratifs officiels.

Serveur hébergé, prêt à l'emploi : https://mcp.andre.vote/mcp Aucune installation, aucun téléchargement de données, aucune authentification.

Ce dépôt contient le code du serveur MCP, publié sous licence MIT. Il est un miroir automatique de andre-mcp/ dans le monorepo André, qui reste la source de vérité : les contributions passent par des issues ici, pas par des commits directs (ils seraient écrasés au prochain miroitage).

Connexion

Claude Code

claude mcp add --transport http andre https://mcp.andre.vote/mcp

Claude Desktop, Cursor, VS Code…

{
  "mcpServers": {
    "andre": {
      "type": "http",
      "url": "https://mcp.andre.vote/mcp"
    }
  }
}

Emplacement du fichier pour Claude Desktop :

  • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows : %APPDATA%\Claude\claude_desktop_config.json

Pour les clients qui ne gèrent pas encore le transport HTTP :

{
  "mcpServers": {
    "andre": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.andre.vote/mcp"]
    }
  }
}

Limite d'appels d'outils sur Claude.ai / Claude Desktop

Claude impose une limite d'environ 15-20 appels d'outils par tour de conversation. Les analyses approfondies (résultats T1+T2, bureaux de vote, croisement socio-démographique…) peuvent l'atteindre. Cliquez Continuer pour reprendre. Pour des analyses complètes sans interruption, andre.vote n'a pas cette contrainte.

Outils

OutilDescription
query_electionsRésultats électoraux (55 élections, 1999-2026)
query_adminDivisions administratives (communes, EPCI, cantons, départements)
query_elusÉlus de la République (base BRÉF, Zenodo)
query_sociodemDonnées socio-démographiques INSEE au niveau bureau de vote
query_sqlRequêtes SQL directes sur la base DuckDB (lecture seule)
query_dlpComposition sociale des candidats municipaux 2020
generate_mapCartes électorales multi-couches
visualizeVisualisations Plotly (bar, line, scatter…)
simulate_fusionsSimulation de fusions de listes municipales
export_dataExport CSV/JSON/TSV
create_data_tableTableaux de données formatés

Tous les outils portent un title et une annotation readOnlyHint / destructiveHint. Aucun outil n'est destructif : le serveur est en lecture seule sur des données publiques.

query_elections propose des actions « panel » qui répondent en un seul appel, ce qui limite le risque d'atteindre le plafond d'appels d'outils :

  • compare_elections — compare deux scrutins pour un territoire
  • query_all_circonscriptions — vainqueur de chaque circonscription (législatives)
  • vote_reserve — score d'une famille + abstention par bureau (réserves de voix)
  • select_communes — sélectionne/classe des communes par critères géographiques, démographiques et électoraux
  • cross_election_panel — évolution d'une famille ou d'une nuance par commune sur N scrutins
  • bureau_breakdown — pivot par bureau (top nuances + participation, socio-démo en option)

Resources documentaires

Références consultables automatiquement par le client :

  • andre://references/methodologies — méthodologies d'analyse (réserves, typologies, ACP)
  • andre://references/data_schema — schéma des données électorales
  • andre://references/political_colors — couleurs des familles politiques
  • andre://references/election_dates — dates des 55 élections
  • andre://references/victory_rules — règles de victoire par type d'élection
  • andre://references/nuances — codes de nuance politique
  • andre://references/insee_variables — variables socio-démographiques INSEE
  • andre://skills/electoral-analysis — skill principal (workflows, débogage)

Prompts pré-construits

  • analyser_commune — analyse électorale complète d'une commune
  • reserves_de_voix — identification des réserves pour une force politique
  • carte_electorale — carte thématique d'un département
  • comparer_elections — comparaison temporelle entre deux scrutins
  • resultats_rapides — résultats synthétiques d'une élection

Exemples

Analyse les résultats des législatives 2024 à Marseille
→ query_admin (code 13055) puis query_elections puis query_sociodem
Quelles sont les communes les plus abstentionnistes des Bouches-du-Rhône
aux européennes 2024 ?
→ query_sql avec une requête agrégée

Données

Exclusivement des sources publiques officielles :

SourceLicenceContenu
data.gouv.frLicence Ouverte 2.0Résultats électoraux, candidatures
IGN / EtalabLicence Ouverte 2.0Contours administratifs
INSEELicence Ouverte 2.0Données socio-démographiques
BRÉF (Zenodo)CC BY 4.0Élus de la République
FERDCC BY 4.0Codage politique à trois niveaux

Les données socio-démographiques sont interpolées de l'IRIS vers le bureau de vote via les pondérations de l'Observatoire national des bureaux de vote.

Limites & robustesse

Le serveur expose des données publiques en lecture seule, sans authentification. Garde-fous en place :

  • query_sql — connexion DuckDB en lecture seule, requêtes d'écriture bloquées, LIMIT de sécurité injecté sur les SELECT/WITH sans limite explicite.
  • Garde de concurrence — nombre d'exécutions lourdes simultanées borné, avec une réponse gracieuse « serveur occupé » au-delà.
  • Métriques — séries Prometheus sur /metrics (outil, latence, taux d'erreur, concurrence). Ni les arguments, ni les résultats, ni les identifiants de session ne sont exposés.

Exécution locale

Le serveur démarre et répond à l'introspection (tools/list, resources/list, prompts/list) sans aucune donnée :

pip install .
python -c "from andre_mcp.server import run; run()"

ou via Docker :

docker build -t andre-mcp .
docker run -i --rm andre-mcp

En revanche, les appels d'outils ne fonctionnent pas encore hors du monorepo : le serveur délègue ses requêtes à des scripts (query_elections.py, query_admin.py, generate_map.py…) qui n'ont pas encore été versés dans le paquet, et le jeu de données complet (~1,5 Go) doit être provisionné. Un paquet PyPI autonome est en préparation.

Pour un usage réel, connectez-vous au serveur distant.

Registre

Publié au registre officiel MCP sous le nom vote.andre/elections (namespace vérifié par DNS sur andre.vote). Voir server.json.

Licence

MIT — voir LICENSE.

Les données restent soumises aux licences de leurs producteurs respectifs (Licence Ouverte 2.0, CC BY 4.0).