Claude kann hervorragend schlussfolgern, aber es vergisst. Ein Knowledge Graph gibt ihm ein abfragbares Gedächtnis: Entitäten, Beziehungen, das Bindegewebe zwischen den Fakten. Das hier ist das kleinste Setup, das ich finden konnte, um Claude einen echten Neo4j-Graph über das Model Context Protocol (MCP) zu erschließen - ein Docker-Compose-Service, eine .env für die Zugangsdaten und eine .mcp.json, die den Neo4j-MCP-Server in Claude Code einbindet.

Docker Compose

Ein Container, zwei Ports. Über die Browser-UI auf 7474 wirfst du einen Blick auf den Graph; Bolt auf 7687 ist die Leitung, über die Claude tatsächlich spricht. Persistente Volumes sorgen dafür, dass der Graph einen Neustart übersteht, und APOC bringt die Prozeduren mit, die du früher oder später brauchst.

docker-compose.yaml
services:
neo4j:
image: neo4j:5
ports:
- "7474:7474" # Browser UI
- "7687:7687" # Bolt protocol
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
environment:
- NEO4J_AUTH=${NEO4J_AUTH:-neo4j/changeme}
- NEO4J_server_memory_heap_initial__size=512m
- NEO4J_server_memory_heap_max__size=1G
- NEO4J_server_memory_pagecache_size=512m
- NEO4J_PLUGINS=["apoc"]
restart: unless-stopped
volumes:
neo4j_data:
neo4j_logs:

Environment-Datei

Neo4j erwartet die Zugangsdaten als einen einzigen String im Format username/password, nicht als zwei Felder. Leicht zu übersehen. Halte sie in .env und aus git heraus.

Terminal window
# Neo4j-Zugangsdaten (Format: username/password)
NEO4J_AUTH=neo4j/changeme

MCP-Konfiguration

Das ist die Verdrahtung. Die .mcp.json weist Claude Code an, den Neo4j-MCP-Server zu starten, der Claudes Anfragen in Cypher übersetzt und über Bolt gegen den Graph ausführt. Ändere changeme passend zu deiner .env, sonst kommt keine Verbindung zustande.

.mcp.json
{
"mcpServers": {
"neo4j": {
"type": "stdio",
"command": "neo4j-mcp",
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "changeme",
"NEO4J_DATABASE": "neo4j"
}
}
}
}

Starten

  1. docker compose up -d ausführen, um Neo4j zu starten.
  2. Die Browser-UI unter http://localhost:7474 öffnen.
  3. Ein paar Nodes anlegen, um den Graph zu befüllen.
  4. Claude Code im Projektverzeichnis starten und den Graph via MCP abfragen.

Das ist alles. Kein Cloud-Account, keine API-Keys zum Rotieren, keine Schema-Migrationen. Nur eine Graphdatenbank auf localhost, durch die Claude mit Cypher navigieren kann - frag es, wie zwei Nodes zusammenhängen, und sieh zu, wie es die Abfrage selbst schreibt.