
Outils pour votre LLM : une plongée approfondie dans MCP
technique qui peut transformer les LLM en véritables agents. En effet, MCP fournit des outils à votre LLM qu’il peut utiliser pour récupérer des informations en direct ou effectuer des actions en votre nom.
Comme tous les autres outils de la boîte à outils, je pense que pour appliquer efficacement MCP, vous devez le comprendre parfaitement. Je l’ai donc abordé de ma manière habituelle : mettre la main autour, le piquer, le démonter, le remonter et le remettre en marche.
Les objectifs de cette semaine :
- obtenir un solide compréhension de MCP; qu’est-ce que c’est?
- construire un serveur MCP et connectez-le à un LLM
- comprendre quand utiliser PCM
- explorer considérations autour du MCP
1) Qu’est-ce que le MCP ?
MCP (Model Context Protocol) est un protocole conçu pour étendre les clients LLM. Un client LLM est tout ce qui gère un LLM : pensez à Claude, ChatGPT ou le vôtre Chatbot agent LangGraph. Dans cet article, nous utiliserons le bureau Claude comme client LLM et créerons pour celui-ci un serveur MCP qui étend ses capacités.
Comprenons d’abord ce qu’est réellement MCP.
Une analogie utile
Pensez à MCP de la même manière que vous pensez aux extensions de navigateur. Une extension de navigateur ajoute des fonctionnalités à votre navigateur. Un serveur MCP ajoute des fonctionnalités à votre LLM. Dans les deux cas, vous fournissez un petit programme que le client (navigateur ou LLM) peut charger et avec lequel communiquer pour lui permettre d’en faire plus.
Ce programme est appelé serveur MCP et les clients LLM peuvent l’utiliser par exemple pour récupérer des informations ou effectuer des actions.
Quand un programme est-il un serveur MCP ?
N’importe quel programme peut devenir un serveur MCP à condition qu’il implémente le Model Context Protocol. Le protocole définit :
- quelles fonctions le serveur doit exposer (capacités)
- comment ces fonctions doivent être décrites (métadonnées de l’outil)
- comment le LLM peut les appeler (avec les formats de requête JSON)
- comment le serveur doit répondre (avec les formats de résultat JSON)
Un serveur MCP est tout programme qui suit les règles de message MCP. Notez que la langue, l’exécution ou l’emplacement n’ont pas d’importance.
Capacités clés :
- déclarer des outils
- accepter une demande d’appel d’outil
- exécuter la fonction demandée
- renvoyer un résultat ou une erreur
Exemple de message d’appel d’outil :
{
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": {"city": "Groningen"}
}
}
Envoyer ce JSON signifie : « appelez la fonction get_weather avec les arguments city=’Groningen’. »
2) Création d’un serveur MCP
Puisque n’importe quel programme peut être un serveur MCP, créons-en un.
Imaginez que nous travaillons pour un cinéma et que nous voulons permettre aux agents d’aider les gens à acheter des billets. De cette façon un l’utilisateur peut décider quel film choisir en discutant avec ChatGPT ou demander à Claude d’acheter des billets.
Bien sûr, ces LLM ne sont pas au courant de ce qui se passe dans notre cinéma, nous devrons donc exposer l’API de notre cinéma via MCP afin que les LLM puissent interagir avec elle.
Le serveur MCP le plus simple possible
Nous utiliserons fastmcpun package Python qui encapsule les fonctions Python afin qu’elles soient conformes aux spécifications MCP. Nous pouvons « présenter » ce code au LLM pour qu’il connaisse les fonctions et puisse les appeler.
from fastmcp import FastMCP
mcp = FastMCP("example_server")
@mcp.tool
def list_movies() -> str:
""" List the movies that are currently playing """
# Simulate a GET request to our /movies endpoint
return ["Shrek", "Inception", "The Matrix", "Lord of the Rings"]
if __name__ == "__main__":
mcp.run()
Le code ci-dessus définit un serveur et enregistre un outil. Les astuces docstring et type aident fastmcp à décrire l’outil au client LLM (comme l’exige le MCProtocol). L’agent décide, sur la base de cette description, si la fonction est adaptée à l’accomplissement de la tâche qu’elle est censée accomplir.
Connexion de Claude Desktop au serveur MCP
Pour que notre LLM soit « conscient » du serveur MCP, nous devons lui indiquer où trouver le programme. Nous enregistrons notre nouveau serveur dans Claude Desktop en ouvrant Paramètres -> Développeur et mettre à jour claude_desktop_config.json pour que ça ressemble à ça :
{
"mcpServers": {
"cinema_server": {
"command": "/Users/mikehuls/explore_mcp/.venv/bin/python",
"args": [
"/Users/mikehuls/explore_mcp/cinema_mcp.py"
]
}
}
}
Maintenant que notre serveur MCP est enregistré, Claude peut l’utiliser. Il appelle list_movies() Par exemple. Les fonctions des serveurs MCP enregistrés deviennent des outils de premier ordre que le LLM peut décider d’utiliser.

Comme vous le voyez, Claude a exécuté la fonction depuis notre serveur MCP et a accès à la valeur résultante. Très simple en quelques lignes de code.
Avec quelques lignes supplémentaires, nous enveloppons encore plus de points de terminaison d’API dans notre serveur MCP et permettons au LLM d’appeler des fonctions qui affichent les temps de contrôle et permettent même au LLM d’effectuer des actions en notre nom en effectuant une réservation :

A noter que même si les exemples sont volontairement simplifiés, le principe reste le même : nous permettons à notre LLM de récupérer des informations et d’agir en notre nom, via l’API cinéma.
3) Quand utiliser MCP
MCP est idéal lorsque :
- Vous souhaitez accéder à un LLM données en direct
- Vous voulez un LLM pour effectuer des actions (créer des tâches, récupérer des fichiers, écrire des enregistrements)
- Tu veux exposer les systèmes internes de manière contrôlée
- Tu veux partagez vos outils avec d’autres sous forme de package qu’ils peuvent brancher sur leur LLM
Les utilisateurs en bénéficient car MCP permet à leur LLM de devenir un assistant plus puissant.
Les fournisseurs en bénéficient car MCP leur permet d’exposer leurs systèmes de manière sûre et cohérente.
Un modèle courant est une « suite d’outils » qui expose les API backend. Au lieu de cliquer sur les écrans de l’interface utilisateur, un utilisateur peut demander à un assistant de gérer le flux de travail à sa place.
4) Considérations
Depuis sa sortie en novembre 2024, MCP a été largement adopté et est rapidement devenu le moyen par défaut de connecter les agents IA aux systèmes externes. Mais cela ne va pas sans compromis ; MCP introduit des frais structurels et de réels risques de sécurité dont, à mon avis, les ingénieurs doivent être conscients avant de l’utiliser en production.
a) Sécurité
Si vous téléchargez un serveur MCP inconnu et le connectez à votre LLM, vous accordez effectivement à ce serveur l’accès aux fichiers et au réseau, l’accès aux informations d’identification locales et les autorisations d’exécution de commandes. Un outil malveillant pourrait :
- lire ou supprimer des fichiers
- exfiltrer des données privées (
.sshclés par exemple) - scannez votre réseau
- modifier les systèmes de production
- voler des jetons et des clés
MCP est aussi fiable que le serveur auquel vous choisissez de faire confiance. Sans garde-corps, vous donnez essentiellement à un LLM un contrôle total sur votre ordinateur. Cela rend la surexposition très facile puisque vous pouvez facilement ajouter des outils.
L’analogie avec les extensions de navigateur s’applique également ici : la plupart sont sûres, mais les versions malveillantes peuvent causer de réels dégâts. Comme pour les extensions de navigateur, utilisez des sources fiables telles que des référentiels vérifiés, inspectez le code source si possible et exécutez-le en sandbox en cas de doute. Appliquez des autorisations strictes et des politiques de privilèges de location.
b) Fenêtre contextuelle gonflée, inefficacité et latence des jetons
Les serveurs MCP décrivent chaque outil en détail : noms, schémas d’arguments, descriptions et formats de résultats. Le client LLM charge toutes ces métadonnées dès le départ dans le contexte du modèle afin de savoir quels outils existent et comment les utiliser.
Cela signifie que si votre agent utilise de nombreux outils ou schémas complexes, l’invite peut s’agrandir considérablement. Non seulement cela utilise beaucoup de jetons, mais cela utilise également l’espace restant pour l’historique des conversations et les instructions spécifiques aux tâches. Chaque outil que vous exposez consomme en permanence une tranche du contexte disponible.
De plus, chaque appel d’outil introduit une surcharge de raisonnement, une analyse de schéma, une réaffectation de contexte et un aller-retour complet depuis le modèle -> client MCP -> serveur MCP -> retour au modèle. C’est loin trop lourd pour les pipelines sensibles à la latence.
c) La complexité se déplace dans le modèle
Le LLM doit prendre toutes les décisions difficiles :
- s’il faut appeler un outil du tout
- quel outil appeler
- quels arguments utiliser
Tout cela se produit dans le cadre du raisonnement du modèle plutôt que dans une logique d’orchestration explicite. Même si au départ, cela semble magiquement pratique et efficace, à grande échelle, cela peut devenir imprévisible, plus difficile à déboguer et plus difficile à garantir de manière déterministe.
Conclusion
MCP est à la fois simple et puissant. C’est une manière standardisée de permettre aux LLM d’appeler de vrais programmes. Une fois qu’un programme implémente MCP, tout client LLM conforme peut l’utiliser comme extension. Cela ouvre la porte à des assistants capables d’interroger les API, d’effectuer des tâches et d’interagir avec des systèmes réels de manière structurée.
Mais un grand pouvoir implique de grandes responsabilités. Traitez les serveurs MCP avec la même prudence que les logiciels ayant un accès complet à votre machine. Sa conception introduit également des implications en termes d’utilisation des jetons, de latence et de pression sur le LLM. Ces compromis peuvent compromettre l’avantage principal pour lequel MCP est connu : transformer les agents en outils efficaces et concrets.
Lorsqu’il est utilisé intentionnellement et en toute sécurité, MCP offre une base solide pour créer des assistants agents qui peuvent réellement faire choses plutôt que de simplement en parler.
J’espère que cet article était aussi clair que je le souhaitais, mais si ce n’est pas le cas, faites-moi savoir ce que je peux faire pour clarifier davantage. En attendant, consultez mon d’autres articles sur toutes sortes de sujets liés à la programmation.
Bon codage !
-Mike
Ps : tu aimes ce que je fais ? Suis-moi!



