Comparatif
MCP ou function calling : deux niveaux différents
Le function calling permet au modèle de demander un appel de fonction ; MCP est le protocole qui fournit ces fonctions. Comment ils s'articulent.
Mis à jour le
Le function calling (appelé « tool use » chez Anthropic) est une capacité du modèle : il répond par une demande d'appel structurée, que votre application exécute. MCP (Model Context Protocol) est un protocole entre l'application et des serveurs : il dit comment découvrir des outils, les appeler et récupérer le résultat. L'un ne remplace pas l'autre : une application compatible MCP récupère les outils de ses serveurs, puis les présente au modèle qui les appelle par function calling. Cette page compare des approches techniques ; Cercle IA Tech est édité par IArche, qui édite ALMA, la plateforme IA pour PME.
Le function calling, côté modèle
D'après la documentation de Claude, le tool use permet au modèle d'appeler des fonctions que vous définissez. Il décide quand le faire à partir de la demande de l'utilisateur et de la description de l'outil. Le déroulé, pour un outil exécuté par votre application :
- Vous envoyez la requête avec une liste d'outils : chacun a un
name, unedescriptionet uninput_schema. - Le modèle répond avec
stop_reason: "tool_use"et un ou plusieurs blocstool_use(nom de l'outil et arguments). - Votre code exécute l'opération et renvoie un bloc
tool_result. - Le modèle utilise ce résultat pour répondre.
Tout se passe dans votre application : c'est vous qui écrivez la définition de chaque outil et le code qui l'exécute.
MCP, côté application
MCP déplace la définition et l'exécution des outils dans des serveurs séparés. La documentation décrit ce que fait l'application d'IA :
- elle interroge
tools/listsur chaque serveur connecté ; - elle réunit tous ces outils dans un registre unique que le modèle peut utiliser ;
- quand le modèle demande un outil, elle route l'appel vers le bon serveur avec
tools/call, puis rend le résultat au modèle.
Autrement dit, le modèle voit toujours des outils « classiques ». Ce qui change, c'est qu'il n'est plus nécessaire de les coder dans chaque application.
Comparaison
| Function calling seul | Avec MCP | |
|---|---|---|
| Niveau | Capacité du modèle et de son API (interface de programmation) | Protocole entre application et serveurs |
| Où sont définis les outils | Dans le code de l'application, à chaque requête | Dans des serveurs, découverts à l'usage |
| Qui exécute | Votre application | Le serveur MCP (local ou distant) |
| Réutilisation | Propre à une application | Un serveur sert tous les clients compatibles |
| Ressources et prompts | Non prévus | Prévus par le protocole |
| Changement d'outils | Redéployer l'application | Le serveur peut notifier le changement |
Un point de coût à ne pas oublier
La documentation de Claude indique que les définitions d'outils (noms, descriptions, schémas) passées dans le paramètre tools comptent dans les jetons d'entrée, en plus d'un court texte système ajouté automatiquement quand des outils sont fournis. Brancher beaucoup de serveurs MCP, c'est donc envoyer beaucoup de définitions au modèle. La documentation MCP signale, pour les clients qui fédèrent de nombreux serveurs, une approche de découverte progressive plutôt que tout charger d'emblée. Côté serveur, des descriptions courtes et précises et un nombre d'outils raisonnable restent la meilleure hygiène.
Les deux réunis : le connecteur MCP de l'API Claude
Anthropic propose aussi de brancher un serveur MCP distant directement dans un appel à l'API Messages, sans écrire de client MCP : le paramètre mcp_servers décrit le serveur, et un mcp_toolset dans tools choisit les outils à activer. Le modèle les appelle alors comme n'importe quel outil. Détails et limites sur la page le connecteur MCP de l'API Claude.
Que choisir
- Quelques fonctions propres à une seule application : le function calling direct est le plus simple.
- Des outils à partager entre plusieurs applications ou plusieurs équipes : un serveur MCP.
- Un service que vos clients veulent brancher à leur propre assistant : un serveur MCP distant, avec OAuth (voir MCP distant et OAuth).
La question voisine, « MCP ou API classique », est traitée sur la page MCP ou API.
Questions fréquentes
MCP remplace-t-il le function calling ?
Non. Le modèle continue d'appeler des outils par le mécanisme de tool use ; MCP standardise d'où viennent ces outils et comment l'application les exécute.
Les définitions d'outils coûtent-elles des jetons ?
Oui : la documentation de Claude indique que les noms, descriptions et schémas passés dans le paramètre tools comptent dans les jetons d'entrée de chaque requête.
Sources
Pages consultées pour écrire cet article :