André — Analyse électorale française

vote.andre由 andre.vote 發布官方發布者v1.28.1更新於 Oct 24, 2026

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

已驗證Streamable HTTP可網頁執行資料庫位置與生活資料與分析

概覽

AI 產生的概覽

一個託管式 MCP 伺服器,讓助理查詢法國選舉結果、INSEE 社會人口資料、民選官員與行政區劃,並產生地圖和圖表。

可以做什麼
依地區和投票所查詢 1999 至 2026 年的法國選舉結果,包括比較選舉、依條件篩選和排序市鎮或投票所的組合操作。查詢行政區劃(市鎮、EPCI、選區、省、大區)以及 BRÉF 資料庫中的民選官員。取得社會人口變數和 2020 年市政候選人的社會組成資料。對底層 DuckDB 資料庫執行唯讀 SQL 查詢。產生選舉地圖、Plotly 視覺化和格式化資料表,模擬市政名單合併,並匯出 CSV、JSON 或 TSV 資料。
適用情境
適合讓助理分析法國選舉結果、與社會人口資料交叉分析、比較不同屆選舉,或製作選舉地理地圖和圖表,而無需自行下載或準備資料集。
執行需求
遠端 HTTP 端點;無需安裝、帳號或身分驗證。不支援 HTTP 傳輸的用戶端可透過 npx mcp-remote 橋接,需要 Node.js。本機執行需要 Python 或 Docker,但在 monorepo 之外工具呼叫尚不可用。
安裝前請注意
對公開資料唯讀,沒有破壞性工具。在 Claude.ai 和 Claude Desktop 上,每輪約 15-20 次工具呼叫可能中斷深入分析。SQL 工具僅限唯讀查詢,並會自動注入列數限制。本機執行無法執行工具呼叫,應使用託管端點。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 André — Analyse électorale française,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/vote.andre%2Felections/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "andr-analyse-lectorale-fran-aise": {
      "type": "http",
      "url": "https://mcp.andre.vote/mcp"
    }
  }
}

README

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

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

Claude Desktop, Cursor, VS Code…

json
{  "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 :

json
{  "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ôneaux 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 :

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

ou via Docker :

bash
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).

來源:README.md,提交 6d033dd

工具

11

query_elections

Résultats électoraux

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). commune_metric accepte PLUSIEURS métriques séparées par des virgules — une colonne chacune, en un seul appel ; condition et sort_by portent alors sur la première. - 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 optionnel commune_code/departement_code/region_code/commune_codes ; SANS scope = national, panel complet en data_file). Renvoie aussi « ensemble » : score du périmètre entier par scrutin + delta, pondéré par les exprimés — ne pas boucler par dépa

輸入參數epcitourlimitordertop_naction必填offsetfamillesort_bygroup_bybureau_idby_family另有 25 個

query_admin

Divisions administratives

Requête les divisions administratives françaises. Actions : search_commune, get_commune, search_postal, list_epci, get_epci, list_cantons, list_departements, list_regions.

輸入參數action必填epci_codepostal_codesearch_termcommune_codedepartement_code

query_elus

Élus de la République

Requête les élus de la République française (base BRÉF). Actions : search_elu, list_mandate_types, list_elus.

輸入參數action必填search_termmandate_typedepartement_code

query_sociodem

Données socio-démographiques

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.

輸入參數orderaction必填variablecommune_codecommune_codes

query_dlp

Profil social des candidats municipaux

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.

輸入參數sexeaction必填classesearchtetes_onlycommune_codesortants_onlydepartement_code

generate_map

Carte électorale

Génère une carte électorale (PNG) pour une élection. Paramètres : - election_id : identifiant élection (ex: '2024_legi_t1', '2020_muni_t2') - metric : 'family' (famille politique en tête), 'nuance' (score d'une nuance), 'abstention' (abstentions / inscrits) ou 'participation' (votants / inscrits). Abstention et participation sont en % des inscrits ; au-dessus du bureau, somme des abstentions (ou votants) sur la somme des inscrits. - geography : 'bv' (bureau de vote, défaut) ou 'commune' (carte nationale) - department : code département (ex: '13'). Requis pour geography='bv' sauf si commune fourni. - commune : code commune (ex: '13055' pour Marseille). Centre la carte sur cette commune. - nuance : code nuance quand metric='nuance' (ex: 'RN', 'LFI', 'ENS') - region : code région pour geography='commune' (ex: '93' pour PACA) Exemples : - Carte par famille, Bouches-du-Rhône : election_id='2024_legi_t1', department='13' - Carte score RN, Marseille : election_id='2024_legi_t1', commune='13055', metric='nuance', nuance='RN' - Carte nationale : election_id='2024_euro_t1', geography='commune' - Carte d'abstention, Marseille : election_id='2024_legi_t1', commune='13055', metric='abstention' - Participation par commune, Bouches-du-Rhône : election_id='2024_legi_t1', geography='commune', department='13', metric='participation'

輸入參數cantonmetricnuanceregioncommunegeographydepartmentelection_id必填circonscription

simulate_fusions

Simulation de fusions de listes

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.

輸入參數action必填election_id必填report_ratecommune_code必填

export_data

Export de données

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).

輸入參數datafilename必填file_formatsource_path

visualize

Visualisation graphique

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 + mappings Types supportés : bar, line, scatter, histogram, box, violin, heatmap, treemap, grouped_bar, stacked_bar, dumbbell, diverging_bar, dual_axis (x + y + y2), sankey (source + target + values), hemicycle (x=groupe, y=sièges), ternary (a + b + c = trois parts). Paramètres transversaux : subtitle (sous-titre technique), reference_line ({value, label, orientation}) pour un seuil/référence.

輸入參數abcxyzy2datapathsizespeccolor另有 8 個

create_data_table

Tableau de données

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é.

輸入參數rows必填title必填columns必填description

query_sql

Requête SQL (lecture seule)

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

輸入參數query必填

版本歷史

1
  1. v1.28.1最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分