图数据库记忆服务器

一个基于Neo4j图数据库的AI记忆服务器,提供持久化、智能化的记忆能力,支持语义搜索、关系连接和多数据库管理,并增强Cloudflare Access远程访问支持。

  • by jeelidev
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 jeelidev/personal-neo4j-memory-server

使用说明

个人Neo4j内存服务器-增强的Cloudflare访问支持

一个模型上下文协议(MCP)服务器,使用Neo4j的图形数据库为AI助手提供持久、智能的内存功能 增强的Cloudflare访问隧道支持.

🎯 它做什么

此服务器使AI助手能够:

  • 记住 -将记忆存储为具有观察和元数据的互连知识节点
  • 搜索 -使用语义向量搜索、精确匹配和图遍历查找相关记忆
  • 连接 -通过批处理操作和交叉引用在内存之间创建有意义的关系
  • 组织 -使用不同的数据库按项目分离内存
  • 进化 -使用时间元数据和关系网络跟踪知识如何随时间发展
  • 🚀 新功能:可靠的远程访问 -通过Cloudflare零信任访问从任何地方连接

✨ 主要特点

核心能力

  • 🧠 图形存储器 -记忆是节点,关系是边缘,观察是内容
  • 🔍 统一搜索 -语义向量、精确匹配、通配符和图遍历在一个工具中
  • 🔗 智能关系 -具有强度、源跟踪和时间元数据的类型化连接
  • 📊 多数据库 -具有即时切换功能的孤立项目上下文
  • ☁️ Cloudflare访问就绪 -用于安全远程连接的零信任隧道

高级操作

  • ⚡ 批量操作 -使用localId在单个请求中创建具有关系的多个内存
  • 🎯 上下文控制 -响应详细级别:最小(列表)、完整(完整数据)、仅关系
  • 📅 时间查询 -按任何时间字段上的相对日期(“7d”、“30d”)或绝对日期过滤
  • 🌐 图的遍历 -使用深度控制在任何方向上导航网络
  • 🛡️ 零信任安全 -通过Cloudflare Access进行mTLS加密

建筑

  • 🚀 MCP本地 -与Claude Desktop和MCP客户端无缝集成
  • 💾 持久化存储 -带有GDS插件的Neo4j图形数据库,用于矢量运算
  • ☁️ Cloudflare优化 -解决了BOLT协议隧道问题
  • ⚠️ 零回退 -显式错误可实现可靠调试,无无声故障

🚀 快速入门-NPM安装

选项1:从NPM安装(推荐)

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

选项2:从GitHub安装(现在可用)

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

📝 Claude代码配置

添加到克劳德桌面/Claude代码配置:

对于NPM包(发布时):

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

GitHub安装(当前):

{
  "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访问设置(对于远程设置至关重要)

🎯 问题已解决

使用TCP的传统Cloudflare隧道(cloudflared tunnel --url tcp://localhost:7687) 失败 对于Neo4j BOLT协议,会导致HTTP 400错误。

✅ 解决方案:Cloudflare Access

使用 cloudflared access tcp 而不是 cloudflared tunnel 用于可靠的BOLT协议连接。

1.Cloudflare仪表板配置

导航到: 零信任→ 网络→ 隧道→ 公共主机名

添加公共主机名:

  • 类型:TCP
  • 主机名: neo4j-bolt.jeelidev.uk (或您的域名)
  • 服务: tcp://localhost:7687

2.本地Cloudflare访问命令

# 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配置(可选但推荐)

添加到 ~/.ssh/config:

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

🛠️ 自动TCP隧道服务

📁 包含的脚本

此软件包包括自动化隧道管理 任何TCP服务:

cloudflare-tcp-tunnels.sh -主脚本

# 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

预配置服务:

  • Neo4j螺栓: neo4j-bolt.jeelidev.uk:7687
  • Neo4j路由: neo4j-routing.jeelidev.uk:7688
  • MySQL: mysql-server.jeelidev.uk:3306
  • PostgreSQL: postgres-server.jeelidev.uk:5432
  • 安全外壳协议: ssh-server.jeelidev.uk:22
  • 瑞迪斯: redis-server.jeelidev.uk:6379
  • MongoDB: mongodb-server.jeelidev.uk:27017
  • 定制服务:轻松添加更多 add 命令

cloudflare-tcp-tunnels.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设置

工作设置:DozerDB与GDS插件

对于数据库,使用DozerDB和图形数据科学插件,GDS不仅是推荐的,而且是必要的:

有关当前的安装说明,请参阅:https://dozerdb.org/

示例设置:

# 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

具有Cloudflare访问权限的远程Neo4j

对于远程Neo4j服务器,请使用Cloudflare Access而不是传统的隧道:

# 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

🛠️ 统一工具

服务器提供 4个统一的MCP工具 与Claude自动集成:

  • memory_store -在一次操作中通过观察和直接关系创建记忆
  • memory_find -具有语义搜索、直接ID查找、日期过滤和图遍历的统一搜索/检索
  • memory_modify -全面的修改操作(更新、删除、观察、关系)
  • database_switch -为隔离环境切换数据库上下文

📊 存储结构

{
  "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}]
  }
}

🎯 系统提示

最简单的使用记忆工具,以下通常就足够了。

## 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

🔧 故障排除

Cloudflare访问问题

❌ HTTP 400传统隧道错误:

# 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

✅ 连接验证:

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

矢量搜索问题:

  • 检查日志 [VectorSearch] GDS Plugin detected
  • GDS插件需要DozerDB设置(请参阅Neo4j设置部分)

连接问题:

  • 验证Neo4j是否正在运行: docker ps
  • 测试连接: curl http://localhost:7474
  • 检查环境变量中的凭据
  • 确保Cloudflare访问隧道正在运行

📚 Cloudflare访问命令参考

支持的协议:

# 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

🚀 生产部署

用于生产用途:

  1. 安装systemd服务 用于自动隧道启动
  2. 配置正确的SSL证书 Cloudflare零信任
  3. 设置访问策略 为了增加安全性
  4. 监控隧道健康状况 使用提供的状态命令
  5. 使用环境变量 用于敏感配置

📄 许可证

麻省理工学院

🤝 贡献

这是一个增强了Cloudflare Access兼容性的个人分叉。sylweriusz的原创项目。

此分叉中的主要增强功能:

  • ✅ Cloudflare访问TCP兼容性
  • ✅ 针对隧道问题的增强错误日志记录
  • ✅ 自动化隧道管理脚本
  • ✅ 生产就绪系统服务
  • ✅ 全面的文件