Tutto.Praxis · deck commenté
Praxis : construit à partir de « Introduction to Model Context Protocol » d'Anthropic

Un protocole, pour que
toute application IA atteigne
n'importe quel outil ou source de données.

Onze idées, une par écran. Chacune est un point à montrer pendant que vous expliquez. Tout se joue dans le regard, alors prenez les silences.

01
Tutto.La structure du cours
Où nous allons

Tout le cours sur un écran

Quatre étapes : saisir ce qu'est MCP, puis apprendre ses trois primitives (outils, ressources, prompts) une par une, côté serveur et côté client.

Les fondations

  1. 1 Découvrir MCP
  2. 2 Les clients MCP
  3. 3 Mise en place du projet

Les outils

  1. 4 Définir des outils
  2. 5 L'inspecteur de serveur
  3. 6 Implémenter un client

Ressources et prompts

  1. 7 Définir des ressources
  2. 8 Accéder aux ressources
  3. 9 Définir des prompts
  4. 10 Les prompts dans le client

Récapitulatif

  1. 11 MCP : le point
02
Tutto.Leçon 1 · Fondation
Leçon 1

M×N intégrations deviennent M+N

Sans standard, chaque application se branche à chaque outil à la main. MCP est le connecteur standard qui met fin à l'enchevêtrement.

Sans MCP chaque application × chaque outil, à la main application application application outil outil outil 9 intégrations sur mesure Avec MCP on développe une fois pour le protocole application application application MCP standard outil outil outil 6 connexions vers un seul standard

MCP est un standard, comme l'USB-C pour l'IA : vous développez une fois selon le protocole et tout outil conforme fonctionne. Il sépare aussi le travail : les développeurs d'applications d'un côté, les développeurs d'outils de l'autre.

03
Tutto.Leçon 2 · Fondations
Leçon 2

Hôte, client, serveur : un client par serveur

L'application que vous utilisez est l'hôte. À l'intérieur, chaque client tient une connexion vers un serveur, et le serveur enveloppe l'outil ou les données réels.

Hôte Claude Code · Desktop · Cursor client un serveur client un serveur JSON-RPC Serveur expose outils · ressources · prompts Serveur expose outils · ressources · prompts un outil / une API réels une base de données ou des fichiers

Les messages circulent en JSON-RPC sur un transport : stdio pour un serveur local, HTTP pour un serveur distant. L'hôte peut tenir plusieurs clients à la fois, mais chaque client parle à un seul serveur.

Que détient chaque côté ? Le serveur offre les capacités : outils, ressources, prompts. Le le client est la connexion qui atteint un serveur et le met à disposition de l'hôte. Fournisseur contre connecteur.

Le client est-il un tuyau unique et partagé ? Non : un client par serveur. L'hôte ouvre une ligne distincte et nommée vers chaque serveur : vous les accordez et les révoquez un par un.

04
Tutto.Leçon 3 · Les fondations
Leçon 3

Un serveur, c'est quelques lignes pour démarrer

FastMCP, dans le SDK Python, s'occupe de la tuyauterie du protocole. Vous créez un serveur, vous enregistrez des capacités, et vous le lancez sur un transport.

Projet uv · SDK mcp Serveur FastMCP("name") Enregistrer @tool @resource Lancer stdio · HTTP Les décorateurs transforment de simples fonctions Python en capacités MCP.

stdio lance le serveur comme un sous-processus local de l'hôte ; HTTP l'expose comme un service distant. Le code du serveur est le même dans les deux cas : le transport, c'est seulement la façon dont les messages circulent.

Que veut dire « indépendant du transport » ? MCP fixe la langue, pas le canal. Les messages JSON-RPC sont identiques qu'ils passent par un tuyau stdio local ou par une connexion HTTP : la logique ne change d'aucun côté.

Réécrire le serveur pour le passer en remote ? Non. Ses tools, resources et prompts ne changent pas ; vous changez de transport (stdio → HTTP), pas de code.

05
Tutto.Leçon 4 · Tools
Leçon 4

Tools : des actions que le modèle peut choisir d'appeler

Décorez une fonction : son nom, sa docstring et ses arguments typés deviennent un schéma que le modèle lit. C'est le modèle qui décide quand l'utiliser.

@mcp.tool() def get_weather(city): nom · description · schéma d'entrée les verbes : ils agissent, ils ont des effets exposé Modèle lit le schéma, décide de l'appeler Résultat renvoyé au modèle Contrôlé par le modèle : c'est le modèle qui choisit le moment, pas l'application ni l'utilisateur.

Un nom et une description clairs comptent : ce texte est tout ce dont le modèle dispose pour décider s'il appelle le tool, et comment. Traitez la docstring comme un prompt, pas comme un commentaire.

06
Tutto.Leçon 5 · Tools
Leçon 5

Tester le serveur avant de le brancher à une application

L'Inspector se connecte directement à votre serveur, sans LLM. Listez ce qu'il expose, appelez chaque outil à la main, lisez la réponse brute.

MCP Inspector un client de test, sans modèle interface navigateur appel réponse brute Votre serveur outils · ressources · prompts Vérifier, isolément le listing est-il correct ? chaque appel répond-il ? la structure est-elle bonne ?

Déboguez d'abord le serveur seul. Si l'Inspector liste et appelle tout proprement, le problème vient ensuite du câblage côté client, pas du serveur.

07
Tutto.Leçon 6 · Outils
Leçon 6

Le client fournit les outils au modèle, en boucle

Votre client liste les outils du serveur, transmet leurs schémas à Claude, exécute ce que Claude demande et lui renvoie le résultat, jusqu'à obtenir une réponse.

Client liste les outils Claude demande un outil Serveur l'exécute Réponse une fois terminé résultat renvoyé à Claude : la boucle tourne jusqu'à ce que la tâche soit finie

C'est la même boucle agentique qu'une fenêtre de chat n'a pas : le modèle peut agir, voir le résultat, et décider de la suite. MCP, c'est simplement la façon dont les outils arrivent jusqu'à lui.

08
Tutto.Leçon 7 · Resources et prompts
Leçon 7

Resources : des données à charger, adressées par URI

Des données en lecture seule que le serveur expose à une adresse. Aucun effet de bord : pensez GET, pas POST.

@mcp.resource("docs://documents") direct : renvoie la liste entière docs://documents/{id} avec gabarit : un paramètre choisit un élément lecture Renvoie des données aucun effet de bord · lecture sans risque à tout moment comme un GET point d'accès, adressé par URI à l'opposé des outils, qui font des choses

Un schéma d'URI comme docs:// nomme les données. Une resource directe renvoie une collection ; une resource avec gabarit prend un paramètre pour aller chercher exactement un élément : un document précis, un enregistrement précis.

09
Tutto.Leçon 8 · Ressources et prompts
Leçon 8

C'est l'application qui décide quelles ressources charger

Contrairement aux outils, le modèle ne va pas chercher les ressources. C'est l'application, souvent l'utilisateur, qui choisit le contexte à apporter.

L'utilisateur choisit @report.pdf Le client lit lister, puis lire par URI Dans le contexte le contenu est déposé pour le modèle Contrôlé par l'application : l'hôte présente les ressources sous forme de @-mentions parmi lesquelles vous choisissez.

Voilà la différence avec un outil : l'outil, c'est au modèle de l'appeler ; la ressource, c'est à l'application de la charger. Même serveur, deux modèles de contrôle, et c'est là tout le cœur de MCP.

10
Tutto.Leçon 9 · Ressources et prompts
Leçon 9

Les prompts : des modèles réutilisables livrés par l'auteur

Un prompt testé et paramétré que le serveur expose, pour que la bonne formulation soit intégrée au lieu d'être réinventée à chaque fois.

@mcp.prompt() def summarize(doc_id): un paramètre à remplir une formulation d'expert, écrite une fois se développe en Un message complet « Résume le document {doc_id} en trois points… » prêt à être envoyé au modèle

Les prompts sortent les formulations durement acquises de la tête des gens pour les mettre sur le serveur. L'auteur les règle une fois ; tous les autres n'ont qu'à les appeler et obtiennent la bonne version.

11
Tutto.Leçon 10 · Ressources et prompts
Leçon 10

Les prompts apparaissent comme des commandes slash

Le client liste les prompts du serveur et les propose à l'utilisateur. Vous en choisissez un, vous remplissez les arguments, et il se déploie en message complet.

L'utilisateur tape /summarize Remplir les arguments quel document ? quelle longueur ? Envoyé au modèle déployé, prêt à tourner Contrôlé par l'utilisateur : c'est l'utilisateur qui le déclenche, délibérément, pas le modèle, pas l'application.

Si vous avez déjà utilisé une commande slash dans Claude Code, vous avez utilisé un prompt MCP. Le serveur livre la commande ; le client en fait une action à une touche.

12
Tutto.Leçon 11 · Récapitulatif
Leçon 11 : si vous ne retenez qu'une chose

Trois primitives, trois propriétaires

Tout le protocole en une image : ce que le serveur expose, et qui a le droit de déclencher quoi.

Tools contrôlé par le modèle actions · le modèle les appelle Ressources contrôlé par l'application données · l'application les charge Prompts contrôlés par l'utilisateur modèles · l'utilisateur les déclenche le tout exposé par un serveur, atteint par un client dans votre hôte en JSON-RPC, sur stdio (local) ou HTTP (distant)

Tout le cours repose là-dessus : les outils que le modèle appelle, les ressources que l'application charge, les prompts que l'utilisateur déclenche. Une fois les propriétaires clairs, le reste suit.

13
Tutto.Praxis
Le tout, en une ligne

Un protocole.
Trois primitives.
N'importe quel outil, n'importe quelle application.

Des outils, des ressources et des prompts, exposés par un serveur et atteints par un client dans votre hôte : le contexte et les capacités se branchent une fois au lieu d'être reconstruits à chaque fois.

tutto.one/praxis · daniel@tutto.one

14
← → ou espace · F11 plein écran