自托管记忆管理服务器

用于自托管Mem0的MCP服务器,支持Qdrant向量搜索和Neo4j图形内存管理。

  • by tensakulabs
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 tensakulabs/mem0-mcp

使用说明

内存0 mcp

MCP服务器 自托管 Mem0带Qdrant向量搜索+Neo4j图形内存。

您在寻找Mem0 Cloud吗? 这 官方mem0-mcp服务器 与托管平台合作 应用程序.mem0.ai。此项目用于自托管部署,您可以在其中运行自己的Qdrant、Ollama和Neo4j。

为什么存在

官方MCP服务器需要一个Mem0 Cloud API密钥。如果您使用自己的Qdrant和Ollama自托管Mem0,则没有现成的MCP服务器连接到您的基础设施。这个确实如此。

它连接到什么:

  • Qdrant 用于向量记忆(语义搜索)
  • Neo4j 用于图形内存(实体关系)
  • 奥拉玛 用于嵌入(不需要OpenAI/Anthropic密钥)
  • OpenMemory API 用于写入(保持SQLite+Qdrant同步)

工具

工具 描述 后端
search_memories 跨所有记忆的语义搜索 Ollama embed+Qdrant
add_memory 存储新内存 OpenMemory API
list_memories 列出所有存储的记忆 Qdrant滚动
delete_memory 按ID API+Qdrant回退删除内存
search_graph 查找实体关系 Neo4j
get_entity 获取实体的所有连接 Neo4j

先决条件

运行在可访问位置的自托管Mem0堆栈:

  • Qdrant (矢量存储)
  • 奥拉玛 使用嵌入模型(例如。, nomic-embed-text)
  • OpenMemory API (mem0ai/mem0)
  • Neo4j 5+ 社区或企业(可选,用于图形内存)

如果这些端口位于远程服务器上,请使用SSH隧道在本地转发端口。

设置

1.安装

pip install git+https://github.com/tensakulabs/mem0-mcp.git

2.配置克劳德代码

claude mcp add -s user mem0-mcp -- \
  uvx --from git+https://github.com/tensakulabs/mem0-mcp.git mem0-mcp

或者手动添加到MCP配置中:

{
  "mcpServers": {
    "mem0": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/tensakulabs/mem0-mcp.git", "mem0-mcp"],
      "env": {
        "MEM0_QDRANT_URL": "http://127.0.0.1:6333",
        "MEM0_OLLAMA_URL": "http://127.0.0.1:11435",
        "MEM0_API_BASE": "http://127.0.0.1:8765",
        "MEM0_NEO4J_URL": "bolt://127.0.0.1:7687",
        "MEM0_NEO4J_PASSWORD": "your-password",
        "MEM0_USER_ID": "your-user-id"
      }
    }
  }
}

3.SSH隧道(如果远程)

如果您的Mem0堆栈位于远程服务器上:

ssh -f -N \
  -L 8765:127.0.0.1:8765 \
  -L 6333:127.0.0.1:6333 \
  -L 11435:127.0.0.1:11434 \
  -L 7687:127.0.0.1:7687 \
  user@your-server

配置

所有这些都是通过具有合理默认值的环境变量实现的:

变量 默认值 描述
MEM0_API_BASE http://127.0.0.1:8765 OpenMemory API(用于写入)
MEM0_QDRANT_URL http://127.0.0.1:6333 Qdrant REST API
MEM0_OLLAMA_URL http://127.0.0.1:11435 Ollama(用于嵌入)
MEM0_EMBED_MODEL nomic-embed-text:latest 嵌入模型名称
MEM0_COLLECTION openmemory Qdrant集合名称
MEM0_USER_ID justin 用于内存筛选的用户ID
MEM0_NEO4J_URL bolt://127.0.0.1:7687 Neo4j螺栓端点
MEM0_NEO4J_USER neo4j Neo4j用户名
MEM0_NEO4J_PASSWORD mem0graph Neo4j密码

建筑

Claude Code / Claude Desktop
  └── MCP stdio → mem0-mcp
        ├── READS  → Qdrant (vector search, all memories)
        ├── SEARCH → Ollama (embed query) + Qdrant (similarity)
        ├── GRAPH  → Neo4j (entity relationships)
        └── WRITES → OpenMemory API (SQLite + Qdrant sync)

为什么是混合读/写? OpenMemory API使用SQLite作为内存列表的真相来源。如果其他代理(如OpenClaw)直接写入Qdrant,API将看不到这些内存。从Qdrant的阅读可以直接看到一切。通过API编写使两个存储保持同步。

许可证

麻省理工学院