André — Analyse électorale française
This server provides comprehensive analysis of 55 French elections (1999–2026) down to the polling station level, integrating socio-demographic, administrative, and elected officials data.
Query electoral results (
query_elections): Access results at national, regional, departmental, or commune level; search candidates; rank polling stations; compare elections; analyze vote reserves; and run multi-election panel analyses.Explore administrative divisions (
query_admin): Search communes by name or postal code, look up EPCIs, cantons, departments, and regions.Look up elected officials (
query_elus): Search the BRÉF database by name, mandate type, or department.Access socio-demographic data (
query_sociodem): Query INSEE RP 2022 and Filosofi 2021 data interpolated to the polling station level.Analyze candidate social profiles (
query_dlp): Explore the social composition, parity, and professions of ~546,000 municipal candidates from the 2020 elections.Generate electoral maps (
generate_map): Produce PNG maps showing leading political families or nuance scores at the polling station or commune level.Simulate list mergers (
simulate_fusions): Model municipal election second-round list fusion scenarios with configurable vote transfer rates.Visualize data (
visualize): Create Plotly charts (bar, line, scatter, histogram, heatmap, treemap, etc.).Export data (
export_data): Download results as CSV, JSON, or TSV.Create formatted tables (
create_data_table): Generate structured text tables for presenting results.Run direct SQL queries (
query_sql): Execute read-only SQL on the underlying DuckDB database for advanced ad hoc analysis.Use predefined prompts: Ready-made workflows for analyzing a commune, identifying vote reserves, generating maps, comparing elections, and getting quick results.
Provides capabilities to generate Plotly visualizations (bar, line, scatter, etc.) from electoral data.
Exposes server metrics in Prometheus format for monitoring.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
André MCP — Analyse électorale française
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/mcpClaude 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.jsonWindows :
%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.
Related MCP server: immo-mcp
Outils
Outil | Description |
| Résultats électoraux (55 élections, 1999-2026) |
| Divisions administratives (communes, EPCI, cantons, départements) |
| Élus de la République (base BRÉF, Zenodo) |
| Données socio-démographiques INSEE au niveau bureau de vote |
| Requêtes SQL directes sur la base DuckDB (lecture seule) |
| Composition sociale des candidats municipaux 2020 |
| Cartes électorales multi-couches |
| Visualisations Plotly (bar, line, scatter…) |
| Simulation de fusions de listes municipales |
| Export CSV/JSON/TSV |
| Tableaux 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 territoirequery_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 électorauxcross_election_panel— évolution d'une famille ou d'une nuance par commune sur N scrutinsbureau_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 électoralesandre://references/political_colors— couleurs des familles politiquesandre://references/election_dates— dates des 55 électionsandre://references/victory_rules— règles de victoire par type d'électionandre://references/nuances— codes de nuance politiqueandre://references/insee_variables— variables socio-démographiques INSEEandre://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_sociodemQuelles sont les communes les plus abstentionnistes des Bouches-du-Rhône
aux européennes 2024 ?
→ query_sql avec une requête agrégéeDonnées
Exclusivement des sources publiques officielles :
Source | Licence | Contenu |
Licence Ouverte 2.0 | Résultats électoraux, candidatures | |
Licence Ouverte 2.0 | Contours administratifs | |
Licence Ouverte 2.0 | Données socio-démographiques | |
CC BY 4.0 | Élus de la République | |
CC BY 4.0 | Codage 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,LIMITde sécurité injecté sur lesSELECT/WITHsans 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-mcpEn 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).
Available Tools
10 toolscreate_data_tableTableau de donnéesAIdempotentInspect
Crée un tableau de données formaté à partir de données structurées.
Utile pour présenter des résultats calculés ou combinés. Retourne un tableau texte formaté.
Inputs: rows (required), title (required), columns (required), description. Returns: result
export_dataExport de donnéesAIdempotentInspect
Exporte des données électorales vers un fichier téléchargeable (CSV, JSON, TSV).
Deux modes : data (contenu inline) ou source_path (chemin vers fichier existant).
Inputs: filename (required), data, file_format, source_path. Returns: result
query_adminDivisions administrativesCRead-onlyIdempotentInspect
Requête les divisions administratives françaises.
Actions : search_commune, get_commune, search_postal, list_epci, get_epci, list_cantons, list_departements, list_regions.
Inputs: action (required), epci_code, postal_code, search_term, +2 more. Returns: result
query_dlpProfil social des candidats municipauxARead-onlyIdempotentInspect
Requête les données DLP (composition sociale des candidats municipaux 2020).
~546 000 candidats dans ~10 000 communes (≥1 000 hab.). Classes : CDOM (dominant), CMOY (moyen), CSUB (subalterne), RET (retraité), AUTRES. Actions : summary, composition, parite, listes, candidats, professions, sortants.
Inputs: action (required), sexe, classe, search, +4 more. Returns: result
query_electionsRésultats électorauxARead-onlyIdempotentInspect
Requête les données électorales françaises (1999-2026).
Niveaux territoriaux : NATIONAL (aucun filtre), RÉGIONAL (region_code), DÉPARTEMENTAL (departement_code), COMMUNAL (commune_code).
Actions de base : list_elections, query_results, list_bureaux, query_bureau, query_by_bureau, rank_bureaux, list_circonscriptions, query_circonscription, list_cantons, query_canton, search_candidate, query_candidatures, etc.
Actions « panel » (1 appel = analyse complète, évite les boucles) :
compare_elections : compare deux scrutins pour un territoire (election_id + compare_to_election + commune_code|departement_code, candidate_name optionnel).
query_all_circonscriptions : vainqueur de CHAQUE circonscription d'un territoire en un appel (election_id + commune_code|departement_code, législatives uniquement).
vote_reserve : score d'une famille + abstention par bureau de vote sur les scrutins récents comparables (commune_code + famille).
select_communes : sélectionne/classe des communes par critères géo + population + électoraux (region_code/departement_code/epci/commune_codes, population_min/max, commune_metric, condition, sort_by, limit, order ; commune_metric/condition nécessitent election_id).
cross_election_panel : évolution d'un sujet (famille ou nuance_code) par commune sur N scrutins (elections=ids séparés par des virgules + scope commune_code/departement_code/region_code/commune_codes).
bureau_breakdown : pivot par bureau (top_n nuances/blocs + participation, with_sociodem optionnel) pour commune_code + election_id.
Inputs: action (required), epci, tour, limit, +32 more. Returns: result
query_elusÉlus de la RépubliqueCRead-onlyIdempotentInspect
Requête les élus de la République française (base BRÉF).
Actions : search_elu, list_mandate_types, list_elus.
Inputs: action (required), search_term, mandate_type, departement_code. Returns: result
query_sociodemDonnées socio-démographiquesCRead-onlyIdempotentInspect
Requête les données socio-démographiques au niveau bureau de vote.
Données INSEE RP 2022 + Filosofi 2021, interpolées IRIS→BDV. Actions : list_variables, profile, indices, rank, compare.
Inputs: action (required), order, variable, commune_code, +1 more. Returns: result
query_sqlRequête SQL (lecture seule)ARead-onlyIdempotentInspect
Exécute une requête SQL directe sur la base DuckDB (read-only).
Tables principales :
general_results : résultats généraux par bureau de vote
candidats_results : résultats par candidat par bureau de vote
elections_disponibles : liste des élections (id_election, nb_bureaux, total_inscrits)
candidats_avec_nuances : candidats avec famille politique (si nuances enrichies)
resultats_par_famille : résultats agrégés par famille politique
communes, epci, departements, regions : divisions administratives
bv_sociodemographique : données socio-démo par bureau de vote
ATTENTION — colonnes de general_results (noms avec espaces, à quoter) : id_election, id_brut_miom, "Code du département", "Code de la commune" (SANS préfixe dept, ex: '055' pour Marseille), "Libellé de la commune", Inscrits, Abstentions, Votants, Blancs, Nuls, Exprimés.
PRÉFÉRER query_elections pour les analyses standard — query_sql est pour les requêtes ad hoc avancées.
Exemple : SELECT id_election, ROUND(100.0 * SUM(Abstentions) / NULLIF(SUM(Inscrits), 0), 1) as abstention_pct FROM general_results WHERE "Code du département" = '13' AND "Code de la commune" = '055' GROUP BY id_election ORDER BY id_election DESC LIMIT 5
Inputs: query (required). Returns: result
simulate_fusionsSimulation de fusions de listesARead-onlyIdempotentInspect
Simule les scénarios de fusion de listes municipales entre T1 et T2.
Actions : 'status' (classer les listes après T1), 'simulate' (projections T2). Uniquement pour les élections municipales.
Inputs: action (required), election_id (required), commune_code (required), report_rate. Returns: result
visualizeVisualisation graphiqueAIdempotentInspect
Crée une visualisation Plotly (retourne le spec JSON).
Deux modes :
Spec libre : fournir 'spec' (dict Plotly complet {data, layout})
Assisté : fournir chart_type + data + x + y
Types supportés : bar, line, scatter, histogram, box, violin, heatmap, treemap.
Inputs: x, y, data, spec, +4 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct aspect of electoral analysis (simulation, export, visualization, table creation, SQL query, elections, admin, elected officials, sociodem, candidate profiles). No overlap, clear boundaries.
Tools follow a verb_noun pattern with underscores, but mix English ('simulate', 'export', 'query') and French ('fusions', 'elus', 'sociodem') terms, a minor inconsistency.
10 tools is well-scoped for the domain of French electoral analysis, covering data retrieval, analysis, simulation, and output without being excessive.
The set covers core electoral workflows: querying results, administrative divisions, elected officials, sociodemographics, candidate profiles, simulation, and data export/visualization. No obvious gaps.
Maintenance
Related MCP Connectors
Lieux, commerces, artisans et associations en France — 3,7 M de fiches, rangées par code NAF.
Décompte officiel des scrutins de l'Assemblée nationale, du Sénat et du Parlement européen.
Écoles, collèges et lycées de France : fiche, recherche et collège de secteur d'une adresse.
Sondages présidentielle 2027 agrégés : moyennes, marges, tendances, duels.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides access to French public data through data.gouv.fr, IGN cartographic services (maps, tiles, geographic data), address geocoding, and administrative divisions with demographic information.6-
- AlicenseNot gradedqualityDmaintenanceAnalyzes French real-estate market using open data sources like DVF transactions, DPE certificates, and risk data.MIT
- AlicenseNot gradedqualityCmaintenanceAccess 17M+ geocoded French property transactions (DVF), 22M+ DPE energy ratings, and 20M+ building records via MCP or REST API. Search transactions, market stats, comparables, price trends, rental yield, flip detection, and more.MIT
- AlicenseNot gradedqualityBmaintenanceSourced, dated calculations for French income tax and pensions across 32 retirement schemes — every result carries its confidence level, its legal sources and the fiscal year, and returns non_calculable rather than a guess. Hosted remote MCP + REST, paid per call via x402 (USDC on Base); two discovery tools are free.1MIT