Skip to main content
Glama
Poligraph MCP Server

Poligraph MCP Server

by ironlam

Poligraph MCP Server

Listed in france-mcp-servers

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/mcp

La 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/mcp

ChatGPT

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 :

  • annotations avec readOnlyHint: true sur tous les tools ;

  • _meta pour les états d'invocation ;

  • structuredContent en 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.

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 build

Puis 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

search_politicians

Rechercher des personnalités publiées par nom, parti ou mandat

get_politician

Fiche publique : mandats, déclarations, fact-checks et compteurs judiciaires séparés par rôle

get_politician_relations

Relations publiques documentées par Poligraph

Affaires judiciaires

Tool

Description

list_affairs

Affaires publiées avec filtres, rôle, sources et sémantique éditoriale canonique

get_politician_affairs

Affaires publiées d'une personnalité avec filtre de rôle

Votes parlementaires

Tool

Description

list_votes

Scrutins parlementaires

get_politician_votes

Votes enregistrés et statistiques publiables d'un parlementaire

get_vote_stats

Cohésion, scrutins divisifs et statistiques globales

Mandats

Tool

Description

list_mandates

Mandats publics ; les dates non vérifiées ne sont pas présentées comme ancienneté

Partis politiques

Tool

Description

list_parties

Liste des partis avec filtres

get_party

Fiche publique : membres, filiation et classification documentée

Fact-checks

Tool

Description

list_factchecks

Fact-checks publics issus des sources autorisées

get_politician_factchecks

Fact-checks publics mentionnant une personnalité

get_factcheck_stats

Statistiques agrégées du corpus public de fact-checks

Élections

Tool

Description

list_elections

Élections françaises avec filtres

get_election

Candidatures, résultats et participation sans convertir les valeurs inconnues en faux

Géographie

Tool

Description

get_department_stats

Statistiques sur les élus publiés par département

get_deputies_by_department

Députés publiés en exercice dans un département

Recherche

Tool

Description

search_advanced

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

Transports 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:build

test: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 :

  • null ou champ absent ne signifie jamais 0 ou false ;

  • 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 tools
get_department_statsB
Read-only

Statistiques politiques par département : nombre d'élus, parti dominant, répartition des partis.

Inputs: filter.

get_deputies_by_departmentA
Read-only

Obtenir la liste des députés en exercice dans un département donné.

Inputs: department (required).

get_electionA
Read-only

Obtenir le détail d'une élection : candidatures, résultats par tour, participation.

Inputs: slug (required).

get_factcheck_statsB
Read-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_partyA
Read-only

Obtenir la fiche complète d'un parti politique : membres, position, filiation, liens externes.

Inputs: slug (required).

get_politicianA
Read-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_affairsA
Read-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_factchecksA
Read-only

Obtenir les fact-checks mentionnant un politicien spécifique.

Inputs: slug (required), page, limit.

get_politician_relationsA
Read-only

Obtenir les relations d'un politicien : gouvernement, entreprises en commun, département, parcours partisan.

Inputs: slug (required), limit, types.

get_politician_votesA
Read-only

Obtenir les votes d'un politicien spécifique avec ses statistiques de participation.

Inputs: slug (required), page, limit.

get_vote_statsB
Read-only

Obtenir les statistiques de vote par parti : cohésion, scrutins divisifs, distribution globale.

Inputs: chamber.

list_affairsB
Read-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_electionsA
Read-only

Lister les élections françaises (présidentielle, législatives, municipales, etc.) avec filtres.

Inputs: page, type, year, limit, +1 more.

list_factchecksB
Read-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_mandatesB
Read-only

Lister les mandats politiques avec filtres par type, institution, statut actif/terminé et politicien.

Inputs: page, type, limit, isCurrent, +1 more.

list_partiesA
Read-only

Lister les partis politiques français avec filtres par position politique et statut.

Inputs: page, limit, active, search, +1 more.

list_votesA
Read-only

Lister les scrutins parlementaires (Assemblée nationale et Sénat) avec filtres.

Inputs: page, limit, result, search, +1 more.

search_advancedA
Read-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_politiciansA
Read-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

    A3.9/5.0

    Scored across 19 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness5/5

    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

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      F
      maintenance
      MCP 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).
      2
      AGPL 3.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables querying the French National Assembly data, including deputies, interventions, questions, and votes, through natural language.
      328 npm
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      MCP 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
      -