promptgarten 🌱

Add-ons & intégrations · MCP

Serena

26.767

Une boîte à outils MCP qui donne à ton agent des outils de code sémantiques dignes d’un IDE — recherche, édition et refactorisation précises au niveau des symboles via des serveurs de langage (LSP) plutôt qu’un grep de texte à l’aveugle.

Serena se greffe à ton agent comme serveur MCP et expose des outils qui ressemblent davantage à un IDE qu’à une recherche de texte : trouver des symboles (find_symbol), résoudre des références (find_referencing_symbols), remplacer le corps d’un symbole (replace_symbol_body) et plus encore. Elle s’appuie sur des serveurs de langage (LSP) — la même technologie que VS Code pour « aller à la définition » — de sorte que l’agent travaille sur la structure relationnelle du code au lieu de grep à l’aveugle. Serena est agnostique au modèle et au client, tourne en mode stdio ou HTTP et est open source. Les harnesses agentiques disposent de profils de contexte dédiés (p. ex. --context claude-code).

🔧 SETUP

  1. Installer (via uv) : `uv tool install -p 3.13 serena-agent`
  2. Enregistrer dans Claude Code : `claude mcp add serena -- serena start-mcp-server --context claude-code --project "$(pwd)"`
  3. Possible aussi sans installation fixe via uvx ; en variante, lance le mode HTTP et donne l’URL au client
  4. Les bons serveurs de langage sont utilisés automatiquement selon le langage du projet (LSP)

QUAND L’UTILISER ?

Naviguer et refactoriser de grosses bases de code

« Trouve tous les appelants de X et renomme-les » s’exécute au niveau du symbole via le serveur de langage plutôt que grep.

Économiser des tokens sur les recherches de contexte

Serena lit des symboles précis à la demande au lieu de charger des fichiers entiers dans le contexte.

QUAND ÉVITER ?

Projets minuscules / un seul fichier

La mise en place LSP et MCP ne se rentabilise guère sur de très petits projets.

Mieux: Utilise la recherche grep/glob intégrée de l’agent.

Un langage sans bon serveur de langage

La force de Serena dépend du serveur de langage de chaque langage — elle peut être plus faible pour les langages exotiques.

Mieux: Tiens-t’en aux langages bien pris en charge (Python, TypeScript, Go, Rust, Java …).

SOURCES