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 Desktop, Cursor, VS Code…
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 :
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
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
Données
Exclusivement des sources publiques officielles :
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 :
ou via Docker :
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).