/ Annuaire / Playground / Neo4j
● Officiel neo4j-contrib 🔑 Nécessite votre clé

Neo4j

par neo4j-contrib · neo4j-contrib/mcp-neo4j

Interroger et faire évoluer un graphe Neo4j en Cypher via Claude — introspection de schéma plus lecture/écriture Cypher avec garde-fous.

La collection MCP de Neo4j Labs couvre l'exécution Cypher (mcp-neo4j-cypher), la gestion de schéma et l'administration d'Aura. Le serveur Cypher par défaut expose la lecture et l'écriture Cypher contre n'importe quel endpoint Bolt. Associez avec un utilisateur Neo4j en lecture seule pour explorer la production en toute sécurité.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

neo4j.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": {
    "neo4j": {
      "command": "uvx",
      "args": [
        "mcp-neo4j-cypher"
      ]
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "neo4j": {
      "command": "uvx",
      "args": [
        "mcp-neo4j-cypher"
      ]
    }
  }
}

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": {
    "neo4j": {
      "command": "uvx",
      "args": [
        "mcp-neo4j-cypher"
      ]
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "neo4j": {
      "command": "uvx",
      "args": [
        "mcp-neo4j-cypher"
      ]
    }
  }
}

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

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "neo4j",
      "command": "uvx",
      "args": [
        "mcp-neo4j-cypher"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "neo4j": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-neo4j-cypher"
        ]
      }
    }
  }
}

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

claude mcp add neo4j -- uvx mcp-neo4j-cypher

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

Cas d'usage

Usages concrets : Neo4j

Explorer un schéma de graphe inconnu en 5 minutes

👤 Ingénieurs / analystes héritant une DB Neo4j ⏱ ~15 min beginner

Quand l'utiliser : On vous a remis une DB graphe sans docs. Vous avez besoin d'un modèle mental avant de pouvoir écrire des requêtes utiles.

Prérequis
  • URL Neo4j Bolt + utilisateur/mot de passeNEO4J_URI=bolt://host:7687, NEO4J_USERNAME, NEO4J_PASSWORD
  • Utilisateur en lecture seule recommandé pour l'explorationCREATE USER claude SET PASSWORD '...' SET ROLES reader
Déroulement
  1. Obtenir un aperçu du schéma
    Appelez get_neo4j_schema. Résumez les labels de nœud, les types de relations et les motifs (label)-[rel]->(label) les plus courants.✓ Copié
    → Résumé du schéma avec triples d'exemple
  2. Échantillonner des nœuds représentatifs
    Pour les 3 labels les plus courants, MATCH (n:Label) RETURN n LIMIT 3 chacun. Décrivez ce que chaque label semble représenter.✓ Copié
    → Descriptions sémantiques des labels
  3. Dessiner le modèle ER probable
    En fonction du schéma + des échantillons, décrivez en prose l'histoire 'entité' de ce graphe. Quel est l'objet principal, qu'est-ce qui s'y connecte, qu'est-ce qui est périphérique ?✓ Copié
    → Description claire du modèle de domaine

Résultat : Un modèle de domaine d'une page que vous pouvez valider avec les auteurs originaux.

Pièges
  • L'échantillonnage de petits graphes donne des motifs trompeurs — Aussi MATCH (n)-[r]->() RETURN type(r), count(*) pour voir quels rels dominent
Combiner avec : filesystem

Écrire des requêtes graphe pour détecter des réseaux de fraude

👤 Analystes des risques / fraude ⏱ ~40 min advanced

Quand l'utiliser : Vous soupçonnez des réseaux de fraude à appareil partagé ou adresse partagée entre comptes.

Prérequis
  • Graphe avec nœuds User, Device, Address, Payment et relations :USED, :LIVES_AT, :PAID — Forme typique de graphe fraude
Déroulement
  1. Trouver des appareils partagés
    Trouvez les appareils utilisés par 3+ utilisateurs différents au cours des 30 derniers jours. Retournez device_id + liste de user_ids + ts de dernière utilisation par paire.✓ Copié
    → Candidats de réseaux
  2. Évaluer par taille de composante connectée
    En utilisant GDS ou pur Cypher, calculez les composantes connectées sur User-(:USED)-Device-(:USED)-User. Retournez les top 10 composantes par taille.✓ Copié
    → Clusters suspects
  3. Produire une liste actionnable
    Pour chaque cluster supérieur, listez les utilisateurs distincts, le volume de transactions total et l'activité la plus ancienne/la plus récente. Marquez les clusters > $10k pour examen haute priorité.✓ Copié
    → Entrées de file d'attente d'analyste

Résultat : Une file d'attente d'examen fraude priorisée avec le Cypher exact préservé.

Pièges
  • Les traversées naïves explosent sur les hubs (appareil wifi public partagé avec 10k utilisateurs) — Plafonnez la profondeur et filtrez les nœuds hub par degré avant traversal
Combiner avec : postgres

Prototyper une requête de recommandation de contenu

👤 Ingénieurs produit construisant 'utilisateurs qui ont aussi aimé' ⏱ ~30 min intermediate

Quand l'utiliser : Vous avez User-LIKED->Item et voulez recommander des articles d'utilisateurs similaires.

Déroulement
  1. Choisir un utilisateur et trouver des voisins
    Pour l'utilisateur <id>, trouvez 20 utilisateurs qui partagent le plus d'articles LIKED. Retournez user_id et nombre de chevauchements.✓ Copié
    → Utilisateurs similaires classés
  2. Recommander des articles que ces utilisateurs ont aimés
    Pour ces top 20 utilisateurs similaires, listez les articles qu'ils ont aimés que <id> n'a PAS aimés. Classez par nombre d'utilisateurs similaires qui l'ont aimé.✓ Copié
    → Recommandations Top-N
  3. Le transformer en requête réutilisable
    Paramétriser en tant que Cypher appelable avec $user_id ; ajouter les indexes nécessaires pour la vitesse.✓ Copié
    → Requête prête pour la production + instructions CREATE INDEX

Résultat : Une requête de filtrage collaboratif fonctionnelle, assez rapide pour servir en ligne.

Pièges
  • Oublier un index sur :User(id) rend les requêtes de démarrage linéaires — CREATE INDEX FOR (u:User) ON (u.id) et EXPLAIN pour confirmer qu'il est utilisé

Charger des données relationnelles dans Neo4j à partir d'une table de staging

👤 Ingénieurs de données passant de SQL à graphe ⏱ ~40 min advanced

Quand l'utiliser : Vous avez utilisateurs + follows dans Postgres et voulez une représentation graphe.

Prérequis
  • Utilisateur Neo4j inscriptible — Rôle avec CREATE sur la base de données cible
Déroulement
  1. Planifier le mappage nœud/arête
    Étant donné les tables users(id, name) et follows(from_id, to_id), proposez le modèle Neo4j. Label(s) ? Direction de la relation ?✓ Copié
    → (:User {id,name})-[:FOLLOWS]->(:User)
  2. Créer d'abord des contraintes
    Générez CREATE CONSTRAINT FOR (u:User) REQUIRE u.id IS UNIQUE. Exécutez-le.✓ Copié
    → Contrainte créée
  3. Chargement en masse avec MERGE
    À partir des lignes d'utilisateurs fournies, exécutez UNWIND $rows AS r MERGE (:User {id:r.id}) ... puis follows avec MERGE (a)-[:FOLLOWS]->(b). Lots de 10k à la fois.✓ Copié
    → Toutes les lignes chargées de manière idempotente

Résultat : Un ETL réexécutable qui charge vos données relationnelles dans une forme graphe.

Pièges
  • CREATE au lieu de MERGE crée des nœuds dupliqués à la réexécution — Toujours MERGE pour les upserts, et exigez une contrainte d'unicité avant MERGE en masse pour la vitesse
Combiner avec : postgres

Répondre à des questions en langage naturel sur un graphe de connaissances

👤 Équipes internes avec une KG de domaine ⏱ ~25 min intermediate

Quand l'utiliser : Vous avez construit une petite ontologie (produits, fonctionnalités, clients) et voulez que Claude réponde 'quels clients utilisent la fonctionnalité X' sans apprendre Cypher.

Déroulement
  1. Ancrer Claude dans le schéma
    Voici le schéma [collez la sortie get_neo4j_schema]. À partir de maintenant, traduisez mes questions en Cypher avant de les exécuter.✓ Copié
    → Claude reprend la compréhension du schéma
  2. Poser une question, obtenir Cypher + réponse
    Quels clients utilisent la fonctionnalité 'export-csv' au cours du dernier trimestre ?✓ Copié
    → Cypher affiché + tableau de résultats
  3. Affiner quand Cypher est faux
    Ce Cypher a manqué la relation :USED à Session. Corrigez-le pour passer par les sessions.✓ Copié
    → Cypher corrigé réexécuté

Résultat : Une interface légère NL-vers-Cypher pour les collègues non techniques.

Pièges
  • Claude invente des labels qui n'existent pas — Épingler : 'utiliser uniquement les labels/rels du schéma fourni ; sinon dire inconnu'

Combinaisons

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

neo4j + postgres

Synchroniser les données relationnelles vers une représentation graphe

Tirez utilisateurs + follows de Postgres, puis MERGE dans Neo4j en tant que (:User)-[:FOLLOWS]->(:User).✓ Copié
neo4j + qdrant

RAG amélioré par graphe : utilisez Qdrant pour le rappel sémantique, Neo4j pour les relations précises

Qdrant trouve les docs similaires à la question ; puis parcourez Neo4j à partir des entités appariées pour extraire les faits structurés pour la réponse.✓ Copié
neo4j + filesystem

Exporter un rapport généré par Cypher en tant que CSV/Markdown

Exécutez le Cypher de réseau fraude, exportez les top 50 clusters en tant que /reports/fraud-<date>.csv.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
get_neo4j_schema Toujours d'abord dans une nouvelle session free
read_neo4j_cypher query: str, params?: object N'importe quel MATCH / RETURN — lecture seule free
write_neo4j_cypher query: str, params?: object CREATE/MERGE/SET/DELETE — mutations free

Coût et limites

Coût d'exécution

Quota d'API
Limité par votre instance Neo4j. Aura Free : 200k nœuds/400k relations.
Tokens par appel
Schéma : ~500 tokens. Résultats de requête : dépend des lignes+propriétés.
Monétaire
Gratuit pour Community / auto-hébergé. Le niveau Aura Free existe. Aura payant à partir de ~$65/mois.
Astuce
Toujours EXPLAIN d'abord sur les grands graphes ; un index manquant sur un label de démarrage transforme une requête de 5ms en un scan de 5 min.

Sécurité

Permissions, secrets, portée

Portées minimales : rôle reader pour l'exploration en lecture seule
Stockage des identifiants : NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD en env
Sortie de données : Connexion Bolt directe à votre Neo4j (auto-hébergé ou Aura)
Ne jamais accorder : rôle admin accès PUBLIC en écriture

Dépannage

Erreurs courantes et correctifs

ServiceUnavailable: Connexion refusée

Neo4j ne s'exécute pas ou port Bolt incorrect (par défaut 7687). Vérifiez avec cypher-shell -a bolt://host:7687.

Vérifier : nc -zv host 7687
Neo.ClientError.Security.Unauthorized

Nom d'utilisateur/mot de passe incorrect. Réinitialisez via CALL dbms.security.changePassword('new') à partir d'une session admin.

Neo.ClientError.Statement.SyntaxError

Le Cypher de Claude a une faute de frappe — collez l'erreur exacte, demandez une requête corrigée.

Writes fail: Write operation not allowed in read-only mode

Vous êtes connecté avec un rôle reader ; basculez vers un utilisateur avec WRITE ou utilisez une connexion writer séparée.

Alternatives

Neo4j vs autres

AlternativeQuand l'utiliserCompromis
Memgraph MCPVous avez besoin d'analyses graphe en continu ; Memgraph est compatible CypherÉcosystème plus petit, moins d'options hébergées
ArangoDB MCPVous voulez multi-modèle (graphe + document + KV)AQL au lieu de Cypher ; courbe d'apprentissage
Postgres + Apache AGEVous êtes principalement relationnel avec certains besoins graphePerformances graphe pires que Neo4j natif sur les grands traversals

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills