Bruno:
Il paraît qu'en informatique, on peut tout simuler. Le chaos, l'ordre, la physique, la pensée et même les systèmes distribués. Mais il y a un endroit où la simulation devient orchestrateur, où la modélisation devient moteur, c'est le MCP. MCP, c'est un peu le chef d'orchestre invisible d'un monde composé de flux, de posts, de containers et de pipelines. Il joue sans partition visible, mais attention, quand il rate une note, c'est tout l'environnement qui déraille. Mais alors, que se cache-t-il réellement derrière cette mystérieuse couche de contrôle ? MCP est-ce un outil ou un paradigme ? Peut-on encore l'utiliser sans tout de cœuriser jusqu'à sa cafetière ? Et surtout, est-ce qu'un jour on comprendra vraiment ce que veut dire découplage fort et cohésion faible ? Pour répondre à ces questions modularisées, je ne reçois pas Kevin Flynn, mais elle s'y connaît en maîtrise de programme. Zineb, bonjour.
Zineb:
Bonjour.
Bruno:
Alors Zineb, est-ce que tu pourrais te présenter pour les quelques personnes qui ne te connaîtraient peut-être pas ?
Zineb:
Oui, alors moi je suis Zineb Bendiba, je suis principale software engineer chez Red Hat. Je travaille dans Middleware, je travaille sur un projet qui s'appelle Apache Camel, qui est dans la fondation Apache et dont ma société a un build, en fait, Red Hat. Et voilà, ça fait cinq ans que je travaille, ça fait vraiment cinq ans que je travaille sur ce projet chez Red Hat. Et je travaille principalement sur la Stack Quarkus et récemment je travaille sur Delia dans Camel mais aussi dans un projet open source qu'on a créé avec mon équipe qui s'appelle Wanaku et qui est fait du MCP.
Bruno:
Ok, canon. On se permet de faire un petit disclaimer avant de commencer parce qu'MCP c'est une technologie qui est quand même assez récente, qui bouge beaucoup. On enregistre cet épisode le 20 juin, donc en fonction de quand est-ce que vous écoutez cet épisode, les choses ont peut-être déjà beaucoup changé depuis qu'on a enregistré. J'ai fait le choix, comme je le fais souvent sur mes épisodes, d'arriver un peu le plus naïf possible, d'en connaître le moins possible sur le sujet. Est-ce que du coup, tu pourrais nous faire une première définition grosse maille de qu'est-ce que le MCP ?
Zineb:
Alors, MCP, déjà, c'est pour modèle, contexte, protocole, si je ne dis pas de bêtises. Donc, c'est un protocole, en fait, qui a été proposé par la société Anthropik, qui est derrière les modèles diagénératives Claude. Et en fait il y a dans le nom le contexte et en fait pour eux c'est en fait le fait de pouvoir, donner en fait au modèle diagénératif un contexte donc des informations supplémentaires que le LLM peut avoir pour utiliser et ce contexte-là dans la façon dont ils ont réfléchi, il y a trois typologie de contexte, ce sont des outils donc ce sont des, fonctions qui vont être externes, qui vont être bien définies qu'un LLM se dit c'est intéressant, pour que je puisse répondre à cette question ça serait intéressant de pouvoir, exécuter ce code là qui va redonner des, réponses il y a les ressources donc ça c'est une partie que j'ai pas vraiment testé, mais en fait ça permet de donner des URL à des ressources. Auxquelles on peut aller qu'on peut utiliser comme par exemple des fichiers, le lien vers une base de données, etc. Et il y a la partie prompt et en fait ça peut être un ensemble de prompt templates à utilisation. Donc ça peut être par exemple, on peut avoir un serveur où on va avoir nos propres templates, en sachant que dans les IA génératives, un bon prompt, c'est ce qui fait qu'on aura vraiment le résultat souhaité.
Bruno:
Mais donc, du coup, dans MCP, l'EP est là pour la notion de protocole. Quand on parle de protocole, naïvement, moi, je pense par la notion de réseau. Le but, c'est de pouvoir faire communiquer des agents entre eux ou des systèmes entre eux. L'idée, c'est permettre à un agent de répondre à un autre agent ou juste de pouvoir s'exécuter, ou que quelque chose puisse exécuter un agent en lui donnant un prompt au final un peu plus précis.
Zineb:
Alors, dans le protocole MCP, ce n'est pas vraiment un agent vers un agent. On va dire qu'on a un assistant ou bien un agent. Donc, c'est une application qu'on va appeler un host. Donc c'est cette application-là qui va avoir par exemple notre assistant ou bien nos agents IA, ce qu'on veut, qui vont interagir avec les LLM. Et en fait, c'est ce host-là qui va avoir dans son code interne quelque chose qui va être un client vers des serveurs MCP. Et ce que décrit le protocole, c'est comment un client peut interagir avec un serveur. En sachant que notre application, notre agent ou notre assistant, il peut avoir plusieurs clients, MCP, donc peut interagir avec plusieurs serveurs et utiliser ces serveurs-là pour pouvoir en fait avoir du contexte, exécuter des choses. Donc, c'est là où on va passer dans le mode agentique, en fait. Et en fait, les clients, c'est le client, en fait, qui va, c'est l'application cliente qui va interagir avec les LLM. Et les serveurs, c'est juste en fait, c'est le protocole d'échange entre les clients et les serveurs. Ça veut dire qu'en fait, tous les serveurs MCP ne sont pas censés être dans l'application qui fait l'agent, etc. Et n'est pas forcément codé du même langage. Donc, on peut utiliser des MCP serveurs qui sont développés par d'autres boîtes, qui sont disponibles par d'autres équipes. Et en fait ça définit le protocole entre les deux, donc il y a des notions de messages JSON RPC de comment tous les, interactions qu'il va y avoir entre le client et le serveur ça va définir en fait le cadre quels sont les endpoints qu'il faut qu'il faut en fait utiliser, enfin quand je parle d'endpoints c'est quand on est dans le cas de remote HTTP CTP. Quelle va être la première requête, comment on interagit, comment on reçoit la réponse, donc voilà ça va régir un petit peu ça et donc du coup une fois que le protocole est posé, il est open source, il est ouvert à la discussion, donc en fait c'est pas quelque chose de fermé ou sur lequel la communauté peut interagir, peut revenir pour dire il y a des soucis. Mais après, n'importe qui peut créer un SDK ou créer sa façon de développer des clients et des serveurs.
Bruno:
Alors, je crois que j'ai pas mal de questions pour m'aider à être sûr d'avoir bien compris. Déjà, première chose, tu fais une distinction entre assistant et agent. Pour moi, c'était deux mots-valises qui pouvaient se substituer les uns les autres. Pourquoi est-ce que tu sembles faire cette distinction ?
Zineb:
Et... Vu que là, on est en fait dans l'AgentX, pour moi, c'est la même chose.
Bruno:
Ok, d'accord. C'était juste pour être sûr.
Zineb:
Et dans le monde MCP, ils vont appeler ça plutôt host. Et dans le host, on peut dire j'ai un ou deux clients. Ça veut dire juste que, en fait, c'est une façon de dire que dans mon code, j'ai défini un ou plusieurs serveurs MCP qu'on va utiliser.
Bruno:
Et pour être sûr aussi d'avoir bien compris comme c'est un protocole il y a un serveur et des clients si je suis dans une démarche de construire un agent par exemple, qui va avoir une capacité de X ou Y en fait ce sera mon agent qui va être le serveur et qui va communiquer avec un ensemble de clients type par exemple, si je prends Yahoo Weather par exemple qui va donner un service de météo ça c'est un type de client qui va déclarer en fait son interface de communication avec son API et puis je peux avoir une base de données, x ou y mettons je sais pas en MySQL qui est aussi considéré comme un client et grâce à MCP je peux me connecter à ces deux sources d'informations pour donner du contexte à mes promptes, c'est ça un peu le ou je suis pas dans le west ?
Zineb:
C'est peut-être l'inverse en fait, c'est ton agent et le client et les autres qui vont te, enfin les services que tu vas avoir en externe vont être tes MCP serveurs.
Bruno:
Et donc cette notion de par exemple Yahoo Weather, pourrait donc déclarer un serveur MCP qui permet du coup à n'importe quel agent à travers le monde de se connecter de manière facile pour obtenir de l'information de météo x ou y.
Zineb:
Exactement, oui. C'est un peu comme avant bon, prenant l'exemple de Yahoo, si au tout début ils avaient mis des API en client, voilà, SDK, et ils devraient, en fait, fournir pour plusieurs langages de programmation pour qu'on puisse les utiliser dans l'application. Après, on a vu un peu plus, en fait, des sociétés qui ont, en plus des SDK, ils ont donné des API REST, comme ça, en fait, n'importe quelle application puisse se connecter, puisqu'en fait, le REST, c'est un protocole qui existe un peu dans tous les langages, et bien en fait MCP Server ça va être un peu la même chose, ça va être une façon de pouvoir en fait intégrer ces MCP Server dans un protocole en fait, quel que soit en fait le langage de notre agent, donc de notre client.
Bruno:
Voilà Donc c'est effectivement un peu comme une API REST mais dédiée en fait à un monde plutôt orienté agentique Oui.
Zineb:
Après il y a deux typologies de type de serveur MCP, Il y a les serveurs MCP locaux qu'on va tourner avec des commandes ou bien du Docker, etc. Et qui vont être basés sur les standards in-out, donc STDiO. Ils ont très sorti. Et ça a été au tout début principalement la plus grosse partie des serveurs MCP qu'on a vu au tout début. Et il y a les serveurs en fait HTTP qui sont, qu'on dit, des serveurs MCP remote. Et on en envoie maintenant de plus en plus parce qu'il y a beaucoup de providers dans le cloud qui commencent chacun à donner leur serveur MCP. Je pense que dans le monde enterprise, on aura beaucoup aussi parce qu'on a l'habitude d'avoir du reste des API, etc. Donc on va avoir de plus en plus, je pense, de serveurs en mode HTTP pour découpler les applications, donc distants. Et donc voilà, il y a les deux. Il y a les deux, mais le protocole, l'échange des messages, ça va être en fait le même principe.
Bruno:
Versus une API REST, du coup j'ai du mal à comprendre la différence entre MCP et OpenAPI, le protocole qui te permet d'avoir un standard de déclaration des différents endpoints de ton API ?
Zineb:
Oui. Oui, alors la différence, ça va être juste sur comment les exposer à son LLM. En fait, c'est ça le truc. Aujourd'hui, il existe des outils qui permettent d'ailleurs de passer d'une spécification OpenAI à un serveur MCP. Mais après voilà il y a une vidéo qui tourne, qui parle de ça et qui dit que pour des LLM des fois il faut par exemple donner un peu plus de descriptions, pour être sûr qu'en fait que le LLM comprenne, ce qu'il doit en faire et après il faut aussi trouver des cas pertinents pour les agents et puis aussi qui a une... Une taille maximum des outils que peut utiliser. Mais aujourd'hui, si on va sur le site d'Enthropic, celui de modèle contexte protocole, il y a une page qui décrit un peu la liste des serveurs MCP et surtout, il y a une partie où il y a quelques serveurs. Alors, je ne sais pas s'ils ont été développés par eux, mais en fait, c'est des serveurs qu'on peut utiliser facilement. Mais si on regarde, par exemple, le code de suite de Slack, en fait, tous les tools, ils ne font qu'appeler l'API reste de Slack. Donc, c'est juste qu'aujourd'hui, c'est soit il faut transformer ces API en serveurs MCP et il y a des outils qui aident à le faire. Soit en fait il faut créer des espèces de systèmes qui permettent en fait de transposer ça pour. Un contexte plutôt MCP dans le protocole si ça n'existe pas déjà et.
Bruno:
Donc imaginons que je crée un agent dans une technolanda parce que de ce que je comprends aussi je peux faire mon agent dans n'importe quel contexte environnement, je peux faire avec du je peux le faire avec peut-être même des technos no-code type MEC ou NVTN ou je ne sais quoi. Qu'est-ce que je dois faire pour commencer à utiliser tous ces serveurs MCP déjà disponibles à travers le monde ?
Zineb:
Alors, ce qu'on peut faire, c'est qu'il faut que… Alors, je ne sais pas pour l'Inchain, mais je pense que oui, parce que moi, je suis dans Java. Donc, l'Inchain 4G, on a en fait la possibilité d'avoir une dépendance client MCP et on déclare notre client. Peut-être qu'on déclare aussi si c'est HTTP ou STDIU parce que ça va fonctionner différemment. Et en fait ça va permettre en fait de rajouter via la librairie les contextes. Moi je vais parler plus de Langchain4J parce que c'est le projet que je fais mais en fait ce qu'il y a c'est que quand on crée notre AI service donc notre AI service c'est ce qui va représenter un agent par exemple, bah en fait on va lui dire bah tiens en fait j'ai un client ou plusieurs et bah en fait c'est tout ce que je dois faire je prends la dépendance je la rajoute dans mon code. Après si je veux aller voir en fait ce qui se passe derrière et capter en fait les. Les messages par exemple moi sur le serveur que nous on a développé j'ai une possibilité d'aller voir par exemple les logs Donc, j'ai mon serveur, je vois bien que le client, une fois que l'application a démarré, va aller demander à mon serveur MCPHTTP quels sont les capabilities que j'ai. Et donc on va lui renvoyer la liste et à chaque fois qu'en fait je fais un chat avec le LLM, je peux dans mon client activer les logs et je vois que Langchain4j n'envoie pas que le prompt mais envoie en fait tous les outils qu'il y a dans mon MCP serveur. Et si dans ce use case-là, il est pertinent d'utiliser un MCP serveur, tout le cas, c'est ce que je suis en train de faire dans ma démo, donc oui, en fait, le LLM répond à Langchain4j qu'en fait, il faut exécuter telle fonction avec tel paramètre. On peut reprendre ça un petit peu après. Et donc, Langchain4j le fait parce que c'est dans le code du client. Donc, va envoyer les informations. je vois sur mon serveur qu'il y a une requête qui est arrivée, qu'elle s'est exécutée qu'il y a eu un retour et puis je revois dans le côté client qu'en fait Langchain4j a renvoyé, donc l'historique et le prompt avec la nouvelle réponse. Au LLM qui s'il n'a plus besoin d'autre exécution va retourner la réponse s'il veut bien enchaîner avec un autre tool, je vais voir qu'en fait ça redit donc du coup c'est plus ces librairies là qui ont déjà fait cet exercice de va-et-vient donc en fait on n'envoie pas que le prompt mais on envoie la liste des fonctions, et en fait dans le retour on est capable de savoir si c'est une réponse ou si on a une demande d'exécution d'outils c'est aussi la C'est la librairie client qui va gérer l'historique parce que le LLM, en fait, c'est stateless. Donc, en fait, on lui donne tout l'historique et tout ce qu'on a comme capabilities. Et le LLM va dire, en fait, je veux faire ça. Et après, il faut lui renvoyer tout pour qu'il voit les étapes. OK, ça, c'est ce qu'on a demandé. Ça, c'est l'exécution du premier tool. En fait, j'ai besoin d'utiliser un autre tool. Et en fait, c'est plutôt le client qui sait d'où vient ces tools, comment les exécuter, etc. Et qui a le protocole. Donc, ce n'est pas le LLM qui sait réellement. Voilà, c'est plutôt l'application cliente. Et on peut aller plus loin dans l'application client. Ça veut dire qu'on peut rajouter des guardrails, mais ça, ça n'a rien à voir avec le protocole. Ça veut dire que son agent, on peut savoir si le LLM a le droit ou pas d'exécuter tous les outils ou bien dans quelles conditions, si on a eu du rag, etc. Le client, ce n'est pas juste le protocole MCP client, mais ça va être tout le contexte et tout ce qu'on veut faire. c'est l'agent quoi.
Bruno:
Mais donc c'est le, attends j'essaie de comprendre donc si je comprends bien l'assistant, enfin mon agent qui est donc ce client MCP, il va avoir en gros son instruction système qui va contenir tous les différents serveurs MCP auxquels je veux me connecter, quand il va s'exécuter quand Lang4j va s'exécuter il va aller chercher la description du coup de tous ces serveurs, qu'il va mettre du coup dans les instructions. Et après, quand j'ai mon prompt qui est passé à mon assistant, en plus des instructions, il va ajouter l'exécution de certains éléments de chacun de ces serveurs. C'est dans la réponse qu'il va exécuter certains éléments ? Ou est-ce que c'est le serveur qui choisit ce qu'il exécute ?
Zineb:
Alors, le serveur MCP, lui, il est en attente qu'on lui demande d'exécuter.
Bruno:
OK.
Zineb:
Voilà.
Bruno:
Donc, il faut qu'il reçoive un moment, une requête précise.
Zineb:
Voilà.
Bruno:
Je veux la météo à Saint-Pétersbourg pour le 23 juillet.
Zineb:
Et voilà, et c'est stateless. C'est un peu comme quand Langchain ou Langchain4j appelle le LLM, c'est vraiment stateless.
Bruno:
OK.
Zineb:
Mais c'est vraiment la partie client qui va avoir le contexte. Donc, il va avoir l'historique, il va se dire, j'ai fait un premier appel à tous les serveurs MCP dans l'application à démarrer. Je sais quels sont les outils que j'ai à disposition ou bien les templates ou les ressources. Je vais les exposer dans le contexte à chaque fois que je parle avec le LLM. Et après, ces applications, de toute manière, même avant le MCP, quand c'était les tools dans l'application, En fait, les librairies telles que LangChain et LangChain4G vont gérer la discussion avec le LLM. Je suppose que LangChain et LangChain4G, c'est la même chose. Mais pour les développeurs, il faut juste savoir ce qui se passe et comment le contexte est fait. Voir un petit peu en mode développement, etc. Les logs pour se rendre compte de la taille du contexte qui est envoyé à chaque fois. Se rendent compte aussi du nombre de tools qu'on envoie parce que plus le nombre de tools qu'on va envoyer à OLLM est plus grand et plus il y aura d'hallucinations. Donc, ce sont des choses qu'on doit savoir et en fait regarder pendant le développement. Mais c'est les librairies en fait qui vont gérer ça.
Bruno:
Ok. Donc, MCP en fait, on pourrait le voir un peu comme un middleware de transformation, de la donnée un petit peu ou est-ce que ça a vocation à devenir un standard de communication ?
Zineb:
Je pense parce que ça a pris vraiment un peu partout. Tout le monde s'y met. Avant c'était en tropique mais il y a eu les grands chez Google, chez OpenAI, etc. Mais aussi toutes les sociétés sont en train de faire leurs MCP serveurs. Et donc, du coup, je pense que c'est un standard qui va évoluer et je pense que ça va évoluer beaucoup plus pour du multi-agentique, la sécurité dans les gros systèmes, enterprise. Donc, voilà, ça a déjà pas mal évolué depuis que c'est sorti en novembre, mais ça a vraiment pris. J'ai l'impression que dans tous les grosses boîtes dans tous les keynotes on parle de MCP, Google aussi ils ont sorti un nouveau protocole agent to agent et dans l'intérieur ils disent que ça fonctionne avec MCP donc en fait on voit vraiment, MCP prendre il y a d'autres systèmes mais MCP a vraiment bien pris et donc je pense que ça va pas mal évoluer et.
Bruno:
Donc en fait ce qui semble effectivement intéressant, là on a pris l'exemple, et j'invite peut-être trivial, des API, majoritairement REST et autres qui existent on parle effectivement de comment donner le moyen à un LLM d'aller taper sur ces API là mais de ce que je comprends aussi, grâce à MCP on peut effectivement imaginer du coup un agent qui parle à une application à un serveur, à une base de données, à tout un environnement applicatif voire même effectivement à un autre agent en fait Oui.
Zineb:
Alors déjà pour tout à l'heure j'ai oublié de dire, c'est qu'il y en a qui disent que c'est le USB-C de l'IA, et on va dire c'est le protocole d'intégration avec ce qui est autre que d'autres systèmes LM, Par rapport en fait à, à ta question si, il y a quand même juste une seule distinction c'est que après ce qu'on va exposer sur les MCP serveurs il faudrait faire attention, à la nature de la donnée et à la nature aussi de ce qu'on donne comme capacité au LLM de décider d'exécuter, Donc la première des choses c'est par rapport aux données parce que si on tape sur des LLM qui sont publiques, même si on paye des fois des versions en fait entreprises qui font que les données en fait elles ne vont pas entraîner leur modèle. Mais il y a dans les entreprises, en fait, certaines données sensibles qui, malgré ça, en fait, les gens ont pour instruction d'utiliser les IA sauf pour cette typologie-là de l'eau de données.
Bruno:
On connaît, oui.
Zineb:
Donc, en fait, on ne peut pas exposer n'importe quelle base de données. Et après, si on peut taper directement dans des bases de données, il faut être sûr et certain de ce qu'on est en train de faire parce qu'aujourd'hui, il y a des MCP à serveurs où on peut faire n'importe quel query, donc on peut aussi supprimer, etc. Donc, est-ce que c'est ça qu'on fait ou est-ce qu'on a un agent qui a le droit d'aller chercher des informations, par exemple, pour des besoins de chat ? Et dans ce cas-là, peut-être qu'on va plus s'orienter vers créer notre propre MCP serveur avec uniquement les fonctions qui sont autorisées. Et après aussi il faut faire attention à ce que le LLM peut faire, par exemple récemment j'avais testé le MCP server file system. Ce MCP server je me suis dit, c'est cool, il ne peut pas supprimer il peut créer des fichiers, il peut modifier des fichiers etc, donc j'ai demandé à Cloud Desktop où j'ai mis mon MCP serveur de supprimer mon fichier en me disant dans ma tête il ne va pas supprimer le fichier. Donc effectivement il ne pouvait pas supprimer le fichier mais il a décidé d'essayer de faire en sorte de répondre à ma demande et donc a en fait effacé le contenu du fichier. Si ça se trouve, si j'avais une autre fonction qui fait autre chose, mais à un moment, ça peut supprimer le fichier, peut-être qu'il l'aurait appelé. Mais en tous les cas, il faut aussi bien tester le système pour se dire en fait, qu'est-ce que le modèle, il fait ? Parce que le modèle, finalement, ne réfléchissait pas comme moi. Moi, je me suis dit, je n'ai pas le droit, donc je ne le fais pas. L'élème, il s'est dit, je ne peux pas le faire, mais comment je peux satisfaire au mieux la demande de ce dîner ? C'est pas mal du coup. donc du coup je supprime le contenu du fichier mais le fichier il est là et après il m'a expliqué et j'ai vu tout le raisonnement je ne peux pas le faire etc et il m'a expliqué qu'il ne pouvait pas le faire mais du coup, ce qu'il a fait c'est qu'il a le fichier est vide donc voilà.
Bruno:
Ce qui peut effectivement être plutôt gênant tu parlais tout à l'heure de tooling de tous les outils que vous utilisez chez Radat, dans la création de ces agents pour voir un petit peu comment ça se comporte, Est-ce que tu peux nous en dire un peu plus ? Est-ce que ça vous permet de faire, de ce que j'ai compris ? Du coup, il y a des moyens pour vous de vérifier comment les décisions sont prises et comment est-ce que ça influe et comment ces capacités sont utilisées ?
Zineb:
Alors, je ne sais pas ce qu'ils font côté IA dans ma société, mais il y a des gens qui travaillent sur ça. Moi, en fait, non, je suis plutôt vraiment dans le développement de MCP serveurs ou bien d'agents, mais vraiment dans les outils. Ah, le vérifier, c'est plutôt dans les librairies Language and 4G, Quarkish Language and 4G, on a des quadrails où on peut, en fait, m'apprécier à nous de développer, en fait, ce que l'IA va faire. Donc, en fait... Par exemple, l'histoire du MCP-server qui a des fonctions pour faire des actions dans la base de données. Si je le développe, je le fais tourner et puis je l'utilise directement avec Cloud, ça peut par exemple me supprimer des informations. Mais si je l'utilise dans un agent je peux rajouter des conditions pour dire en fait non, si telle commande par exemple est dans le passé, on ne peut pas la supprimer on ne peut pas l'annuler, mais tu vois c'est peut-être plus des contrôles qu'on va faire côté une application qu'on développe, et pas côté MCP Server, après peut-être que côté MCP Server on peut rajouter aussi les contrôles mais on peut en fait faire en sorte que le client n'arrive pas, ne permette pas de faire en fait cette information là mais ça c'est plus d'autres choses en fait, on se dit bah en fait j'ai mon agent et en fait je vais rajouter des contrôles en entrée ou en sortie soit pour, détecter les prompt injections etc soit pour voir si le résultat par le LLM c'est pas une hallucination, Ou bien s'il n'est pas en train de dire aux utilisateurs. Que des conditions qui ne sont pas des conditions de leur vendre qui vont être remboursées, je ne sais pas quoi. Mais en fait, ça n'existe pas. Mais ça, c'est vraiment des contrôles en plus. Donc, des entrées et des sorties avant de renvoyer la réponse au client ou avant d'exécuter quelque chose.
Bruno:
Mais du coup sur des réponses comme ça qui sont envoyées plus ou moins en temps réel à part une IA qui elle-même va vérifier ce qui est renvoyé et qui donc elle-même peut en fait laisser passer des choses qui ne devraient pas être laissées passer comment tu fais pour filtrer ce genre de choses ?
Zineb:
C'est pas trop mon domaine je sais que après il y a des choses qu'on peut faire avec des IA il y a des choses où on va aller voir dans nos bases de données, si les informations en fait s'utilisaient, si par exemple on a demandé à l'IA de se contenir uniquement à notre base de données vectorielle, qu'on revoit si en fait ça matche avec ce qu'on a par rapport à recherche sémantique, etc. Ça va rajouter plus de travail mais je pense que oui, si, notre IA, elle fait des choses ou elle répond des choses, voilà, peut-être qu'il faut creuser un peu plus pour voir si on n'a pas, bien sûr, la possibilité de faire du fine-tuning ou quoi, voilà.
Bruno:
Ok. Chez Red Hat, et plus spécifiquement dans ton équipe, à quoi vous utilisez aujourd'hui LongChain et où MCP ?
Zineb:
Alors nous, à quoi on l'utilise ? On l'utilise pour développer une espèce de gateway vers plusieurs MCP serveurs. En fait, mon projet, c'est un projet d'intégration. Et donc, du coup, on a plus de 300 composants vers plusieurs systèmes. Et donc, du coup, ce qu'on essaie de se dire, c'est qu'aujourd'hui, pour utiliser notre application, il faut savoir notre DSL, être développeur d'Apache Camel, savoir comment coder le composant. On s'était dit comment on pourrait faire des tools qui sont disponibles sans que les gens aient à comprendre notre technologie, notre projet. Ça veut dire, voilà, sans savoir comment utiliser un autre projet comme une API nouvelle. Donc, comment en fait se dire, en fait, on va faire des MCP tools sur ce que nous, on a. Donc, nous, on a plein de coupons, par exemple, vers des services de cloud public, vers plein d'outils qui, eux aussi, certains sont en train de faire leur MCP serveur. Mais voilà vers Kafka plein de trucs, comment en fait faire en sorte d'avoir des outils qui soient simples et dont on donne la description pour des LLM après nous on est dans d'autres problématiques du fait qu'on va en avoir beaucoup et comment en fait on va les filtrer par réutilisation et pas avoir tout installé d'un coup etc. Et sinon l'autre partie dans Camel et dans l'autre projet Quarkus c'est de donner ces outils-là aux utilisateurs. Donc, en fait, moi, je travaille avec les... Enfin, je suis très proche des gens de Quarkus, Langchain4J, qui font en sorte que Langchain4J soit plus facile d'utilisation et bien intégré à Quarkus, qui est une... Une stack Java, et donc aussi avec tout ce qui est la développeur Joy, le fait que ça soit adapté pour tourner sur du Kubernetes, en natif, etc., donc tout ça. Et moi, dans Camel, c'est déjà un espèce d'orchestrateur où on a des informations qui circulent, on va les transformer, les rediriger, etc., et en fait, se dire qu'on a des use cases où les gens vont vouloir orchestrer plusieurs actions. Mais à un moment, il y a du Langchain 4G au milieu. Donc, comment faire en sorte de faire un ou plusieurs composants dans Apache Camel qui sont à destination des développeurs pour faire leur workflow un peu plus compliqué. Voilà, donc moi, je travaille avec mon équipe sur Camel. On a déjà créé plusieurs composants. Et puis là, en ce moment, on est en train de travailler pour travailler sur des composants qui soient un peu plus simples. Voilà, parce qu'il y a d'autres personnes comme N8N qui font des trucs un peu plus simples. Donc voilà, parce qu'en fait, on a déjà toutes les briques, mais comment faire en sorte que ça soit un peu plus facile et aussi que les gens ne soient pas experts en Apache Camel vraiment pour créer un agent simple. Donc voilà. C'est plutôt pour créer des agents ou bien pour se connecter à des MCP serveurs qui utilisent du camel, mais sans faire du camel.
Bruno:
Est-ce que cette notion d'orchestrateur qui se voit de plus en plus sur ces orchestrateurs d'agents, elle passe aujourd'hui nécessairement par MCP ou pas forcément ?
Zineb:
En fait, personnellement, je verrais un agent, il a ses MCP autour. C'est mon cas idéal. Et après, en fait, il faut quelque chose qui va orchestrer les agents. Maintenant, il y a d'autres personnes qui vont mettre des agents dans les tools ou dans les MCP serveurs. Pour faire de l'agentic comme ça. Du coup, à ce moment-là, on ne crée pas vraiment un workflow. On laisse en fait le workflow se faire soi-même. Maintenant, il faut vraiment avoir les use cases pour ça. Je trouve que si on fait nous-mêmes le MCP serveur, qu'on déploie tout chez nous, qu'on maîtrise ce qu'on fait, On peut aller dans ce sens-là. Si on est un provider de service et qu'on fournit un MCP serveur à nos clients, Il vaut mieux qu'il n'y ait pas de l'IA, au moins il faut le dire, parce qu'aujourd'hui, les gens, il faut qu'on sache ce qu'on fait de nos données et à quel moment il y a de l'IA derrière. Donc, on s'attend, j'ai l'impression, après c'est mon idée aujourd'hui, mais j'ai l'impression qu'aujourd'hui, si je développe une application et j'ai mon provider cloud qui me donne un MCP serveur, je le vois comme l'équivalent d'une API REST et que je pourrais peut-être utiliser dans mon agent. Et je préférais que s'il n'y ait pas d'IA derrière, après sinon il faut que ça soit vraiment très clair parce que du coup on veut toujours savoir où sont nos données, pourquoi, etc. Donc voilà, que ça soit assez clair.
Bruno:
Peut-être que j'ai toujours mal compris MCP, mais de ce que je vois, MCP est quand même beaucoup poussé par OpenAI, Anthropik et toutes ces entreprises-là qui ont quand même vocation à mettre à disposition un agent personnel pour chaque être humain entre guillemets sur Terre. Et ce qu'on pousse en MCP, c'est pas au final un peu le même move que Google, qui a essayé pendant des années et qui a plutôt bien réussi d'ailleurs, à formater comment est-ce que les sites web devaient être structurés et comment ils devaient présenter l'information pour être bien référencés et positionnés, en première page et en top result sur la première page, c'est une manière de forcer les gens à rentrer dans ton écosystème pour que tu puisses toi en tant que fournisseur, dans le premier cas Google et donc maintenant dans un avenir peut-être plus proche de ChatGPT de fournir un service en fait à tes utilisateurs et que donc avec toutes les générations du MCP, ça va être juste là entre guillemets la disparition de Yahoo Weather par exemple, qui ne sera plus qu'une API consommée par un ChatGPT pour montrer la météo à un utilisateur ?
Zineb:
Peut-être. Oui, je n'ai pas vraiment réfléchi à ça. C'est juste que si on pense à un an et demi... Intégrer ces données, c'est ce qui a été vu comme ça va... Beaucoup de gens disaient qu'on pense que ça va être le futur du truc. Après, il y a eu plein d'initiatives à droite, à gauche. Je me demande si MCP, par le fait qu'ils sont allés dans un truc très facile et en plus open, si c'est pas ça qui a fait que ça a pris cette ampleur-là. Parce qu'effectivement, dès le début, ils ne sont pas allés trop sur le mode enterprise, mais sur des trucs vraiment très faciles. J'ai juste mon client cloud desktop et en fait, je peux regarder, je peux rajouter tel et tel serveur MCP en local sur ma machine. Voilà, ça peut faire plein de choses. Ça peut aller lire dans mes fichiers. Ça peut analyser mon code, générer du code. Ça peut me donner le schéma d'une base de données, créer ma base de données que j'ai pensée, voilà, comme ça, avec plein de MCP. Je trouve qu'en fait, ils sont partis par une simplicité et le fait que ça soit open, je ne sais pas si c'est ça qui a fait que... Et aussi, c'était très, très rapide et très simple d'avoir le wow et très rapide de comprendre la première version de l'aspect et de faire son propre SDK ou librairie, etc. Mais je pense qu'effectivement, aujourd'hui, ça se voit comme le protocole. On verra dans un an si c'est toujours le cas. Mais il y a des gens qui disent carrément, rag, c'est fini. Moi je plug les MCP serveurs, ils vont aller chercher les fichiers, ils vont chercher les bases de données etc et puis voilà il y a une mouvance incroyable autour de MCP j'y croyais pas trop en fait en janvier mais là en juin c'est assez et aussi, j'ai fait un meetup récemment et j'étais impressionnée qu'il y avait beaucoup de gens qui avaient déjà testé des MCP serveurs au moins sur leur machine ou un truc comme ça. Donc, ça a vraiment pris pas mal.
Bruno:
Avec, du coup, tous ces appels que tu peux faire dans l'exécution de ton agent, avec tous ces MCP-serveurs à disposition maintenant, comment est gérée la limite de token ? Parce qu'en général, quand même, en entrée, tu as une limite de token sur tous les agents que tu as aujourd'hui. Ton LLM derrière, tu as une limite qui est certes de plus en plus grande, mais qui est quand même limitée. Est-ce qu'il y a une gestion, du coup, aussi de ces éléments-là ?
Zineb:
Alors, en mode entreprise, je ne sais pas combien ça coûte, mais je sais qu'en mode, le truc le plus répandu, par exemple, sur du mode copilot ou vibe coding, etc., les abonnements, en fait, ils prennent des contextes de plus en plus larges. Donc, aujourd'hui, on a des modèles de reasoning qui sont capables de raisonner pendant longtemps. Donc, j'en parle dans 15 minutes. Ils sont capables d'aller voir tout en code base, voir l'issue, créer du code. En se basant sur des MCP serveurs où ils vont aller, par exemple, regarder dans les fichiers, etc. Et puis, se baser sur d'autres MCP serveurs locaux où on a donné déjà des API keys, etc., pour ne pas le donner à Cloud, par exemple, et d'ouvrir la pool request. Et c'est vrai que leur contexte sur les abonnements mensuels, pour les développeurs, il est de plus en plus énorme et peut vraiment aller voir tout un projet, analyser, etc. Mais oui c'est très important de le savoir peut-être pour le monde d'entreprise, et j'ai pas l'information. Mais c'est vrai que ça fait des contextes qui sont du moment qu'on est dans l'agentic qu'on a besoin de tools etc, et là c'est le cas avec les MCP serveurs on va avoir des contextes, des fenêtres de contexte, c'est ça le truc qui est assez large et donc si on paye par token ça va être un peu.
Bruno:
Ça peut exploser vite fait j'avais une autre question qui m'a échappé qui était sur, ah oui toi qui utilises déjà maintenant MCP depuis un petit moment relativement par rapport au temps depuis lequel ça existe en tout cas, pour des personnes qui l'ont pas encore testé mais qui vont très certainement j'espère en tout cas avoir envie de s'y mettre, c'est quoi le conseil que tu donnerais sur les premières erreurs que toi tu faisais dans l'usage de ces trucs-là et qu'aujourd'hui tu ne fais plus grâce à l'expérience pour nous faire gagner du temps aussi encore dans l'usage de ces outils-là ?
Zineb:
Alors déjà, c'est de l'utiliser directement, peut-être pas directement dans le développement d'un agent, mais d'utiliser un client tel que... Alors que l'autre desktop va être rapidement limité, mais on peut trouver aujourd'hui des clients open source Voilà, gratuit C'est attendu, Donc, moi, déjà, j'ai démarré avec soit j'avais trouvé une MCP CLI. En tout cas, c'est mon collègue qui avait fait une démo et j'avais utilisé la CLI au tout début. Mais j'ai utilisé aussi Cloud Desktop, c'est assez intuitif. Les MCP serveurs qui mettent en avant, eux, devant, sont plutôt faciles à utiliser. Voire même on peut trouver des vidéos sur internet qui les présentent déjà il y a le truc du file system, comment ça fonctionne, il y a les. SQLite ou bien PostgreSQL par exemple pour voir un petit peu qu'est-ce qu'on peut faire sur la base de données celui de SQLite alors je ne sais pas si ça se prononce comme ça d'ailleurs mais il a une petite particularité Celui-là, c'est qu'ils ont une option prompt, mais c'est un peu compliqué à comprendre comment utiliser dans Cloud Desktop. Mais en tout cas, il y a une espèce de prompt. D'ailleurs, on peut aller voir le code, en fait, sur la liste des MCP qu'ils ont donné. Il y a le code qui est assez lisible, même si ce n'est pas du Java. Moi, c'est très facile à comprendre. Où il y a un prompt qui est énorme. mais en fait, ce prompt-là, il permet de créer une base de données pour des démos. Et donc, en fait, on peut l'utiliser, ce prompt-là, donc c'est une des capacités MCP, en décrivant uniquement ce qu'on attend du LLM de créer comme base de données. Et en fait, le prompt, il est assez long pour lui expliquer qu'il doit créer une base de données, des tables, etc. On doit juste lui donner le contexte de quoi, c'est quoi le contexte de la base de données. Et donc ça c'est l'exemple que j'ai trouvé dans ces petits serveurs, de prompt en tout cas que j'ai utilisé la seule fois où j'ai utilisé les prompt et après sinon il y a beaucoup beaucoup de MCP serveurs mais il faut faire attention parce qu'il y en a qui sont pas sécures, il y a eu des histoires de prompt d'injection etc donc. Il y en a un nombre incroyable, tous les jours il y en a beaucoup plus donc faire attention un petit peu si ça vient vraiment de la société, si ça vient d'Anthropic ou sinon, si c'est open source, on peut regarder le code rapidement. En général, ce n'est pas des codes très compliqués comme ce que j'avais dit, Sweet Slack, c'était facile, c'était juste, par exemple, lister les channels, en fait, on va voir que dans la méthode, ça appelle l'IPI REST pour lister les channels et du coup, après, ça rend le résultat en JSON. Voilà, c'est vraiment regarder un peu ce que ça fait ou bien au moins voir s'il y a des avis sur internet, si c'est pas délivré par quelqu'un qu'on connait pas et. Et puis, après, il y a les choses assez nouvelles, c'est qu'on a commencé, en fait, ils ont commencé à faire des versions de spécifications sur la sécurité. Donc, voilà, il y a des sites sur lesquels il va falloir avoir un token ou que sais-je qu'on utilise, en fait, pour se connecter, un peu comme les API REST avant. Et cette spec-là est en train d'évoluer avec toutes les discussions qu'il y a avec donc voilà mais c'est vraiment, le file system les bases de données ce sont des trucs qui sont assez faciles à tester et une fois qu'on les a testés, en fait on peut faire un client avec la librairie, le langage de son choix, pour en fait l'utiliser dans son code et puis une fois qu'on a compris, en fait là on peut aller plus loin utiliser d'autres, MCP serveurs ou développer son propre MCP serveur, je connais pas en fait tout l'univers des SDK, des MCP serveurs mais. Moi j'utilise Quarkus et du coup c'est assez facile on écrit nos fonctions comme on a l'habitude, c'est juste qu'on va utiliser une dépendance spécifique on va avoir des annotations spécifiques, et en fait ça va faire la magie de les faire, de faire en sorte que c'est un MCP serveur et voilà, et la même chose pour les ressources ou bien les promptes, ça va être juste des annotations qu'on va rajouter sur nos fonctions et, avec des descriptions parce qu'en fait chaque tool doit avoir sa description s'il y a des paramètres, ils doivent avoir des descriptions et c'est comme ça que le LLM va pouvoir, en fait l'utiliser donc après il faudra, aussi faire du testing côté client pour voir si, comment on dit les tests j'ai oublié dans l'IA mais en fait, c'est c'est le fait quand on a un truc en production on doit avoir des tests qui tournent tout le temps sur les modèles pour voir si globalement avec le pourcentage qu'on s'était donné parce que ce n'est pas déterministe s'il n'y a pas de dérive, etc.
Bruno:
Pour terminer, c'est une technologie qui change beaucoup, qui est encore très récente. Pour toi, c'est quoi les trucs aujourd'hui qui manquent encore dans MCP ?
Zineb:
Si
Bruno:
Tant est que tu en es identifié si tant est que tu en es identifié des choses qui manquent.
Zineb:
Alors ce qui manque je sais pas si ça manque ou bien je ne sais pas encore l'utiliser mais. Alors sur cloud desktop j'arrive à le faire vraiment mais en fait c'est de se dire, je pense que ça existe en fait quand on crée son agent de limiter en fait l'accès, au serveur après je sais pas si c'est à cause de ma vision, entreprise ou du fait que ça fait longtemps que je bosse mais comme je suis fait quand on travaille sur un serveur tu vois on a besoin de limiter plus par rapport. À quel client accède par exemple au serveur pour avoir plus cette granularité là aussi du côté serveur je sais pas si c'est pertinent ou c'est juste la façon dont je vois les choses. Mais j'ai l'impression que je suis habituée aussi à me dire ça, c'est mon serveur, mais je vais être sûre et certain qui vient. Et donc là, ils ont fait la partie authentification. Mais peut-être que je veux avoir la granularité, en fait, suivant la typologie de l'utilisateur, quels sont les outils qu'ils ont le droit de voir ou de faire. Mais je ne sais pas si c'est quelque chose vraiment... Enfin, je ne sais pas où est le use case, mais on va voir s'il y a du use case. Mais c'est la première des choses. Et peut-être que c'est parce que je travaille sur Wanaku qu'on a ce problème-là. Et après, c'est plutôt aussi... De se dire si j'ai pas un chatbot mais si on est dans une grosse application avec des gros workflows et, qu'en fait à un moment on va appeler un MCP serveur qui va peut-être rappeler autre chose ou peut-être un agent derrière etc c'est comment placer en fait, les identités dans le flux mais je pense que ça, ça va arriver aussi je pense plus tard ou ça va être plus plus tard parce qu'aujourd'hui, entre clients et serveurs, j'ai l'impression que la sécurité est bien figée. Maintenant, c'est plus dans le cas où on a plusieurs outils, mais qu'on veut... Si on a plusieurs clients sur un serveur et qu'on veut faire des trucs comme on faisait avant, genre si c'est tel API token, en fait, va avoir accès qu'à ça. Les personnes ont accès au même truc, Mais après, quand je vois comment MCP a appris, je me suis dit, est-ce que c'est vrai comme use case et qu'il y aura vraiment ces use cases-là en entreprise ? Ou bien aujourd'hui, c'est la mode, c'est l'IA, tout doit être plus facile ? J'en sais rien, en fait, on va voir dans le futur.
Bruno:
Canon, merci beaucoup Zineb pour cette conversation. J'ai deux dernières questions pour toi qui sont des questions rituelles du podcast. Et je réalise que du coup, j'ai oublié de te prévenir de ces questions rituelles. Avant de commencer l'enregistrement, la première, c'est est-ce qu'il y a un contenu tech ou non tech que tu souhaiterais partager avec l'ensemble des auditeuristes ?
Zineb:
C'est une bonne question. Un contenu tech ou non tech ?
Bruno:
Ça peut être un film, une série, un truc que tu as découvert récemment, une chaîne YouTube, une chaîne TikTok. Ça, c'est pas vraiment ce que tu veux.
Zineb:
J'ai un plan là. Est-ce que je peux avoir la deuxième question ?
Bruno:
La deuxième question, c'est la plus importante de ce podcast. Est-ce que tu es plutôt espace ou tabulation ?
Zineb:
Tabulation directe.
Bruno:
Très bien.
Zineb:
Est-ce qu'il y a une catégorie ?
Bruno:
Non, non, c'est juste pour savoir.
Zineb:
Alors, un contenu que j'ai aimé. Oh là là, j'oublie tout le temps.
Bruno:
Ce que je te propose, c'est qu'on peut te laisser le temps de la réflexion.
Zineb:
Oui.
Bruno:
Et puis, tu me diras en off et on mettra en description. Comme ça, les gens seront obligés d'aller en description pour voir le contenu que tu proposes.
Zineb:
OK, ça marche.
Bruno:
OK ?
Zineb:
Oui.
Bruno:
Merci beaucoup en tout cas Zineb pour cette conversation merci à toi et merci à tous d'avoir suivi cet épisode, j'espère qu'on vous a donné envie de vous mettre à MCP parce que c'est forcément une technologie qui est en train de prendre beaucoup d'ampleur et qui est hyper intéressante, comme toujours je vous remercie de partager ce podcast autour de vous, si vous souhaitez contribuer vous pouvez retrouver le lien du Tipeee en description de cet épisode bien évidemment je vous remercie bien évidemment de partager ce podcast autour de vous, je vous souhaite une bonne fin de semaine je vous dis à la semaine prochaine et d'ici là codez bien.