Évaluation sur les concepts MCP
Testez vos connaissances sur les sujets avancés de MCP couverts dans ce cours.
Questions de révision
Sampling
1. Qu’est-ce que le sampling MCP et quel problème résout-il ?
2. Qui paie les coûts de génération de tokens dans une architecture avec sampling ?
3. Dans quel scénario le sampling est-il particulièrement recommandé ?
Notifications
4. Quelle méthode utilisez-vous pour envoyer un message de log depuis un outil ?
5. Sur quel objet le callback de logging est-il fourni (session ou appel d’outil) ?
6. Sur quel objet le callback de progression est-il fourni ?
Roots
7. Pourquoi le SDK MCP n’applique-t-il pas automatiquement les restrictions de roots ?
8. Qu’est-ce qu’une root d’un point de vue technique (format URI) ?
Transports
9. Quelles sont les deux limites principales du transport STDIO ?
10. Quel mécanisme StreamableHTTP utilise-t-il pour permettre la communication serveur → client ?
11. stateless_http=True désactive quelles fonctionnalités MCP ?
12. Quelle est la différence entre stateless_http et json_response ?
Réponses
1. Le sampling permet à un serveur MCP de demander à son client de générer du texte via un LLM. Il résout le problème des serveurs qui auraient besoin de leurs propres clés API et de la gestion des coûts — à la place, le client (qui a déjà accès au LLM) fait l’appel.
2. Le client paie les coûts de tokens. C’est l’un des grands avantages : le serveur n’a pas de credentials ni de factures liées aux LLM.
3. Le sampling est particulièrement recommandé pour les serveurs MCP publics — vous ne voulez pas que des utilisateurs aléatoires génèrent du texte illimité à vos frais.
4. await context.info("message") — ou context.warning() / context.error() selon le niveau.
5. Le callback de logging est fourni à la session : ClientSession(..., logging_callback=fn).
6. Le callback de progression est fourni à l’appel d’outil : session.call_tool(..., progress_callback=fn).
7. Le SDK n’impose pas les roots automatiquement car les restrictions varient selon chaque application. Vous devez implémenter vous-même la fonction is_path_allowed() et l’appeler dans vos outils.
8. Une root est un URI de type file:///chemin/vers/dossier — exemple : file:///Users/alice/Videos.
9. STDIO fonctionne uniquement : (1) quand client et serveur sont sur la même machine et (2) nécessite que le serveur soit lancé comme sous-processus du client.
10. StreamableHTTP utilise les Server-Sent Events (SSE) — une connexion GET persistante via laquelle le serveur peut streamer des messages au client à tout moment.
11. stateless_http=True désactive : les IDs de session, la connexion SSE primaire, le sampling, les notifications de progression, les logs, et les subscriptions aux ressources.
12. stateless_http désactive toute la gestion d’état et la communication bidirectionnelle. json_response désactive uniquement le streaming des réponses POST (vous obtenez juste le résultat final en JSON, sans messages intermédiaires).
Pour l’évaluation officielle et la certification, rendez-vous sur Anthropic Academy.