Agenten sind nur so gut wie der Kontext, den du ihnen gibst. Ein Knowledge Graph
liefert ein abfragbares Gedächtnis. Das hier ist das kleinste Setup, das ich
finden konnte, um einem Agenten 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. APOC ist Neo4js Erweiterungs-Werkzeugkasten - eine Sammlung zusätzlicher Tools, die nicht von Haus aus mit der Datenbank kommen, die aber fast jeder früher oder später braucht, also schalten wir sie von Anfang an ein.
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.
# Neo4j-Zugangsdaten (Format: username/password)NEO4J_AUTH=neo4j/changemeMCP-Server installieren
Keine globale Installation nötig. uvx führt den
Neo4j-MCP-Server direkt von
PyPI in einer flüchtigen Umgebung aus - der erste Lauf lädt ihn herunter, spätere
Läufe nutzen den Cache. Das Paket heißt neo4j-mcp-server, sein CLI ist
neo4j-mcp, also zeigst du uvx mit --from auf das Paket.
# einmaliger Check, dass er startetuvx --from neo4j-mcp-server neo4j-mcpMCP-Konfiguration
Das ist die Verdrahtung. Die .mcp.json weist Claude Code an, den
Neo4j-MCP-Server via uvx 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.
{ "mcpServers": { "neo4j": { "type": "stdio", "command": "uvx", "args": ["--from", "neo4j-mcp-server", "neo4j-mcp"], "env": { "NEO4J_URI": "bolt://localhost:7687", "NEO4J_USERNAME": "neo4j", "NEO4J_PASSWORD": "changeme", "NEO4J_DATABASE": "neo4j" } } }}Starten
docker compose up -dausführen, um Neo4j zu starten.- Die Browser-UI unter
http://localhost:7474öffnen. - Ein paar Nodes anlegen, um den Graph zu befüllen.
- 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.