Aller au contenu

Comment configurer un serveur MCP dans VSCode pour optimiser le développement Spring Boot avec PostgreSQL ?

Connecter PostgreSQL à VSCode grâce à un serveur MCP, c’est possible ! Fini les allers-retours entre outils pour exécuter vos requêtes SQL ou générer vos entités JPA. Dans cet article, je vous montre comment transformer votre workflow Spring Boot avec une configuration simple et efficace.

Logo de postgresql avec des appels vers le MCP
Comment avoir un agent capable d'adapter le code en utilisant la vrai BDD ?

En tant que développeur travaillant sur des projets Spring Boot complexes, j’ai souvent été confronté à la nécessité de naviguer rapidement entre la base de données et le code. Entre les requêtes SQL pour explorer les données, la création d’entités JPA et la génération de DTOs, le processus de développement pouvait devenir fastidieux et répétitif.

C’est pourquoi j’ai décidé de configurer un serveur MCP (Model Context Protocol) permettant une communication directe avec ma base de données PostgreSQL, transformant ainsi mon workflow de développement.

Le travail qui suit a été réalisé avec les GitHub Agents sous VSCode. Il vous faudra également avoir Node.js installé au préalable, car le serveur MCP s’exécute dessus.


Piqûre de rappel : Qu'est-ce que MCP ?

Le Model Context Protocol (MCP) est un protocole qui permet aux assistants IA d’interagir avec des services externes de manière sécurisée et standardisée. Dans notre cas, il nous permet de créer une interface directe entre notre environnement de développement et notre base de données PostgreSQL.

Comment ajouter ce serveur et le configurer

Sur VSCode + Copilot , il suffit de passer en mode Agent et de cliquer sur la clé à gauche, où l’on ajoute un serveur.

Où l'on ajout un serveur
Où l'on ajout un serveur

Une interface s’ouvre alors, vous proposant d’ajouter plus d’outils. Si c’est la première fois que vous accédez à cette section, vous verrez directement le texte “+ Add More Tools…” affiché au centre de l’écran.

Le fichier de configuration mcp.json s’ouvre ensuite (sa localisation dépend de votre installation). Vous pouvez alors y placer la configuration suivante, en remplaçant bien sûr les données de connexion par les vôtres. Ici, nous utilisons le serveur mcp-postgres-server, mais si vous en connaissez d’autres, n’hésitez pas à les intégrer.

{
"servers": {
       "postgres": {
           "command": "npx",
           "args": ["mcp-postgres-server"],
           "env": {
               "POSTGRES_HOST": "localhost",
               "POSTGRES_PORT": "5433",
               "POSTGRES_USER": "user",
               "POSTGRES_PASSWORD": "password",
               "POSTGRES_DB": "defaultdb",
               "POSTGRES_SSL": "false"
           }
       }
   }
}

Bravo ! L’outil est prêt à être utilisé.
Vous devriez voir apparaître une petite clé avec les six outils ajoutés, confirmant la bonne installation.

Indications des outils ajoutés
Indications des outils ajoutés
Liste des outils suite a l'ajout du serveur mcp postgres
Liste des outils suite a l'ajout du serveur mcp postgres

Fonctionnalités du serveur MCP

Tout d’abord, demandez à l’agent de se connecter à la base avec une phrase simple, par exemple : « Connecte-toi à la base ». Vous pouvez vérifier la bonne connexion en demandant des informations sur une table : « Donne-moi plus d’informations sur la table mySchema.Employee ».

Tester le serveur

Pour le test, prenons un exercice simple : créer une table dans la BDD, puis générer automatiquement tout le nécessaire côté back-end (entité, DTO, convertisseur, repository).

Voici le prompt utilisé :

Désormais on garde en tête que ça sera mySchema le schema qu'on utilisera. Créé une table testing, avec 3 colonnes :
un id auto-genere type uuid
info_une type text
info_deux type nombre

La table est alors créée et vous pouvez vérifier sa présence.

Image de la table générée
Image de la table générée

Ensuite, demandons à l’agent de générer les éléments back nécessaires :

Sur mon projet springboot, j'ai besoin maintenant que tu créé l'entité, le dto, le repository et le converteur pour cette table. Tu peux t'inspirer de ce qui est déjà fait

Et voila le travail !

Image du converteur
Image du converteur
Image du DTO
Image du DTO
Image de l'entité
Image de l'entité
Image du repository
Image du repository

Avantages observés

Gain de temps considérable

Avant MCP :

  • ⏱️ 30–45 minutes pour créer une entité complète
  • 🔍 Allers-retours constants entre IDE et base de données
  • 📝 Création manuelle de chaque classe, avec risques d’erreurs

Après MCP :

  • ⚡ 2–3 minutes pour générer toute la couche de données
  • 🎯 Code généré automatiquement selon les conventions du projet
  • ✅ Cohérence garantie avec l’architecture existante

Réduction des erreurs

  • Typos éliminées : les noms de colonnes sont extraits directement de la base
  • Types cohérents : mapping automatique PostgreSQL ↔ Java
  • Annotations correctes : respect des conventions JPA et Lombok

Exploration facilitée

Il est possible d’écrire une phrase simple et d’obtenir la requête SQL correspondante pour une opération complexe.

Exemple :

Donne moi la requête me permettant de voir le nombre de personnes qui sont dans la table mySchema.employee avec une date de fin de contrat > maintenant , mais qui ne se trouve pas dans la table mySchema.worker

L’agent remarque immédiatement le manque de lien direct entre les deux tables, analyse les descriptions disponibles et finit par produire la requête correspondante :

SELECT COUNT(*) as nombre_personnes
FROM mySchema.employee e
WHERE e.contract_end_date > CURRENT_DATE
 AND NOT EXISTS (
   SELECT 1
   FROM mySchema.worker_employee we
   WHERE we.ldap = e.ldap
 )

On peut même lui demander d’optimiser la requête : il proposera alors d’autres jointures, la création d’index, etc.

Recommandations pour l’implémentation

Sécurité

  • Utiliser des connexions chiffrées
  • Limiter les permissions de l’utilisateur de base
  • Mettre en place une authentification robuste

Performance

  • Utiliser des pools de connexions
  • Mettre en cache les métadonnées fréquemment utilisées
  • Définir des timeouts appropriés

Conventions de code

  • Définir des templates pour garantir la cohérence
  • Ou bien prévenir l’agent en amont afin qu’il étudie vos structures actuelles et s’y adapte

Conclusion

La mise en place d'un serveur MCP pour la communication avec PostgreSQL a véritablement révolutionné mon workflow de développement. Cette approche permet de :

  • accélérer significativement le développement de nouvelles fonctionnalités,
  • garantir la cohérence du code avec les conventions du projet,
  • réduire les erreurs liées à la saisie manuelle,
  • faciliter l’exploration et le debugging de la base de données.

L’investissement initial dans la configuration du serveur MCP est rapidement amorti par les gains de productivité quotidiens. Pour des projets avec de nombreuses tables et entités complexes, cette approche devient tout simplement indispensable.


Pour aller plus loin...

Si cela vous inspire et que vous souhaitez créer vos propres MCP, voici un petit template qui pourrait vous aider.

Voici les fichiers :

Après avoir placé les fichiers (index.js, package.json, etc.) dans un dossier, ouvrez le terminal et lancez un petit npm install pour télécharger les dépendances nécessaires. Vous pourrez ensuite déclarer ce serveur dans votre mcp.json et le démarrer.

Où placer le code du serveur
Où placer le code du serveur

Vous aurez alors votre serveur MCP opérationnel, prêt à être utilisé en toute tranquillité.

Exemple d'utilisation du MCP
Exemple d'utilisation du MCP

Dernier