Le Model Context Protocol (MCP)
Découvrez le Model Context Protocol (MCP), le standard pour connecter les LLM à vos applications, dont Symfony et PHP.
Publié le
Temps de lecture 5 min
Qu’est-ce que le Model Context Protocol ?
Si vous avez déjà essayé de connecter une IA à vos données, vous connaissez la douleur : il faut coder une intégration spécifique pour chaque modèle (OpenAI, Claude, Mistral...), gérer des API différentes et réécrire le code à chaque changement.
Le Model Context Protocol (MCP) est un standard open-source qui met fin à ce chaos. Imaginez-le comme l’USB-C de l’IA : une interface universelle standardisée. L'idée est simple : au lieu de connecter manuellement chaque LLM à chaque outil (un problème "$M \times N$"), le MCP fournit un protocole unique. Vous exposez vos données une seule fois via un serveur MCP, et n'importe quelle IA compatible peut venir s'y brancher instantanément pour lire des fichiers, interroger une base de données ou lancer des scripts.
C’est la fin des "silos" d’information : votre assistant IA ne se limite plus à ses données d'entraînement, il accède en temps réel à votre environnement logiciel.
Pourquoi est-ce un tournant pour le backend ?
Pour nous, développeurs backend, les bénéfices sont immédiats :
- Fin du "Glue Code" : vous n'avez plus besoin d'écrire des wrappers API spécifiques pour chaque fournisseur d'IA. Vous codez un serveur MCP standard, et il fonctionne partout.
- Agents Autonomes : le MCP ne sert pas juste à "lire" de la donnée. Il transforme les LLM en agents capables d'agir. L'IA peut exécuter des outils que vous lui fournissez (ex: "Créer un ticket Jira", "Vérifier le stock").
- Sécurité et Contrôle : c’est l'architecture qui gère l'accès. Les clés API et les logiques sensibles restent côté serveur (chez vous). L'IA ne voit que ce que vous décidez d'exposer via le protocole.⠀
Architecture : comment ça marche sous le capot ?
Pas de magie, c'est une architecture Client-Serveur robuste.
- L’Hôte : c’est l'application qui contient l'IA (ex: L'application Claude Desktop, un IDE).
- Le Client MCP : le connecteur qui initie la demande.
- Le Serveur MCP : c’est votre application Symfony. Elle expose des capacités via le protocole (souvent du JSON-RPC transporté sur stdio en local ou SSE en HTTP).
⠀Le protocole définit trois primitives principales :
- Ressources : des données passives (logs, fichiers, documentation) que l'IA peut lire comme du contexte.
- Prompts : des modèles de requêtes pré-enregistrés pour guider l'utilisateur.
- Outils (Tools) : des fonctions exécutables que l'IA peut appeler (c'est ici que se trouve la vraie puissance pour vos apps Symfony).
Intégration Symfony : votre code devient une API pour IA
C'est là que cela devient concret. Avec des bibliothèques comme symfony/mcp-bundle, vous n'avez pas besoin d'apprendre le protocole JSON-RPC par cœur. Vous pouvez exposer vos services Symfony existants comme des outils MCP via de simples attributs PHP.
Exemple : Permettre à l'IA de consulter le statut d'une commande.
PHP
namespace App\Mcp;
use Symfony\Component\Mcp\Attribute\AsMcpTool;
use App\Repository\OrderRepository;
class OrderTools
{
public function __construct(private OrderRepository $repo) {}
#[AsMcpTool(
name: "get_order_status",
description: "Récupère le statut et le détail d'une commande via son ID (ex: CMD-123)."
)]
public function getStatus(string $orderId): array
{
$order = $this->repo->find($orderId);
if (!$order) {
throw new \Exception("Commande introuvable");
}
// L'IA recevra ce tableau structuré
return [
'id' => $order->getId(),
'status' => $order->getStatus(),
'shipped_at' => $order->getShippedAt()?->format('Y-m-d'),
'items_count' => count($order->getItems())
];
}
}
Dès que ce code tourne, l'agent IA "voit" cet outil. Si vous lui demandez "Où en est la commande CMD-999 ?", l'IA sait qu'elle doit appeler get_order_status, récupère le JSON, et vous répond en langage naturel. Le bundle Symfony gère toute la couche protocolaire, vous vous concentrez sur la logique métier.
Les clés pour une implémentation réussie
Voici quelques bonnes pratiques d'architecture pour tirer le meilleur parti du MCP :
- Soignez la "Window Context" : L'IA a une mémoire limitée. Si vous exposez trop d'outils avec des descriptions à rallonge, vous saturez son attention. Conseil : Exposez des outils granulaires et précis.
- Des descriptions pour l'IA, pas pour les humains : Dans l'attribut
#[AsMcpTool], la description est le "mode d'emploi" lu par le modèle. Soyez explicite sur quand et comment utiliser l'outil. - Performance et Latence : Chaque appel d'outil est un aller-retour. Pour des tâches lourdes, prévoyez des outils qui retournent des résumés plutôt que des dumps complets de base de données.
- Human in the loop : Pour les actions critiques (suppression de données, envois d'emails), prévoyez toujours une étape de confirmation côté client MCP.
Le mot de la fin
Le MCP est plus qu'une simple techno à la mode : c'est une brique d'infrastructure qui manquait pour connecter le monde probabiliste (IA) au monde déterministe (nos applications Symfony). L'écosystème se construit maintenant. En tant que développeur Symfony, nous avons déjà toute la logique métier ; le MCP est simplement la porte d'entrée qui permet à l'IA de venir l'utiliser pour vous assister. À vous de jouer !