# Le protocole MCP ## Définition MCP (Model Context Protocol) est un protocole de communication, fondé sur du JSON-RPC, construit spécifiquement pour connecter un client IA à un ensemble d'outils et de sources de données vivants et appelables directement. Un serveur qui implémente MCP expose une liste d'outils typés et découvrable (nom, description, schéma d'entrée/sortie) ; le client les appelle directement, comme n'importe quel autre outil, au lieu de devoir improviser l'appel via un outil d'exécution généraliste. *(Schéma : un client IA relié par une double flèche à un serveur MCP, qui expose lui-même une liste d'outils numérotés.)* ## Utilité MCP donne à une IA une interface structurée, auto-descriptive et validée vers des capacités réelles et changeantes — une base de données, un système de tickets, un index de recherche en direct. Le schéma supprime toute incertitude sur les noms et types de paramètres, et les erreurs reviennent de façon structurée plutôt que sous forme de texte brut à interpréter. ## Contre-exemple Construire un serveur MCP autour d'un unique script utilisé rarement et une seule fois est de la sur-ingénierie : le coût du protocole (un processus serveur qui tourne, des schémas à définir, un mécanisme de découverte) n'apporte rien face à l'appel direct du script. MCP justifie son coût quand il existe un vrai besoin de découverte structurée et d'appels répétés et variés — pas pour une action ponctuelle. ## Sécurité Un serveur MCP est un processus vivant avec sa propre frontière de confiance — le résultat d'un outil qu'il renvoie atterrit directement dans le contexte du modèle et peut être interprété comme une donnée légitime, voire pire, comme une instruction si le serveur est compromis ou malveillant. Deux risques concrets : (1) une réponse d'outil qui fait passer discrètement des instructions au modèle (la même famille de risque qu'un skill non fiable, mais arrivant cette fois par un canal « structuré » donc a priori digne de confiance), et (2) un outil qui renvoie sans le vouloir un secret (une clé d'API, un mot de passe) dans sa réponse, exposant ainsi ce secret au contexte du modèle alors que l'intention était seulement de l'utiliser en interne — un outil bien conçu authentifie EN INTERNE et ne laisse jamais transparaître le secret brut dans ce qu'il retourne. ## Combinaison possible Les outils qu'expose un serveur MCP sont, en dessous, presque toujours des wrappers — le protocole est la couche d'exposition, le wrapper est l'implémentation qui fait le vrai travail. Un skill peut aussi documenter, pour un humain ou pour l'assistant, comment et quand utiliser les outils d'un serveur MCP donné, sans aucun code propre. Voir les sujets « Le skill » et « Le wrapper » de ce même cours. ## Langage de programmation conseillé et pourquoi Un langage disposant d'un kit de développement MCP officiel (TypeScript et Python en ont tous deux un de première partie) facilite le démarrage. Pour une implémentation entièrement souveraine et sans dépendance, n'importe quel langage capable de parler JSON-RPC sur entrée/sortie standard convient : un langage système comme Rust est adapté à un serveur destiné à tourner longtemps sans surveillance, avec une gestion d'erreur stricte ; Python convient mieux quand l'itération rapide compte plus qu'une empreinte de dépendances minimale.