/ Annuaire / Playground / contextplus
● Communauté ForLoopCodes ⚡ Instantané

contextplus

par ForLoopCodes · ForLoopCodes/contextplus

Donnez à votre agent de codage une carte sémantique persistante du repo — AST + embeddings + memory graph + shadow undo — pour qu'il arrête de relire l'ensemble du codebase.

Context+ (ForLoopCodes/contextplus) est un MCP TypeScript exposant 17 outils pour la compréhension du repo : arbres AST tree-sitter, file skeletons, semantic identifier search, blast-radius analysis, memory graph pour les projets de longue durée et shadow restore points pour les édits sécurisés. Fonctionne avec Ollama ou cloud embeddings.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

contextplus.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "contextplus",
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "contextplus": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "contextplus"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add contextplus -- npx -y contextplus

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : contextplus

Comment rendre un nouvel agent productif dans un grand repo rapidement

👤 Tech leads utilisant Cursor/Claude Code sur un monorepo ⏱ ~20 min intermediate

Quand l'utiliser : L'agent gaspille 30% du contexte en lisant et relisant les fichiers.

Prérequis
  • Node + bun ou npm — brew install bun ou utiliser npm
  • Un fournisseur d'embeddings (Ollama local, OpenAI, Gemini ou Groq) — ollama pull nomic-embed-text pour hors ligne
Déroulement
  1. Construire l'arbre de contexte
    Exécutez get_context_tree à la racine du repo. Résumez les couches de haut niveau.✓ Copié
    → Arbre AST avec en-têtes de fichier
  2. Lectures skeleton-only
    Utilisez get_file_skeleton sur src/auth/ pour voir uniquement les signatures — ne lisez pas les corps pour l'instant.✓ Copié
    → Signatures de fonction sans corps
  3. Poser une question sémantique
    semantic_identifier_search: 'où la vérification JWT est-elle implémentée et appelée?'✓ Copié
    → Implémentations classées + call sites

Résultat : L'agent opère avec un modèle mental du repo en utilisant ~5x moins de contexte.

Pièges
  • L'indexation au premier lancement est lente — Exécutez l'analyse initiale une fois ; les mises à jour incrémentielles sont rapides
  • Incompatibilité du modèle d'embeddings entre l'index et la requête — Restez avec un modèle d'embedding ; réindexez si vous le changez
Combiner avec : filesystem · github

Comment refactoriser avec shadow restore points

👤 Devs inquiets de laisser les agents éditer du code ⏱ ~15 min intermediate

Quand l'utiliser : Vous voulez les édits de l'agent mais aussi un undo en un clic qui ne salit pas git.

Déroulement
  1. Capturer un restore point
    Créez un restore point nommé 'before-auth-refactor'.✓ Copié
    → Point id retourné
  2. Laisser l'agent éditer
    propose_commit: refactoriser la vérification JWT pour utiliser le nouvel assistant de rotation de clés.✓ Copié
    → Fichiers édités + validation réussie
  3. Restaurer en arrière si erreur
    undo_change revenir à 'before-auth-refactor'.✓ Copié
    → Fichiers rétablis, historique git propre

Résultat : Refactors sans crainte sans polluer l'historique git.

Pièges
  • Les restore points se trouvent dans .contextplus/ — ne les enregistrez pas — Ajoutez .contextplus/ à .gitignore
Combiner avec : github

Comment évaluer le blast radius avant de supprimer une fonction

👤 Ingénieurs nettoyant du code mort ⏱ ~10 min intermediate

Quand l'utiliser : Vous voulez savoir exactement qui importe ou utilise un symbole avant de le supprimer.

Déroulement
  1. Demander le blast radius
    get_blast_radius pour la fonction 'legacyFormatPrice' dans src/pricing.ts.✓ Copié
    → Chaque fichier/ligne qui l'importe ou l'appelle
  2. Planifier la suppression
    Pour chaque call site, suggérez le remplacement. Tout site sans un swap propre, marquez comme risqué.✓ Copié
    → Checklist de migration

Résultat : Une PR de suppression sans surprises.

Pièges
  • Les imports dynamiques (require, string refs) ne sont pas détectés — Complétez avec une passe grep pour le nom de la fonction
Combiner avec : github

Comment persister les décisions entre les sessions avec la memory graph

👤 Tout utilisateur d'agent sur un projet de longue durée ⏱ ~15 min advanced

Quand l'utiliser : Vous continuez à réexpliquer les mêmes choix architecturaux à l'agent.

Déroulement
  1. Ensemencer la mémoire
    upsert_memory_node: 'Nous avons choisi Postgres plutôt que MongoDB en raison des invariants transactionnels dans le flux de facturation.'✓ Copié
    → Nœud créé avec embedding
  2. Créer des relations
    create_relation: lier cette décision aux fichiers src/billing/*.ts avec le type d'edge 'implements'.✓ Copié
    → Edge créé
  3. Récupérer la session suivante
    search_memory_graph: 'pourquoi utilisons-nous Postgres?'✓ Copié
    → Décision surfaces avec fichiers de support

Résultat : Mémoire de projet durable qui survit au chat.

Pièges
  • La memory graph devient obsolète — Exécutez prune_stale_links mensuellement
Combiner avec : memory-service

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

contextplus + github

Utiliser les résultats blast-radius pour remplir un tracking issue

Exécutez get_blast_radius sur LegacyAuth, puis créez un GitHub tracking issue avec chaque call site comme élément de liste de contrôle.✓ Copié
contextplus + memory-service

Persister les décisions à long terme entre les projets en utilisant mcp-memory-service comme magasin partagé

Chaque fois que Context+ capture une nouvelle décision architecturale, miroir-la dans mcp-memory-service.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
get_context_tree root: str, depth?: int Premier appel dans une nouvelle session de repo gratuit
get_file_skeleton path: str Aperçu de fichier économique gratuit
semantic_code_search query: str, k?: int Trouver du code par sa signification 1 embedding + 1 vector search
semantic_identifier_search query: str Localiser une fonction/classe 1 vector search
get_blast_radius symbol: str, file?: str Avant de supprimer/renommer gratuit
run_static_analysis path?: str Code inutilisé + erreurs de type gratuit
propose_commit files: Edit[] Appliquer les édits avec validation gratuit
list_restore_points Voir les rollbacks disponibles gratuit
undo_change restore_point_id: str Annuler une shadow edit gratuit
upsert_memory_node content: str, tags?: str[] Enregistrer un fait durable 1 embedding
search_memory_graph query: str, traversal?: int Se rappeler les décisions passées 1 vector search

Coût et limites

Coût d'exécution

Quota d'API
Dépend du fournisseur d'embeddings : Ollama gratuit, OpenAI ~$0.02/1M tokens
Tokens par appel
Lectures skeleton : 100-500 tokens. Recherches complètes : 500-2000
Monétaire
Gratuit (open source) + coûts d'embedding si vous utilisez des fournisseurs cloud
Astuce
Utilisez Ollama avec nomic-embed-text pour zéro coût marginal.

Sécurité

Permissions, secrets, portée

Portées minimales : Lecture/écriture du système de fichiers pour le repo indexé
Stockage des identifiants : Clés du fournisseur d'embeddings via env
Sortie de données : Les embeddings vont à votre fournisseur choisi (ou restent locaux avec Ollama)
Ne jamais accorder : Ne pas indexer les répertoires avec des secrets comme .env

Dépannage

Erreurs courantes et correctifs

L'indexation est extrêmement lente

Ajoutez les gros répertoires (node_modules, dist) à .contextplusignore ; utilisez Ollama localement.

La recherche sémantique retourne des résultats non pertinents

Votre requête est trop abstraite — incluez un symbole concret ou un indice de nom de fichier.

undo_change échoue avec 'point not found'

Les shadow points sont par défaut par session. Persistez entre les sessions via le drapeau de configuration.

Tree-sitter grammar manquante pour une langue

Vérifiez la liste des extensions prises en charge ; les fichiers de types non pris en charge sont ignorés mais indexés en tant que texte brut.

Alternatives

contextplus vs autres

AlternativeQuand l'utiliserCompromis
mcp-language-serverVous voulez la sémantique LSP (rename, references) plutôt que la recherche basée sur embeddingPas de memory graph, pas de shadow undo
codebase-memory-mcpVous préférez une vue knowledge-graph plutôt que des skeletons par fichierForme d'index différente ; 66 langues

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills