{
  "markdown": "# André MCP — Analyse électorale française\n\n[![andre-mcp MCP server](https://glama.ai/mcp/servers/joelgombin/andre-mcp/badges/score.svg)](https://glama.ai/mcp/servers/joelgombin/andre-mcp)\n\nServeur MCP (Model Context Protocol) donnant accès aux résultats de **55 élections\nfrançaises (1999-2026) au niveau du bureau de vote**, croisés avec les données\nsocio-démographiques de l'INSEE, la base des élus de la République et les\ndécoupages administratifs officiels.\n\n**Serveur hébergé, prêt à l'emploi :** `https://mcp.andre.vote/mcp`\nAucune installation, aucun téléchargement de données, aucune authentification.\n\n> Ce dépôt contient le code du serveur MCP, publié sous licence MIT. Il est un\n> **miroir automatique** de `andre-mcp/` dans le monorepo André, qui reste la\n> source de vérité : les contributions passent par des issues ici, pas par des\n> commits directs (ils seraient écrasés au prochain miroitage).\n\n## Connexion\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http andre https://mcp.andre.vote/mcp\n```\n\n### Claude Desktop, Cursor, VS Code…\n\n```json\n{\n  \"mcpServers\": {\n    \"andre\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.andre.vote/mcp\"\n    }\n  }\n}\n```\n\nEmplacement du fichier pour Claude Desktop :\n- macOS : `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows : `%APPDATA%\\Claude\\claude_desktop_config.json`\n\nPour les clients qui ne gèrent pas encore le transport HTTP :\n\n```json\n{\n  \"mcpServers\": {\n    \"andre\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-remote\", \"https://mcp.andre.vote/mcp\"]\n    }\n  }\n}\n```\n\n> **Limite d'appels d'outils sur Claude.ai / Claude Desktop**\n>\n> Claude impose une limite d'environ 15-20 appels d'outils par tour de\n> conversation. Les analyses approfondies (résultats T1+T2, bureaux de vote,\n> croisement socio-démographique…) peuvent l'atteindre. Cliquez **Continuer**\n> pour reprendre. Pour des analyses complètes sans interruption,\n> [andre.vote](https://andre.vote) n'a pas cette contrainte.\n\n## Outils\n\n| Outil | Description |\n|-------|-------------|\n| `query_elections` | Résultats électoraux (55 élections, 1999-2026) |\n| `query_admin` | Divisions administratives (communes, EPCI, cantons, départements) |\n| `query_elus` | Élus de la République (base BRÉF, Zenodo) |\n| `query_sociodem` | Données socio-démographiques INSEE au niveau bureau de vote |\n| `query_sql` | Requêtes SQL directes sur la base DuckDB (lecture seule) |\n| `query_dlp` | Composition sociale des candidats municipaux 2020 |\n| `generate_map` | Cartes électorales multi-couches |\n| `visualize` | Visualisations Plotly (bar, line, scatter…) |\n| `simulate_fusions` | Simulation de fusions de listes municipales |\n| `export_data` | Export CSV/JSON/TSV |\n| `create_data_table` | Tableaux de données formatés |\n\nTous les outils portent un `title` et une annotation `readOnlyHint` /\n`destructiveHint`. **Aucun outil n'est destructif** : le serveur est en lecture\nseule sur des données publiques.\n\n`query_elections` propose des **actions « panel »** qui répondent en un seul\nappel, ce qui limite le risque d'atteindre le plafond d'appels d'outils :\n\n- `compare_elections` — compare deux scrutins pour un territoire\n- `query_all_circonscriptions` — vainqueur de chaque circonscription (législatives)\n- `vote_reserve` — score d'une famille + abstention par bureau (réserves de voix)\n- `select_communes` — sélectionne/classe des communes par critères géographiques, démographiques et électoraux\n- `cross_election_panel` — évolution d'une famille ou d'une nuance par commune sur N scrutins\n- `bureau_breakdown` — pivot par bureau (top nuances + participation, socio-démo en option)\n\n## Resources documentaires\n\nRéférences consultables automatiquement par le client :\n\n- `andre://references/methodologies` — méthodologies d'analyse (réserves, typologies, ACP)\n- `andre://references/data_schema` — schéma des données électorales\n- `andre://references/political_colors` — couleurs des familles politiques\n- `andre://references/election_dates` — dates des 55 élections\n- `andre://references/victory_rules` — règles de victoire par type d'élection\n- `andre://references/nuances` — codes de nuance politique\n- `andre://references/insee_variables` — variables socio-démographiques INSEE\n- `andre://skills/electoral-analysis` — skill principal (workflows, débogage)\n\n## Prompts pré-construits\n\n- **analyser_commune** — analyse électorale complète d'une commune\n- **reserves_de_voix** — identification des réserves pour une force politique\n- **carte_electorale** — carte thématique d'un département\n- **comparer_elections** — comparaison temporelle entre deux scrutins\n- **resultats_rapides** — résultats synthétiques d'une élection\n\n## Exemples\n\n```\nAnalyse les résultats des législatives 2024 à Marseille\n→ query_admin (code 13055) puis query_elections puis query_sociodem\n```\n\n```\nQuelles sont les communes les plus abstentionnistes des Bouches-du-Rhône\naux européennes 2024 ?\n→ query_sql avec une requête agrégée\n```\n\n## Données\n\nExclusivement des sources publiques officielles :\n\n| Source | Licence | Contenu |\n|--------|---------|---------|\n| [data.gouv.fr](https://data.gouv.fr) | Licence Ouverte 2.0 | Résultats électoraux, candidatures |\n| [IGN / Etalab](https://github.com/etalab) | Licence Ouverte 2.0 | Contours administratifs |\n| [INSEE](https://www.insee.fr) | Licence Ouverte 2.0 | Données socio-démographiques |\n| [BRÉF (Zenodo)](https://zenodo.org) | CC BY 4.0 | Élus de la République |\n| [FERD](https://ferd.fr) | CC BY 4.0 | Codage politique à trois niveaux |\n\nLes données socio-démographiques sont interpolées de l'IRIS vers le bureau de\nvote via les pondérations de l'Observatoire national des bureaux de vote.\n\n## Limites & robustesse\n\nLe serveur expose des données publiques en lecture seule, sans authentification.\nGarde-fous en place :\n\n- **`query_sql`** — connexion DuckDB en lecture seule, requêtes d'écriture\n  bloquées, `LIMIT` de sécurité injecté sur les `SELECT`/`WITH` sans limite\n  explicite.\n- **Garde de concurrence** — nombre d'exécutions lourdes simultanées borné,\n  avec une réponse gracieuse « serveur occupé » au-delà.\n- **Métriques** — séries Prometheus sur `/metrics` (outil, latence, taux\n  d'erreur, concurrence). Ni les arguments, ni les résultats, ni les\n  identifiants de session ne sont exposés.\n\n## Exécution locale\n\nLe serveur **démarre et répond à l'introspection** (`tools/list`,\n`resources/list`, `prompts/list`) sans aucune donnée :\n\n```bash\npip install .\npython -c \"from andre_mcp.server import run; run()\"\n```\n\nou via Docker :\n\n```bash\ndocker build -t andre-mcp .\ndocker run -i --rm andre-mcp\n```\n\nEn revanche, **les appels d'outils ne fonctionnent pas encore hors du\nmonorepo** : le serveur délègue ses requêtes à des scripts (`query_elections.py`,\n`query_admin.py`, `generate_map.py`…) qui n'ont pas encore été versés dans le\npaquet, et le jeu de données complet (~1,5 Go) doit être provisionné. Un paquet\nPyPI autonome est en préparation.\n\nPour un usage réel, connectez-vous au [serveur distant](#connexion).\n\n## Registre\n\nPublié au registre officiel MCP sous le nom **`vote.andre/elections`**\n(namespace vérifié par DNS sur `andre.vote`). Voir [`server.json`](server.json).\n\n## Licence\n\nMIT — voir [LICENSE](LICENSE).\n\nLes données restent soumises aux licences de leurs producteurs respectifs\n(Licence Ouverte 2.0, CC BY 4.0).\n",
  "bytes": 7337,
  "sha": "556910ede047ebc20c2f2296aa7c36874f638041e2de5b79298741c8bb167c14",
  "repo_slug": "joelgombin/andre-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_vote_andre_elections_037644e2/readme"
}