Zum Inhalt springen

Neo4j Web Bridge

Lightweight Proxy für Browser-Zugriff auf selbst-gehostete Neo4j Datenbanken. Löst das TLS-Problem bei Railway, Render, Fly.io und anderen Plattformen.

Zero TLS Config

Verbinden ohne Zertifikate

Überall nutzbar

Railway, Render, Fly.io, Docker

REST API

Für LLMs und Automatisierung

Open Source

MIT Lizenz, selbst hosten

Browser erzwingen HTTPS. Neo4j Bolt ist standardmäßig unverschlüsselt (bolt://). Cloud-Plattformen terminieren TLS nur für HTTP, nicht für TCP-Ports wie Bolt 7687.

Ergebnis: Neo4j Browser kann sich nicht verbinden.

Browser (HTTPS) → Neo4j Web Bridge → Neo4j (bolt://)
↑ Handles TLS

Die Bridge nimmt HTTPS-Requests entgegen und kommuniziert intern via Bolt mit Neo4j.

Sicher wenn:

  • Bridge und Neo4j im gleichen Railway-Projekt
  • Traffic bleibt im privaten Netzwerk

Unsicher wenn:

  • Bridge und Neo4j auf verschiedenen Plattformen
  • bolt:// Traffic geht über das öffentliche Internet

Empfehlung: Immer zusammen mit Neo4j Railway im gleichen Projekt deployen.

  1. Neo4j Railway deployen
  2. Im gleichen Projekt: “New Service” → GitHub → MacStenk/neo4j-web-bridge
  3. Via Internal URL verbinden: bolt://neo4j.railway.internal:7687

Für API-Nutzung und Gateway-Integration kann die Bridge automatisch beim Start verbinden.

Terminal-Fenster
NEO4J_URI=bolt://yamanote.proxy.rlwy.net:36570
NEO4J_USER=neo4j
NEO4J_PASSWORD=your-password
NEO4J_DATABASE=neo4j # optional, default: neo4j
╔═══════════════════════════════════════════╗
║ Neo4j Web Bridge v1.0.0 ║
╠═══════════════════════════════════════════╣
║ Server: http://localhost:3000 ║
║ API: http://localhost:3000/api ║
╚═══════════════════════════════════════════╝
Auto-connect enabled. Connecting to Neo4j...
✅ Auto-connected to Neo4j: bolt://yamanote.proxy.rlwy.net:36570

Die Bridge ist sofort einsatzbereit - kein manuelles Verbinden nötig.

Die Bridge funktioniert als Backend für den MCP Gateway - damit kannst du via Chat (Gemini AI) mit deiner Neo4j Datenbank sprechen.

  1. Neo4j Web Bridge mit Auto-Connect deployen
  2. Im MCP Gateway konfigurieren:
{
"name": "neo4j",
"type": "neo4j",
"url": "https://your-neo4j-bridge.railway.app"
}

Im MCP Gateway Chat:

“Zeig mir alle Nodes in der Datenbank”

Der Gateway erkennt, dass er das neo4j_query Tool braucht, ruft die Bridge auf, und gibt dir die Ergebnisse zurück.

Die Bridge bietet eine REST API - ideal für LLM-Integration und Automatisierung.

GET /api/health
{
"status": "ok",
"version": "1.0.0",
"connected": true,
"autoConnect": true
}

Nur nötig wenn kein Auto-Connect konfiguriert ist.

POST /api/connect
Content-Type: application/json
{
"uri": "bolt://neo4j.railway.internal:7687",
"username": "neo4j",
"password": "xxx",
"database": "neo4j"
}
POST /api/query
Content-Type: application/json
{
"cypher": "MATCH (n) RETURN n LIMIT 10",
"params": {}
}

Response:

{
"success": true,
"records": [...],
"summary": {
"resultConsumedAfter": 12
}
}
POST /api/disconnect

Die API ermöglicht direkten Neo4j-Zugriff für LLMs:

import requests
# Bei Auto-Connect: Direkt Query ausführen
response = requests.post("https://bridge.railway.app/api/query", json={
"cypher": "MATCH (n:Person) RETURN n.name LIMIT 5"
})
print(response.json()["records"])

Anwendungsfälle:

  • RAG mit Knowledge Graph
  • Agentische Workflows mit Kontext-Speicherung
  • Graph-basierte Reasoning
  • MCP Gateway als Chat-Interface
VariableDefaultBeschreibung
PORT3000Server Port
NEO4J_URINeo4j URL für Auto-Connect
NEO4J_USERUsername für Auto-Connect
NEO4J_PASSWORDPasswort für Auto-Connect
NEO4J_DATABASEneo4jDatabase Name
CORS_ORIGIN*Erlaubte Origins
┌─────────────────────────────────────────────────┐
│ Railway Private Network │
│ │
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ Neo4j Web │ bolt │ Neo4j │ │
│ │ Bridge │────────▶│ Database │ │
│ │ (Node.js) │ │ (neo4j-railway)│ │
│ └─────────────┘ └─────────────────┘ │
│ ▲ │
└─────────│────────────────────────────────────────┘
│ HTTPS (verschlüsselt)
┌─────┴─────┐
│ Browser │
│ LLM/API │
│ Gateway │
└───────────┘

Der kritische Punkt: Die bolt:// Verbindung ist unverschlüsselt, aber sie verlässt nie Railway’s privates Netzwerk.