Poligraph MCP Server
This MCP server gives read-only, natural-language access to Poligraph's public data on French political life via 19 tools.
Politicians — search by name, party or mandate type (
search_politicians), get full profiles with mandates, asset declarations and separate judicial counters by role (get_politician), or explore documented relations like shared government, companies and party history (get_politician_relations).Judicial affairs — list editorially validated published affairs with status/category filters (
list_affairs) or all affairs tied to one politician (get_politician_affairs).Parliamentary votes — browse scrutins in the Assemblée and Sénat (
list_votes), see a politician's votes and turnout stats (get_politician_votes), or get party cohesion and divisive-vote statistics (get_vote_stats).Fact-checks — list fact-checks from AFP Factuel, Les Décodeurs and others (
list_factchecks), fetch those mentioning a politician (get_politician_factchecks), or get aggregate verdict/party/source stats (get_factcheck_stats).Parties — list parties with political-position and active/dissolved filters (
list_parties) and get party profiles with members and filiation (get_party).Elections — list elections by type, year or status (
list_elections) and get candidacies, round results and turnout (get_election).Mandates — list political mandates filtered by type, institution, current/past and politician (
list_mandates).Geography — get per-department political statistics (
get_department_stats) or sitting deputies for a department (get_deputies_by_department).Advanced search — combine name, party, mandate, department, affairs and active-status filters (
search_advanced).Safe by design — all tools are read-only (
readOnlyHint: true), consume only Poligraph's public API, never treat missing data as 0/false, and treat source text as data rather than instructions.
Enables ChatGPT to query French political data (politicians, judicial affairs, parliamentary votes, fact-checks, elections, departments) via the Poligraph API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Poligraph MCP Server show me recent votes on pension reform"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Poligraph MCP Server
Serveur MCP (Model Context Protocol) qui expose les données publiques de Poligraph comme tools pour les clients MCP compatibles.
Permet aux journalistes, chercheurs et citoyens d'interroger des données documentées sur la vie politique française en langage naturel.
Utilisation rapide
Serveur distant
Le serveur HTTP Streamable est déployé à l'adresse :
https://mcp.poligraph.fr/mcpLa page d’accueil du serveur présente les outils, les garanties de lecture seule et les configurations rapides pour les clients MCP compatibles.
L’adresse https://poligraph-mcp.vercel.app/mcp reste disponible comme alias de
compatibilité.
Claude Desktop
Ajoutez dans votre configuration MCP :
{
"mcpServers": {
"poligraph": {
"type": "streamable-http",
"url": "https://mcp.poligraph.fr/mcp"
}
}
}Claude Code
claude mcp add poligraph --transport http https://mcp.poligraph.fr/mcpChatGPT
Le parcours principal prévu pour ChatGPT est l’OpenAI Plugins Directory, via une soumission MCP-only. Un parcours facultatif et distinct vers le GPT Store reste possible avec un GPT personnalisé et une Action OpenAPI. L’issue poligraph#737 concerne uniquement ce second parcours et ne bloque pas la soumission MCP. PoliGraph n’est pas encore présenté comme soumis, accepté ou publié dans ces annuaires.
Le dossier technique marketplace rassemble les éléments préparatoires et les points restant à traiter.
Le serveur expose déjà les métadonnées MCP utiles aux clients compatibles :
annotationsavecreadOnlyHint: truesur tous les tools ;_metapour les états d'invocation ;structuredContenten complément du rendu textuel.
Politique Origin
Les clients serveur-à-serveur n’ont pas besoin d’envoyer un en-tête HTTP Origin. Lorsqu’un
client en envoie un, sa valeur doit correspondre exactement à une origine autorisée. La
variable MCP_ALLOWED_ORIGINS permet d’ajouter des origines HTTPS exactes, séparées par des
virgules, après observation officielle. Les wildcards, chemins, paramètres et fragments sont
refusés.
Le serveur HTTP local écoute uniquement sur 127.0.0.1. Il autorise automatiquement
http://127.0.0.1:<port> et http://localhost:<port> en complément de la politique commune.
Cette configuration ne vaut pas validation préalable d’un client Claude ou OpenAI.
Related MCP server: mpc-judilibre
Informations publiques
L’éditeur public du serveur est l’Association Sankofa.
Site du serveur : https://mcp.poligraph.fr/
Politique de confidentialité : https://poligraph.fr/confidentialite
Conditions d’utilisation : https://poligraph.fr/conditions-utilisation
Support : https://poligraph.fr/support
Mentions légales : https://poligraph.fr/mentions-legales
Signalement de sécurité : SECURITY.md
Le support public est accessible sur https://poligraph.fr/support. Les vulnérabilités non divulguées ne doivent pas être publiées dans une issue GitHub. Utilisez la procédure décrite dans SECURITY.md.
Installation locale (stdio)
git clone https://github.com/ironlam/poligraph-mcp.git
cd poligraph-mcp
npm install
npm run buildPuis configurez votre client MCP pour exécuter :
{
"mcpServers": {
"poligraph": {
"command": "node",
"args": ["/chemin/absolu/vers/poligraph-mcp/build/index.js"]
}
}
}Tools disponibles (19)
Exemples de requêtes
Les tools peuvent être utilisés à partir de questions en langage naturel, par exemple :
« Quels députés publiés représentent actuellement la Seine-et-Marne ? »
« Compare les votes de deux parlementaires sur les scrutins liés aux retraites. »
« Quelles affaires judiciaires publiées concernent cette personnalité, et quel rôle lui est attribué dans chacune ? »
Le serveur sélectionne le tool adapté et renvoie les données publiques disponibles avec leurs sources et leurs limites.
Politiciens
Tool | Description |
| Rechercher des personnalités publiées par nom, parti ou mandat |
| Fiche publique : mandats, déclarations, fact-checks et compteurs judiciaires séparés par rôle |
| Relations publiques documentées par Poligraph |
Affaires judiciaires
Tool | Description |
| Affaires publiées avec filtres, rôle, sources et sémantique éditoriale canonique |
| Affaires publiées d'une personnalité avec filtre de rôle |
Votes parlementaires
Tool | Description |
| Scrutins parlementaires |
| Votes enregistrés et statistiques publiables d'un parlementaire |
| Cohésion, scrutins divisifs et statistiques globales |
Mandats
Tool | Description |
| Mandats publics ; les dates non vérifiées ne sont pas présentées comme ancienneté |
Partis politiques
Tool | Description |
| Liste des partis avec filtres |
| Fiche publique : membres, filiation et classification documentée |
Fact-checks
Tool | Description |
| Fact-checks publics issus des sources autorisées |
| Fact-checks publics mentionnant une personnalité |
| Statistiques agrégées du corpus public de fact-checks |
Élections
Tool | Description |
| Élections françaises avec filtres |
| Candidatures, résultats et participation sans convertir les valeurs inconnues en faux |
Géographie
Tool | Description |
| Statistiques sur les élus publiés par département |
| Députés publiés en exercice dans un département |
Recherche
Tool | Description |
| Recherche combinée sur le corpus public |
Architecture
src/
├── index.ts
├── server.ts
├── http.ts
├── api.ts # client API borné : timeout, taille, erreurs
├── editorial.ts # règles de rendu fail-safe du contrat public
├── tools/
│ ├── politicians.ts
│ ├── affairs.ts
│ ├── votes.ts
│ ├── legislation.ts
│ ├── factchecks.ts
│ ├── parties.ts
│ ├── elections.ts
│ ├── mandates.ts
│ └── departments.ts
└── tests/
├── editorial.test.ts
└── api-contract.test.ts
api/
└── mcp.tsTransports supportés :
stdio pour un client local ;
HTTP Streamable pour le serveur Express ou Vercel.
Développement
npm run dev
npm run build
npm run start:http
npm run inspect
npm run test:unit
npm run test:contract
npm run test:buildtest:unit vérifie les invariants éditoriaux déterministes. test:contract effectue le smoke test contre l'API publique déployée.
Contrat éditorial public
Le MCP ne se connecte pas directement à la base de données et n'utilise ni service key ni endpoint d'administration. Il consomme exclusivement l'API publique Poligraph.
Pour les affaires judiciaires :
seules les données publiées par le contrat public sont consommées ;
le rôle (
DIRECT, mention, victime, plaignant…) est distinct du statut de la procédure ;les libellés de statut, catégorie, prudence, certitude et maturité sont fournis par le contrat canonique Poligraph ;
si cette sémantique canonique est absente, le MCP n'affiche pas le code interne comme signification éditoriale ;
le total legacy tous rôles est exposé par le MCP sous
legacyPublishedAffairsCountAllRoles, uniquement pour compatibilité structurée, et n'est pas présenté comme indicateur à charge ;les compteurs par rôle font foi pour la présentation.
Pour les données incomplètes :
nullou champ absent ne signifie jamais0oufalse;un taux de participation n'est rendu que si son état de publication est explicitement
AVAILABLE;une date de prise de fonction n'est utilisée comme ancienneté que si le contrat la marque explicitement
AVAILABLE.
Les champs textuels issus des sources publiques sont traités comme des données, jamais comme des instructions adressées au modèle.
Sources
Poligraph agrège des sources publiques, institutionnelles et éditoriales documentées, notamment l'Assemblée nationale, le Sénat, la HATVP, Wikidata et des organismes de fact-checking. Voir poligraph.fr/sources pour le détail.
Licence
MIT
Available Tools
19 toolsget_department_statsBRead-only
Statistiques politiques par département : nombre d'élus, parti dominant, répartition des partis.
Inputs: filter.
get_deputies_by_departmentARead-only
Obtenir la liste des députés en exercice dans un département donné.
Inputs: department (required).
get_electionARead-only
Obtenir le détail d'une élection : candidatures, résultats par tour, participation.
Inputs: slug (required).
get_factcheck_statsBRead-only
Statistiques agrégées des fact-checks : répartition par verdict, par parti politique, par source et top politiciens fact-checkés.
Inputs: limit.
get_partyARead-only
Obtenir la fiche complète d'un parti politique : membres, position, filiation, liens externes.
Inputs: slug (required).
get_politicianARead-only
Obtenir la fiche complète d'un politicien : mandats, déclarations de patrimoine, nombre d'affaires publiées (affairsCount, tous rôles confondus) et compteurs par rôle (mis en cause, mentionné, victime/plaignant, issue favorable).
Inputs: slug (required).
get_politician_affairsARead-only
Obtenir les affaires judiciaires d'un politicien spécifique, avec sources et détails. Seules les affaires publiées après validation éditoriale humaine sont retournées.
Inputs: slug (required).
get_politician_factchecksARead-only
Obtenir les fact-checks mentionnant un politicien spécifique.
Inputs: slug (required), page, limit.
get_politician_relationsARead-only
Obtenir les relations d'un politicien : gouvernement, entreprises en commun, département, parcours partisan.
Inputs: slug (required), limit, types.
get_politician_votesARead-only
Obtenir les votes d'un politicien spécifique avec ses statistiques de participation.
Inputs: slug (required), page, limit.
get_vote_statsBRead-only
Obtenir les statistiques de vote par parti : cohésion, scrutins divisifs, distribution globale.
Inputs: chamber.
list_affairsBRead-only
Lister les affaires judiciaires impliquant des politiciens français, avec filtres par statut et catégorie. Seules les affaires publiées après validation éditoriale humaine sont retournées ; les brouillons et affaires retirées ne sont jamais exposés.
Inputs: page, limit, status, category.
list_electionsARead-only
Lister les élections françaises (présidentielle, législatives, municipales, etc.) avec filtres.
Inputs: page, type, year, limit, +1 more.
list_factchecksBRead-only
Lister les fact-checks sur des politiciens français. Sources : AFP Factuel, Les Décodeurs, etc.
Inputs: page, limit, search, source, +2 more.
list_mandatesBRead-only
Lister les mandats politiques avec filtres par type, institution, statut actif/terminé et politicien.
Inputs: page, type, limit, isCurrent, +1 more.
list_partiesARead-only
Lister les partis politiques français avec filtres par position politique et statut.
Inputs: page, limit, active, search, +1 more.
list_votesARead-only
Lister les scrutins parlementaires (Assemblée nationale et Sénat) avec filtres.
Inputs: page, limit, result, search, +1 more.
search_advancedARead-only
Recherche avancée de politiciens avec filtres combinés : parti, mandat, département, affaires, statut actif.
Inputs: page, limit, party, query, +4 more.
search_politiciansARead-only
Rechercher des politiciens français par nom, parti ou type de mandat. Retourne une liste paginée.
Inputs: page, limit, party, query, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
Each tool targets a distinct aspect of French political data: searching, retrieving details, relations, affairs, votes, mandates, departments, parties, elections, and fact-checks. No two tools have overlapping purposes; descriptions clearly differentiate them.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., search_politicians, get_politician, list_affairs). Verbs are descriptive and nouns correspond to resources, making the surface predictable.
19 tools provide comprehensive coverage of the French political domain without being excessive. Each tool earns its place, covering politicians, affairs, votes, parties, elections, fact-checks, and statistics.
The tool set covers the full lifecycle of political data access: search, detail, relations, affairs, votes, mandates, departments, parties, elections, and fact-checks. Advanced search and aggregation stats fill potential gaps, leaving no obvious missing operations for a read-only API.
Maintenance
Related MCP Connectors
Independent platform exposing French official public territorial data through read-only MCP tools.
French public-data MCP: cross-ref health, demographics, business, geo & real-estate.
Official-data MCP server for French charities. Search, profile and compare 170,000+ French associations and foundations by name, cause, city or département, using SIREN/RNA identifiers from official public registries (INSEE Sirene, RNA, JOAFE). Each profile includes a transparency score built on four public criteria (transparency, impact, governance, finances), verified donation links and donor guides on French tax deductions. Read-only, no login needed, free tier included. 8 tools: search_ngos, get_ngo, compare_ngos, top_ngos, list_causes, get_donation_paths, search_guides, get_guide.
data.gouv.fr MCP — French open-data catalogue.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceMCP server covering French law via the PISTE platform: 62 tools wrapping the full Légifrance API (legislation, codes, Journal Officiel, jurisprudence…)4AGPL 3.0
- AlicenseNot gradedqualityFmaintenanceMCP server covering French law via the PISTE platform: 8 tools wrapping the JUDILIBRE API (open data judicial decisions from Cour de cassation, courts of appeal and civil courts).2AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables querying the French National Assembly data, including deputies, interventions, questions, and votes, through natural language.328 npmMIT
- FlicenseAqualityDmaintenanceMCP server for automatic fact-checking of political claims by querying official statistical APIs (INSEE, Eurostat, World Bank, OECD) and providing tools for data retrieval, comparison, and cherry-picking detection.18-