Personal Neo4j Memory Server

Personal Neo4j Memory Server

Provides AI assistants with persistent, graph-based memory using Neo4j, enabling semantic search and complex relationship tracking. It features specialized Cloudflare Access support for secure remote connections and isolated multi-database management for different projects.

Category
Visit Server

README

Personal Neo4j Memory Server - Enhanced Cloudflare Access Support

A Model Context Protocol (MCP) server that provides AI assistants with persistent, intelligent memory capabilities using Neo4j's graph database with enhanced Cloudflare Access tunneling support.

🎯 What it does

This server enables AI assistants to:

  • Remember - Store memories as interconnected knowledge nodes with observations and metadata
  • Search - Find relevant memories using semantic vector search, exact matching, and graph traversal
  • Connect - Create meaningful relationships between memories with batch operations and cross-references
  • Organize - Separate memories by project using different databases
  • Evolve - Track how knowledge develops over time with temporal metadata and relationship networks
  • 🚀 NEW: Reliable Remote Access - Connect through Cloudflare Zero Trust Access from anywhere

✨ Key Features

Core Capabilities

  • 🧠 Graph Memory - Memories as nodes, relationships as edges, observations as content
  • 🔍 Unified Search - Semantic vectors, exact matching, wildcards, and graph traversal in one tool
  • 🔗 Smart Relations - Typed connections with strength, source tracking, and temporal metadata
  • 📊 Multi-Database - Isolated project contexts with instant switching
  • ☁️ Cloudflare Access Ready - Zero Trust tunneling for secure remote connections

Advanced Operations

  • Batch Operations - Create multiple memories with relationships in single request using localId
  • 🎯 Context Control - Response detail levels: minimal (lists), full (complete data), relations-only
  • 📅 Time Queries - Filter by relative ("7d", "30d") or absolute dates on any temporal field
  • 🌐 Graph Traversal - Navigate networks in any direction with depth control
  • 🛡️ Zero Trust Security - mTLS encryption through Cloudflare Access

Architecture

  • 🚀 MCP Native - Seamless integration with Claude Desktop and MCP clients
  • 💾 Persistent Storage - Neo4j graph database with GDS plugin for vector operations
  • ☁️ Cloudflare Optimized - Solved BOLT protocol tunneling issues
  • ⚠️ Zero-Fallback - Explicit errors for reliable debugging, no silent failures

🚀 Quick Start - NPM Installation

Option 1: Install from NPM (Recommended)

# Coming soon - after publication
npm install @jeelidev/personal-neo4j-memory-server

Option 2: Install from GitHub (Available Now)

npx -y https://github.com/jeelidev/personal-neo4j-memory-server.git

📝 Claude Code Configuration

Add to Claude Desktop/Claude Code config:

For NPM Package (when published):

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@jeelidev/personal-neo4j-memory-server"],
      "env": {
        "NEO4J_URI": "bolt://localhost:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "your-password"
      }
    }
  }
}

For GitHub Installation (Current):

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "https://github.com/jeelidev/personal-neo4j-memory-server.git"],
      "env": {
        "NEO4J_URI": "bolt://localhost:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "your-password"
      }
    }
  }
}

☁️ Cloudflare Access Setup (CRITICAL FOR REMOTE SETUP)

🎯 The Problem Solved

Traditional Cloudflare Tunnel with TCP (cloudflared tunnel --url tcp://localhost:7687) fails for Neo4j BOLT protocol, causing HTTP 400 errors.

✅ The Solution: Cloudflare Access

Use cloudflared access tcp instead of cloudflared tunnel for reliable BOLT protocol connections.

1. Cloudflare Dashboard Configuration

Navigate to: Zero Trust → Networks → Tunnels → Public Hostnames

Add Public Hostname:

  • Type: TCP
  • Hostname: neo4j-bolt.jeelidev.uk (or your domain)
  • Service: tcp://localhost:7687

2. Local Cloudflare Access Command

# Start tunnel for Neo4j BOLT
cloudflared access tcp --hostname neo4j-bolt.jeelidev.uk --url localhost:7687

# For multiple services (MySQL, PostgreSQL, SSH, etc.)
cloudflared access tcp --hostname mysql-server.jeelidev.uk --url localhost:3306
cloudflared access tcp --hostname postgres-server.jeelidev.uk --url localhost:5432

3. SSH Configuration (Optional but Recommended)

Add to ~/.ssh/config:

Host *.jeelidev.uk
  ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h

🛠️ Automated TCP Tunnels Service

📁 Included Scripts

This package includes automated tunnel management for any TCP service:

cloudflare-tcp-tunnels.sh - Main Script

# Start all configured tunnels
./cloudflare-tcp-tunnels.sh start

# Check tunnel status
./cloudflare-tcp-tunnels.sh status

# Add new tunnel
./cloudflare-tcp-tunnels.sh add my-service api.jeelidev.uk 3000

# List configured tunnels
./cloudflare-tcp-tunnels.sh list

# Remove existing tunnel
./cloudflare-tcp-tunnels.sh remove my-service

# Clean all tunnels (resets configuration)
./cloudflare-tcp-tunnels.sh clean

# Stop all tunnels
./cloudflare-tcp-tunnels.sh stop

Pre-configured Services:

  • Neo4j BOLT: neo4j-bolt.jeelidev.uk:7687
  • Neo4j Routing: neo4j-routing.jeelidev.uk:7688
  • MySQL: mysql-server.jeelidev.uk:3306
  • PostgreSQL: postgres-server.jeelidev.uk:5432
  • SSH: ssh-server.jeelidev.uk:22
  • Redis: redis-server.jeelidev.uk:6379
  • MongoDB: mongodb-server.jeelidev.uk:27017
  • Custom Services: Easily add more with add command

cloudflare-tcp-tunnels.service - Systemd Service

# Install for automatic startup on boot
sudo cp cloudflare-tcp-tunnels.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable cloudflare-tcp-tunnels.service
sudo systemctl start cloudflare-tcp-tunnels.service

🗄️ Neo4j Setup

Working setup: DozerDB with GDS Plugin

For the database, use DozerDB with the Graph Data Science plug-in, GDS is not only recommended but necessary:

For current installation instructions, see: https://dozerdb.org/

Example setup:

# Run DozerDB container with latest version
docker run \
    -p 7474:7474 -p 7687:7687 \
    -v $HOME/neo4j/data:/data \
    -v $HOME/neo4j/logs:/logs \
    -v $HOME/neo4j/plugins:/plugins \
    --env NEO4J_AUTH=neo4j/password \
    --env NEO4J_dbms_security_procedures_unrestricted='gds.*' \
    graphstack/dozerdb:latest

# Install GDS plugin - see dozerdb.org for current instructions

# Verify GDS plugin works
# In Neo4j Browser (http://localhost:7474):
# RETURN gds.similarity.cosine([1,2,3], [2,3,4]) as similarity

Remote Neo4j with Cloudflare Access

For remote Neo4j servers, use Cloudflare Access instead of traditional tunneling:

# On remote server: configure Zero Trust hostname
# On local machine: start access tunnel
cloudflared access tcp --hostname neo4j-remote.jeelidev.uk --url localhost:7687

# Connect Neo4j Browser to: bolt://localhost:7687
# MCP connects through localhost proxy

🛠️ Unified Tools

The server provides 4 unified MCP tools that integrate automatically with Claude:

  • memory_store - Create memories with observations and immediate relations in ONE operation
  • memory_find - Unified search/retrieval with semantic search, direct ID lookup, date filtering, and graph traversal
  • memory_modify - Comprehensive modification operations (update, delete, observations, relations)
  • database_switch - Switch database context for isolated environments

📊 Memory Structure

{
  "id": "dZ$abc123",
  "name": "Project Alpha",
  "memoryType": "project",
  "metadata": {"status": "active", "priority": "high"},
  "observations": [
    {"id": "dZ$obs456", "content": "Started development", "createdAt": "2025-06-08T10:00:00Z"}
  ],
  "related": {
    "ancestors": [{"id": "dZ$def789", "name": "Initiative", "relation": "PART_OF", "distance": 1}],
    "descendants": [{"id": "dZ$ghi012", "name": "Task", "relation": "INCLUDES", "distance": 1}]
  }
}

🎯 System Prompt

The simplest use of the memory tool, the following usually is more than enough.

## Memory Tool Usage
- Store all memory for this project in database: 'project-database-name'
- Use MCP memory tools exclusively for storing project-related information
- Begin each session by:
  1. Switching to this project's database
  2. Searching memory for data relevant to the user's prompt

🔧 Troubleshooting

Cloudflare Access Issues

❌ HTTP 400 Error with Traditional Tunneling:

# WRONG - This causes HTTP 400 errors
cloudflared tunnel --url tcp://localhost:7687

# CORRECT - Use Cloudflare Access
cloudflared access tcp --hostname neo4j-bolt.jeelidev.uk --url localhost:7687

✅ Connection Verification:

# Verify tunnel is working
netcat -zv localhost 7687
# Should show: Connection to localhost port 7687 [tcp/*] succeeded!

Vector Search Issues:

  • Check logs for [VectorSearch] GDS Plugin detected
  • GDS Plugin requires DozerDB setup (see Neo4j Setup section)

Connection Issues:

  • Verify Neo4j is running: docker ps
  • Test connection: curl http://localhost:7474
  • Check credentials in environment variables
  • Ensure Cloudflare Access tunnels are running

📚 Cloudflare Access Commands Reference

Supported Protocols:

# TCP Services (Neo4j, MySQL, PostgreSQL, etc.)
cloudflared access tcp --hostname service.domain.com --url localhost:PORT

# SSH Services
cloudflared access ssh --hostname ssh.domain.com

# HTTP/HTTPS Services
cloudflared access https://app.domain.com

# RDP (Windows Remote Desktop)
cloudflared access rdp --hostname rdp.domain.com --local-port 3389

# VNC
cloudflared access vnc --hostname vnc.domain.com --local-port 5900

🚀 Production Deployment

For Production Use:

  1. Install systemd service for automatic tunnel startup
  2. Configure proper SSL certificates in Cloudflare Zero Trust
  3. Set up access policies for additional security
  4. Monitor tunnel health with the provided status command
  5. Use environment variables for sensitive configuration

📄 License

MIT

🤝 Contributing

This is a personal fork enhanced for Cloudflare Access compatibility. Original project by sylweriusz.

Key Enhancements in This Fork:

  • Cloudflare Access TCP compatibility
  • Enhanced error logging for tunneling issues
  • Automated tunnel management scripts
  • Production-ready systemd service
  • Comprehensive documentation

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured