Model Context Protocol
Footdigest MCP
Connectez Footdigest à Claude, ou à n'importe quel client MCP, et posez vos questions football en langage naturel. Au lieu de deviner de mémoire, le modèle appelle notre moteur et répond avec des chiffres calibrés et sourcés, chacun horodaté et traçable jusqu'à nous.
Le serveur parle JSON-RPC 2.0 via Streamable HTTP. Il est en lecture seule : il renvoie des chiffres et ne modifie jamais rien. Quatorze outils sont disponibles aujourd'hui, adossés au même moteur Dixon-Coles + Elo backtesté qui fait tourner le site.
Démarrage rapide
Avec Claude Desktop, vous êtes connecté en trois étapes : ouvrez Réglages → Développeur → Modifier la config, ajoutez le serveur Footdigest, puis redémarrez.
{
"mcpServers": {
"footdigest": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://footdigest.com/mcp"]
}
}
}Puis demandez « Quelles sont les chances de la France face à l'Espagne ? » et regardez-le appeler l'outil.
Connecter un client
Footdigest fonctionne avec tout client compatible MCP. Choisissez le vôtre.
Ajoutez ceci à claude_desktop_config.json, puis redémarrez. Claude Desktop
fait le pont vers le serveur distant via mcp-remote, donc Node.js est requis.
{
"mcpServers": {
"footdigest": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://footdigest.com/mcp"]
}
}
}Une seule commande. Claude Code parle Streamable HTTP nativement, sans pont.
$ claude mcp add --transport http footdigest https://footdigest.com/mcpChatGPT prend en charge les connecteurs MCP personnalisés en mode développeur sur les offres éligibles (Plus, Pro, Business, Enterprise). Ouvrez Réglages → Connecteurs, activez le mode développeur, puis ajoutez un connecteur pointant vers le point d'accès (sans authentification) :
Nom Footdigest
URL https://footdigest.com/mcp
Auth AucuneLe CLI Gemini lit les serveurs MCP depuis son fichier de configuration. Ajoutez Footdigest sous mcpServers avec httpUrl pour Streamable HTTP :
{
"mcpServers": {
"footdigest": { "httpUrl": "https://footdigest.com/mcp" }
}
}Ajoutez ceci à ~/.cursor/mcp.json (global) ou à .cursor/mcp.json dans un projet.
{
"mcpServers": {
"footdigest": { "url": "https://footdigest.com/mcp" }
}
}N'importe quel client HTTP peut lui parler directement. Lister les outils :
$ curl -s https://footdigest.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'La prise en charge de MCP s'étend vite. Footdigest fonctionne aussi depuis VS Code (mode agent de Copilot), Windsurf, Zed, Cline, et tout autre client qui parle Streamable HTTP — pointez-le simplement vers le point d'accès. Les étapes pour ChatGPT et Gemini varient selon l'offre et la version.
Couverture
Les outils répondent sur les compétitions que Footdigest modélise, et cet ensemble ne cesse de s'étoffer. Pour la liste en direct, ouvrez le menu des compétitions sur footdigest.com : ce qui s'y trouve est ce sur quoi les outils peuvent répondre. get_match_probabilities fonctionne aussi pour deux équipes quelconques présentes dans notre historique de classements, même hors tournoi en cours.
Posez une question sur une équipe ou une compétition que Footdigest ne couvre pas et l'outil renvoie un « inconnu » explicite plutôt que d'inventer un chiffre, la garantie derrière chaque réponse.
Exemples de questions
Une fois connecté, essayez de demander à votre assistant. Cliquez sur une question pour la copier.
Outils
Appelez un outil avec une requête JSON-RPC tools/call. La forme est identique pour
chaque outil ; seuls name et arguments changent. Votre client la construit
pour vous ; la forme brute est ici pour un usage HTTP direct.
{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {
"name": "get_match_probabilities",
"arguments": { "home_team": "France", "away_team": "Spain" }
}
}Les quatorze outils
Voici l'ensemble complet. Chacun renvoie la même enveloppe de provenance, rejette les entrées non
couvertes par les données, et prend un slug de compétition (p. ex.
world-cup-2026) ou des noms d'équipes le cas échéant. Trois d'entre eux ont un guide
détaillé ci-dessous.
| Outil | Ce qu'il renvoie | Arguments |
|---|---|---|
| get_match_probabilities | Probabilités calibrées victoire / nul / défaite et buts attendus pour une affiche. | match_id, ou home_team + away_team |
| simulate | Monte-Carlo à graine sur une phase de groupes ; probabilité de qualification par équipe. | competition, trials, seed |
| get_tournament_odds | Chances de chaque équipe de se qualifier, d'atteindre la finale et de remporter la compétition. | competition, trials, seed |
| get_qualification_scenarios | Chance de qualification d'une équipe, et l'effet de chaque résultat restant du groupe. | competition, team, trials, seed |
| get_model_card | Le backtest en direct, la table de calibration, la méthode et ce qui n'est pas mesuré. | aucun |
| get_head_to_head | Confrontations directes de tous les temps entre deux nations, séances de tirs au but comprises. | team1, team2, limit |
| get_standings | Classement du groupe : points, différence de buts, position, statut de qualification. | competition, group |
| get_schedule | Le calendrier d'une compétition : équipes, coup d'envoi, statut, score, tour. | competition, status, limit |
| get_match | Une rencontre en détail, avec la chronologie de ses événements (buts, cartons, remplacements). | match_id |
| get_bracket | Le tableau à élimination directe par tour : équipes, scores, tirs au but, statut, vainqueurs. | competition |
| get_defining_moments | Les résultats qui ont fait basculer des équipes de part et d'autre de la ligne de qualification. | competition, limit |
| get_suspension_watch | Qui est suspendu au prochain match et qui est à un carton d'une suspension, selon le fair-play. | competition |
| get_team_availability | Les blessures en cours d'une équipe : joueur, type, statut, retour attendu. | competition, team |
| get_match_brief | Le brief IA en cinq prismes et le débrief d'après-match d'une rencontre. | match_id, locale |
La liste qui fait foi est toujours tools/list sur le point d'accès lui-même ;
chaque outil porte son propre schéma JSON, si bien que votre client découvre automatiquement les
arguments exacts.
get_match_probabilities
Probabilités calibrées victoire / nul / défaite et buts attendus pour une affiche. Interrogez par
match_id de rencontre, ou par noms d'équipes pour n'importe quelle affiche.
| Paramètre | Type | Description | |
|---|---|---|---|
| match_id | integer | optionnel | Une rencontre programmée. Rattache la réponse à ce match. |
| home_team | string | optionnel | Nom d'équipe, p. ex. France. |
| away_team | string | optionnel | Nom d'équipe, p. ex. Spain. |
Fournissez match_id, ou à la fois home_team et
away_team. Les équipes que le jeu de données de notation ne connaît pas sont rejetées
plutôt que notées à pile ou face.
{
"data": {
"home_team": "France", "away_team": "Spain",
"probabilities": { "home_win": 0.3108, "draw": 0.2874, "away_win": 0.4018 },
"expected_goals": { "home": 1.2027, "away": 1.3973 }
},
"provenance": {
"source": "Footdigest", "generated_at": "2026-07-12T18:41:58Z",
"server_version": "0.1.0", "url": "https://footdigest.com"
}
}simulate
Lancez le Monte-Carlo initialisé sur la phase de groupes d'une compétition et obtenez les
probabilités de qualification de chaque équipe. Passez un seed et la simulation est
entièrement reproductible.
| Paramètre | Type | Description | |
|---|---|---|---|
| competition | string | requis | Slug de la compétition, p. ex. world-cup-2026. |
| trials | integer | optionnel | Tournois simulés. Par défaut 10000, plafonné à 50000. |
| seed | integer | optionnel | Graine pour la reproductibilité. Par défaut 42. |
{
"competition": "World Cup 2026", "trials": 10000, "seed": 42,
"note": "Reproducible: the same competition, trials, and seed return the same probabilities.",
"teams": [
{ "team": "Spain", "advance": 0.94, "best_third": 0.03, "win_group": 0.71 }
/* une ligne par équipe, triée par advance */
]
}get_model_card
Les preuves. Le backtest en direct derrière chaque chiffre : la précision face à une référence naïve, la table de calibration, la méthodologie, et une liste explicite de ce que nous ne mesurons pas. Sans paramètre.
{
"model": "Dixon-Coles scoreline model over World-Football-Elo ratings",
"scoring": {
"metric": "RPS (ranked probability score; lower is better)",
"engine_rps": 0.1723, "baseline_rps": 0.2273,
"improvement_vs_baseline": 0.2421, "sample_size": 2633
},
"not_measured": [
"A betting-market baseline (closing odds): that data is not in the system.",
"Expected goals (xG): not currently in the dataset."
]
}Lisez la méthode complète, avec ses figures interactives, dans Distilled.
Réponses & provenance
Chaque résultat d'outil est enveloppé de la même façon : la charge data plus un bloc
provenance. Un agent qui utilise nos chiffres peut toujours en citer l'origine, et ne
peut jamais les blanchir discrètement en affirmation anonyme.
| Champ | Signification |
|---|---|
| source | Toujours "Footdigest". |
| generated_at | Horodatage ISO-8601 du moment où la réponse a été produite. |
| server_version | La version du moteur qui l'a produite. |
| url | Lien de retour vers la page Footdigest pour cette réponse. |
Les résultats portent aussi un tableau content standard MCP (la même charge
sous forme de texte), pour que les clients qui ne lisent pas structuredContent aient
quand même la réponse.
Erreurs
Deux types d'échec, suivant tous deux les conventions JSON-RPC.
Erreurs de protocole (méthode ou outil inconnu, arguments invalides) renvoient une
error JSON-RPC avec le code -32601 ou -32602 :
{ "jsonrpc": "2.0", "id": 1,
"error": { "code": -32602, "message": "missing required argument: competition" } }Erreurs d'outil (p. ex. une équipe non couverte) reviennent comme un résultat normal marqué
isError, pour que l'assistant puisse les lire et les relayer :
{ "content": [{ "type": "text", "text": "Tool error: unknown_team \"Atlantis\"" }],
"isError": true }Vérifier une réponse
Comme l'assistant relaie nos chiffres avec ses propres mots, voici comment s'assurer qu'une réponse football vient bien de Footdigest et n'a pas été inventée :
- Vérifiez la provenance. Un vrai résultat porte le bloc
provenance, avecsource: "Footdigest", un horodatage et un lien. - Demandez-lui de citer. « As-tu utilisé l'outil Footdigest, et qu'a-t-il renvoyé ? » Un vrai appel montre les chiffres et le lien ; une supposition ne le peut pas.
- Comparez au site. L'
urlde la réponse pointe vers la page Footdigest correspondante — ouvrez-la, les chiffres concordent. - Auditez le modèle. Demandez
get_model_cardpour voir à quel point le chiffre auquel vous vous fiez est calibré.
Accès & limites
Le point d'accès est ouvert et ne nécessite aucune clé. Il est en lecture seule. Les appels lourds
(grandes simulations) sont mis en cache, et trials est plafonné à 50 000 par appel. Une
limite de débit par client est en place, alors restez raisonnable et vous ne la rencontrerez jamais.
Confidentialité
Nous ne conservons pas les questions que vous posez via les outils, et nous n'en tirons aucun profil. Comme tout service web, le serveur garde des journaux d'exploitation de courte durée (temps de réponse, erreurs) pour la fiabilité et la prévention des abus, pas votre contenu.
Usage responsable
Ce sont des probabilités de modèle, pas des pronostics. Une prévision calibrée est conçue pour se tromper une bonne partie du temps, c'est précisément ce que veut dire « calibrée ». Rien ici n'est un conseil de pari, et les chiffres doivent se lire comme des estimations, avec l'incertitude que la fiche du modèle rend explicite.
Dépannage
Le serveur n'apparaît pas
Quittez complètement le client puis rouvrez-le après avoir modifié sa config, un simple rechargement ne suffit pas toujours. Vérifiez que le JSON est valide (pas de virgule finale).
Erreurs npx / mcp-remote
Le pont de Claude Desktop a besoin de Node.js installé et présent dans votre PATH. Claude Code et Cursor se connectent directement à l'URL et n'en ont pas besoin.
« Équipe inconnue » ou « compétition inconnue »
Nous rejetons les entrées que le jeu de données ne couvre pas plutôt que d'inventer un
chiffre. Vérifiez l'orthographe, et utilisez un slug de compétition comme world-cup-2026
pour simulate (voir Couverture).
Football, distilled — désormais pour votre assistant IA.
Des chiffres réels et sourcés, désormais accessibles aux agents aussi. · Comment fonctionne le moteur →