Ce repository contient une démonstration interactive du Model Context Protocol (MCP) présentée au DevLille 2025. La démo illustre concrètement comment MCP permet aux IA d'interagir avec des outils et services de manière standardisée.
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ web_interface │ │ server │ │ openaiserver │
│ │ │ (MCP Server) │ │ │
│ Collecte des │────▶│ │────▶│ Interface │
│ attentes via │ │ JSON-RPC via │ │ Big-AGI │
│ formulaire web │ │ STDIO │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
-
Lancement de l'interface web (
demo/web_interface/)- Démarre un serveur web avec NGrok
- Génère automatiquement un QR code qui est intégré dans les slides
- Interface simple permettant aux participants de saisir leurs attentes
- Sauvegarde automatique dans
demo/DB/db.json
-
Interaction avec le public
- Les participants scannent le QR code
- Saisissent leurs attentes pour la conférence
- Les données sont collectées en temps réel
-
Démonstration MCP en terminal
- Présentation du serveur MCP (
demo/server/) - Commandes JSON-RPC via STDIO (exemples dans
assets/) - Utilisation de
cat assets/*.json | demo/server/serverpour lister les informations - Explication que STDIO est le transport MCP
- Présentation du serveur MCP (
-
Lancement du serveur OpenAI
- Démarrage d'
openaiserverqui utilise le même serveur MCP - Interface Big-AGI pour interagir avec l'IA
- Démonstration que le serveur devient utilisable par une IA
- Démarrage d'
-
Synthèse par l'IA
- Demande à l'IA de synthétiser les attentes des participants
- Illustration de la "magie" MCP : données accessibles à l'IA
- Génération de contenu
- L'IA modifie les slides en fonction des attentes
- Auto-reload automatique grâce au serveur principal (
main.go) - Nouvelles slides générées dynamiquement dans
slides/
- Architecture MCP révélée
- Explication des actions qui modifient les fichiers
- Focus sur les prompts qui guident l'IA (
demo/server/prompt.go) - Démonstration du code source avec les prompts intégrés
- Récapitulatif des composants
- Serveur MCP de collecte de données
- Interface OpenAI/Big-AGI
- Système de modification des slides
- Transition vers le reste de la présentation
-
demo/web_interface/- Interface web de collecte des attentes- Serveur HTTP avec NGrok
- Génération automatique de QR code
- Sauvegarde en JSON
-
demo/server/- Serveur MCP principal- Expose les données via le protocole MCP
- Transport JSON-RPC sur STDIO
- Ressource
demo://contentavec les attentes - Prompts intégrés pour guider l'IA
-
main.go- Serveur de présentation Reveal.js- Auto-reload des slides
- Serveur de fichiers statiques
- WebSocket pour le live reload
assets/- Exemples de commandes JSON-RPC MCPslides/- Slides individuelles de la présentationdemo/DB/- Base de données JSON des attentes
- Go 1.21+
- NGrok (avec token d'authentification)
- Big-AGI ou client compatible OpenAI
-
Interface de collecte
cd demo/web_interface go run main.go -
Serveur MCP (pour tests manuels)
cd demo/server cat ../assets/01_init.json | go run main.go
-
Serveur de présentation
go run main.go # Accessible sur https://localhost:8081
Exemples de commandes disponibles dans assets/:
01_init.json- Initialisation du protocole02_tool_list.json- Liste des outils disponibles03_resources_list.json- Liste des ressources04_prompts_list.json- Liste des prompts05_resource_read.json- Lecture du contenu des attentes
Cette démonstration illustre concrètement :
- Le protocole MCP - Communication standardisée entre IA et outils
- La simplicité d'intégration - Réutilisation du même serveur MCP
- Les prompts comme guide - Direction de l'IA via des instructions
- L'interactivité - Adaptation du contenu en temps réel
- Les trois composants MCP - Collecte, traitement, action
- Go - Langage principal
- MCP-Go - Implémentation Go du Model Context Protocol
- Reveal.js - Framework de présentation
- NGrok - Tunneling pour l'accès public
- WebSocket - Auto-reload des slides
- Big-AGI - Interface utilisateur pour l'IA
[
{
"id": 1,
"text": "Attente du participant",
"user_agent": "Mozilla/5.0...",
"timestamp": "2025-06-18T10:30:00Z"
}
]- URI:
demo://content - Type MIME:
text/plain - Contenu: Concaténation des attentes (limitée à 255 caractères)
Ce projet est sous licence Creative Commons Attribution 4.0 International.
Vous êtes libre de :
- Partager — copier et redistribuer le matériel sous tous supports ou formats
- Adapter — remixer, transformer et développer le matériel pour toute utilisation, y compris commerciale
Sous les conditions suivantes :
- Attribution — Vous devez créditer l'œuvre, intégrer un lien vers la licence et indiquer si des modifications ont été effectuées.