Réutiliser vos outils Laravel MCP dans le Laravel AI SDK
Depuis quelque temps, notre équipe explore différentes façons d’intégrer des agents IA aux applications Laravel que nous développons. Avec l’arrivée de Laravel MCP et du Laravel AI SDK, l’écosystème devient beaucoup plus naturel et prometteur.
En les testant, nous avons toutefois vite rencontré un questionnement important. Comment éviter de dupliquer la logique entre les outils exposés à des agents externes et ceux utilisés directement dans une application?
Dans cet article, nous présentons une approche simple basée sur un proxy pour utiliser des outils Laravel MCP dans le Laravel AI SDK. Vous verrez comment connecter ces deux mondes, structurer une solution réutilisable et l’appliquer à un cas concret inspiré de notre bug tracker interne.
Laravel MCP : exposer votre application aux agents IA
Laravel MCP permet à une application Laravel de devenir un serveur compatible avec le Model Context Protocol. Concrètement, cela permet à des clients IA de découvrir et d’utiliser certaines capacités de votre application : des outils, des ressources ou des prompts.
Un outil MCP peut, par exemple :
chercher une demande dans un système interne;
créer une tâche;
résumer un dossier client;
récupérer des données métier;
déclencher une action dans une application.
L’intérêt principal est de rendre ces capacités accessibles à des agents externes, comme Claude Desktop, ChatGPT, GitHub Copilot ou d’autres environnements compatibles. Cela devient particulièrement utile pour tester rapidement des idées, valider des prompts, explorer différents workflows et permettre aux développeurs d’interagir avec une application de façon assistée.
Laravel AI SDK : intégrer l’IA directement dans l’application
Le Laravel AI SDK répond à un besoin complémentaire. Plutôt que d’exposer des outils à un client externe, il permet de créer des fonctionnalités IA directement dans votre application Laravel.
Le SDK offre une API unifiée pour interagir avec différents fournisseurs IA, créer des agents, utiliser des outils, gérer des sorties structurées, générer des embeddings, traiter des fichiers et plus encore.
Dans une application Laravel, cela ouvre la porte à des cas d’utilisation comme :
un assistant intégré à une interface utilisateur;
un agent de triage pour classifier des demandes;
un outil de résumé automatisé;
une aide à la rédaction;
une analyse intelligente de données internes;
un moteur de recommandation contextuel.
Autrement dit, Laravel MCP est très utile pour rendre votre application accessible à des agents externes, tandis que le Laravel AI SDK est idéal pour intégrer ces capacités directement dans votre produit.
Notre approche d’intégration des outils IA
L’approche que l’on trouve intéressante pour intégrer des outils IA dans les application est la suivante :
Créer des outils métier avec Laravel MCP.
Les exposer à des agents externes comme GitHub Copilot, Claude ou ChatGPT.
Tester rapidement différents prompts et workflows.
Réutiliser ces mêmes outils dans des agents spécialisés à l’intérieur de l’application avec le Laravel AI SDK.
Cette approche permet de commencer par une phase d’exploration très flexible. Les développeurs peuvent expérimenter directement avec les outils MCP, ajuster les paramètres, observer les réponses et raffiner les prompts.
Ensuite, lorsque le comportement devient suffisamment fiable, les mêmes capacités peuvent être intégrées dans l’application sous forme d’agents spécialisés. On passe ainsi d’un environnement d’expérimentation à une fonctionnalité produit, sans réécrire toute la logique métier.
Le problème : deux interfaces, une même logique
Le problème est qu’ils n’est toujours pas possible de connecter un serveur MCP local ou externe à Laravel AI SDK et les outils de Laravel MCP n’implémentent pas exactement la même interface.
Un outil MCP possède déjà :
un nom;
une description;
un schéma d’entrée;
une méthode
handle;une logique métier réutilisable.
Un outil du Laravel AI SDK a besoin d’éléments très similaires :
un nom;
une description;
un schéma;
une méthode
handle.
Sur le plan conceptuel, les deux mondes se ressemblent beaucoup. Pourtant, sans adaptation, on risque de dupliquer le code : une version de l’outil pour MCP, puis une autre pour le AI SDK.
Chez Exolnet, nous avons donc choisi une approche simple : créer un proxy qui permet d’envelopper un outil Laravel MCP dans un outil compatible avec le Laravel AI SDK.
Notre approche : un proxy entre Laravel MCP et le AI SDK
Voici une version simplifiée de notre classe ProxyMcpTool :
<?php
namespace App\Ai\Tools;
use Illuminate\Contracts\JsonSchema\JsonSchema;
use Illuminate\Support\Facades\App;
use Laravel\Ai\Contracts\Tool;
use Laravel\Ai\Tools\Request as AgentRequest;
use Laravel\Mcp\Request as McpRequest;
use Laravel\Mcp\ResponseFactory;
use Laravel\Mcp\Server\Tool as McpTool;
use Stringable;
class ProxyMcpTool implements Tool
{
protected McpTool $tool;
public function __construct(McpTool|string $tool)
{
$this->tool = $tool instanceof McpTool ? $tool : App::make($tool);
}
/**
* Get the name of the tool.
*/
public function name(): string
{
return $this->tool->name();
}
/**
* Get the description of the tool's purpose.
*/
public function description(): string
{
return $this->tool->description();
}
/**
* Execute the tool.
*/
public function handle(AgentRequest $request): Stringable|string
{
$mcpRequest = new McpRequest($request->all());
/** @var \Laravel\Mcp\Response|\Laravel\Mcp\ResponseFactory $response */
$response = App::call([$this->tool, 'handle'], [
'request' => $mcpRequest,
]);
$data = $response instanceof ResponseFactory
? json_encode($response->getStructuredContent())
: (string)$response->content();
return $data;
}
/**
* Get the tool's schema definition.
*/
public function schema(JsonSchema $schema): array
{
return $this->tool->schema($schema);
}
}L’idée est volontairement simple : le proxy implémente le contrat Laravel\Ai\Contracts\Tool, mais délègue tout le travail à l’outil MCP original.
Le nom, la description et le schéma sont directement récupérés depuis l’outil MCP. Lorsqu’un agent du Laravel AI SDK appelle l’outil, le proxy transforme la requête du SDK en requête MCP, puis appelle la méthode handle de l’outil MCP.
Cela nous permet de conserver une seule source de vérité pour la logique métier.
Exemple concret : notre système de suivi des bogues
Chez Exolnet, nous avons utilisé cette approche pour créer différents outils MCP spécialisés autour de notre système interne de suivi des bogues.
Ces outils peuvent, par exemple, aider à :
consulter les détails d’une demande;
analyser le contexte d’un ticket;
identifier les informations manquantes;
suggérer une priorité;
aider au triage des nouvelles demandes.
Dans un premier temps, nous avons branché ces outils à GitHub Copilot, ChatGPT et Claude afin de tester différents prompts et workflows. Cela a permis à l’équipe de valider rapidement ce qui fonctionne bien, ce qui doit être ajusté et quelles limites doivent être imposées à l’agent.
Ensuite, lorsque nous avons été satisfaits du comportement, nous avons réutilisé les mêmes outils dans des agents spécialisés intégrés directement à notre suivi des bogues. Par exemple, lorsqu’une nouvelle demande est créée, un hook est lancé et un agent de triage l’analyse, propose une catégorisation, identifie les duplicatas et aide l’équipe à démarrer plus rapidement.
Ce type d’automatisation ne remplace pas le jugement humain. Il réduit plutôt la friction, accélère certaines étapes répétitives et permet à l’équipe de se concentrer sur les décisions qui demandent réellement de l’expérience.
Pourquoi cette approche est utile
Cette approche nous donne plusieurs avantages :
moins de duplication de code;
une logique métier centralisée;
un meilleur alignement entre expérimentation et production;
une adoption graduelle de l’IA dans nos applications;
une façon plus simple de tester les outils avant de les intégrer à l’expérience utilisateur.
Elle respecte aussi une idée importante en développement logiciel : commencer petit, valider rapidement, puis intégrer progressivement ce qui apporte une vraie valeur.
Conclusion
L’écosystème IA de Laravel évolue rapidement, et c’est une excellente nouvelle pour les équipes qui souhaitent intégrer des agents IA dans leurs applications sans s’éloigner de leurs pratiques Laravel habituelles.
Idéalement, ce type de réutilisation entre Laravel MCP et le Laravel AI SDK deviendra éventuellement une fonctionnalité native de l’écosystème Laravel. Ce serait encore plus puissant si le Laravel AI SDK pouvait aussi se connecter directement à des serveurs MCP locaux ou externes, avec la possibilité de spécifier les outils autorisés.
En attendant, une classe proxy comme celle-ci nous permet d’avancer dès maintenant. Elle offre une solution simple, pragmatique et alignée avec notre façon de développer chez Exolnet : explorer avec curiosité, collaborer efficacement et livrer des solutions utiles qui simplifient le quotidien.
Besoin d’une équipe pour intégrer des fonctionnalités IA à votre application Laravel ? Contactez nos experts pour une consultation.