Token导航 LogoToken导航

MCP Server · AI代理

Mem0 MCP Selfhosted

mem0-mcp-selfhosted 是一个自托管的记忆管理服务器,支持使用Qdrant + Neo4j + Ollama构建完整的记忆系统,可选择Anthropic(Claude)或Ollama作为主LLM。

stdio官方级别未说明来源级核验工具 11
记忆管理PythonClaude知识图谱

快速开始

作者 / 组织
elvismdev
提供方
elvismdev

工具数量

11

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

84

仓库热度

收录来源

2 个

MCP World

选型结论

Mem0 MCP Selfhosted 属于AI代理类 MCP Server,公开资料标注 11 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前要先准备 OAuth 授权。

分类

AI代理

传输方式

stdio

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

安装命令

pip install -e ".[dev]"

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 对应的运行时,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 11 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

mem0 mcp自托管

自托管 mem0 Claude Code的MCP服务器。针对自托管的Qdrant+Neo4j+Ollama运行一个完整的内存服务器,您可以选择Anthropic(Claude)或Ollama作为主要的LLM。

使用 mem0ai 直接作为库的包,支持Claude的OAT令牌和完全本地的Ollama设置,并公开了11个MCP工具用于完全内存管理。

先决条件

服务必需目的
Qdrant是矢量内存存储和搜索
奥拉玛是嵌入生成(bge-m3)以及可选的本地LLM
Neo4j 5+可选知识图(实体关系)
Google API密钥可选仅适用于 gemini/gemini_split 图形提供者

Python>=3.10和 紫外线.

身份验证: 默认设置使用Claude(Anthropic)作为事实提取的LLM。不需要API密钥,服务器会自动使用您的ClaudeCode会话令牌。对于完全本地设置,请设置 MEM0_PROVIDER=ollama。参见 认证 高级选项。

快速开始

默认值(人为)

全局添加MCP服务器(可在所有项目中使用):

claude mcp add --scope user --transport stdio mem0 \
  --env MEM0_USER_ID=your-user-id \
  -- uvx --from git+https://github.com/elvismdev/mem0-mcp-selfhosted.git mem0-mcp-selfhosted

所有默认设置都是开箱即用的:Qdrant on localhost:6333Ollama嵌入 localhost:11434 随着 bge-m3 (1024调暗)。通过以下方式覆盖任何默认值 --env (参见 配置).

uvx 在隔离环境中自动下载、安装和运行服务器,无需手动安装。当MCP连接开始时,Claude Code会按需启动它。

服务器自动从以下位置读取OAT令牌 ~/.claude/.credentials.json,无需手动配置令牌。

完全本地化(Ollama)

对于没有云依赖的完全本地设置,请将Ollama用于主要的LLM和嵌入:

claude mcp add --scope user --transport stdio mem0 \
  --env MEM0_PROVIDER=ollama \
  --env MEM0_LLM_MODEL=qwen3:14b \
  --env MEM0_USER_ID=your-user-id \
  -- uvx --from git+https://github.com/elvismdev/mem0-mcp-selfhosted.git mem0-mcp-selfhosted

MEM0_PROVIDER=ollama 级联到主要的LLM和图LLM提供商。相同的基础设施默认值适用(Qdrant on localhost:6333, bge-m3 嵌入)。按服务覆盖(例如。 MEM0_LLM_URL, MEM0_EMBED_URL)在需要时仍然工作。

或者通过创建将其添加到单个项目中 .mcp.json 在项目根目录中:

{
  "mcpServers": {
    "mem0": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/elvismdev/mem0-mcp-selfhosted.git", "mem0-mcp-selfhosted"],
      "env": {
        "MEM0_PROVIDER": "ollama",
        "MEM0_LLM_MODEL": "qwen3:14b",
        "MEM0_USER_ID": "your-user-id"
      }
    }
  }
}

试试看

重新启动克劳德代码,然后:

> Search my memories for TypeScript preferences
> Remember that I prefer Hatch for Python packaging
> Show me all entities in my knowledge graph

CLAUDE.md集成

将这些规则添加到项目的 CLAUDE.md (或 ~/.claude/CLAUDE.md 全局使用),因此Claude Code在整个会话中主动使用内存工具:

# MCP Servers

- **mem0**: Persistent memory across sessions. At the start of each session, `search_memories` for relevant context before asking the user to re-explain anything. Use `add_memory` whenever you discover project architecture, coding conventions, debugging insights, key decisions, or user preferences. Use `update_memory` when prior context changes. Save information like: "This project uses PostgreSQL with Prisma", "Tests run with pytest -v", "Auth uses JWT validated in middleware". When in doubt, save it, future sessions benefit from over-remembering.

这为Claude Code提供了在会话期间主动搜索和保存记忆的行为指令。为了获得最佳效果,请结合 克劳德代码挂钩,CLAUDE.md规则告诉克劳德 *如何使用* 内存工具在会话中期,而钩子处理 *自动的* 在会话边界进行注入和保存。

克劳德代码挂钩

会话挂钩在会话边界自动调用内存,在启动时注入内存,并在退出时保存摘要。这会自动发生,无需手动调用工具。

Hook事件它的作用
mem0-hook-context会话开始(startup, compact)在mem0中搜索与项目相关的内存,并将其作为 additionalContext
mem0-hook-stop停止从成绩单中读取最后~3次用户/助理交流,并通过以下方式将摘要保存到mem0 infer=True

这两个钩子都是非致命的,如果mem0不可访问或发生任何错误,Claude代码将正常继续。

安装

在项目中安装挂钩:

mem0-install-hooks

或全局安装(所有项目):

mem0-install-hooks --global

这将钩子条目添加到 .claude/settings.json安装程序是幂等的,运行两次不会创建重复项。

运作原理

会话开始时,上下文挂钩使用两个查询(项目架构+最近会话摘要)搜索mem0,按内存ID进行重复数据消除,并将结果格式化为 # mem0 Cross-Session Memory 头球这些是通过钩子注射的 additionalContext 响应字段。

会话停止,stop钩子读取JSONL转录,提取最后6条用户/助理消息(通过有界双端队列的滑动窗口),构建摘要提示,并调用 memory.add(infer=True) 提取原子事实。在钩子中强制禁用Graph,以保持在15s/30s的超时预算内。

入口点

命令功能已注册 pyproject.toml
mem0-hook-contexthooks:context_main会话启动挂钩
mem0-hook-stophooks:stop_main止动钩
mem0-install-hookshooks:install_mainCLI安装程序

挂钩+CLAUDE.md

Hooks和CLAUDE.md是互补的层,可以最好地协同工作:

层角色何时
钩子自动数据流,启动时注入存储的内存,退出时保存会话摘要会话边界(启动/停止)
CLAUDE.md行为指导,告诉克劳德在会话期间积极搜索和保存记忆整个会话

仅钩子就可以让你被动回忆(记忆在启动时出现)和被动保存(摘要在退出时保存)。CLAUDE.md指令添加了活动的会话中期行为,CLAUDE在遇到新主题时搜索相关记忆,并立即保存重要发现,而不是等待会话结束。

为了获得最佳体验,请同时使用两者。钩子确保内存在会话边界自动流入和流出,而CLAUDE.md确保CLAUDE在会话期间积极使用内存工具。

认证

服务器使用优先级回退链解析Anthropic令牌:

优先级来源详细信息
1MEM0_ANTHROPIC_TOKEN env var显式,用户控制
2~/.claude/.credentials.json自动读取Claude Code的OAT令牌(零配置)
3ANTHROPIC_API_KEY env var标准付费每次使用API密钥
4禁用警告并禁用Anthropic LLM功能

在Claude Code中,优先级2总是获胜,只要您登录,凭据文件就存在。这意味着 ANTHROPIC_API_KEY (优先级3)从未达到。要覆盖Claude代码中的OAT令牌,请使用 MEM0_ANTHROPIC_TOKEN (优先级1)。 ANTHROPIC_API_KEY 仅适用于非Claude Code部署(Docker、CI、独立)。

OAT令牌 (sk-ant-oat...)使用您的Claude订阅。服务器会自动检测令牌类型并相应地配置SDK。OAT令牌在到期前会自动刷新:服务器会主动检查令牌的生命周期,并在接近到期时(默认值:30分钟)通过Anthropic OAuth端点进行刷新。在身份验证失败时,会启动一个三步防御策略,利用Claude Code的凭据文件,通过OAuth进行自我刷新,然后等待重试,因此长时间运行的会话可以无缝地在令牌轮换中生存。

API密钥 (sk-ant-api...)使用标准的按使用付费计费。

工具

内存工具(9核)

工具说明
add_memory将文本或对话历史记录存储为记忆。支持 enable_graph, infer, metadata.
search_memories语义搜索,可选 filters, threshold, rerank, enable_graph.
get_memories列出/过滤内存(非搜索)。支持 limit 以及范围过滤器。
get_memory通过UUID获取单个内存。
update_memory替换内存文本。在Qdrant中重新嵌入和重新索引。
delete_memory按UUID删除单个内存。
delete_all_memories批量删除作用域中的所有内存。
list_entities列出具有内存计数的用户/代理/运行。使用Qdrant Facet API。
delete_entities级联删除一个实体及其所有记忆。

图形工具

工具说明
search_graph按名称子字符串搜索Neo4j实体。返回实体+传出关系。
get_entity获取实体的所有关系(双向:传入+传出)。

提示

服务器注册了一个 memory_assistant MCP提示为Claude提供了有效使用内存工具的快速入门指南。

参数

所有工具都使用Pydantic Annotated[type, Field(description=...)] 用于自文档化参数模式。常见模式:

  • user_id 默认为 MEM0_USER_ID 未提供env-var时
  • enable_graph 覆盖默认值 MEM0_ENABLE_GRAPH 每次呼叫
  • filters 支持结构化运算符: {"key": {"eq": "value"}}, {"AND": [...]}
  • 所有响应都是JSON字符串,通过 json.dumps(result, ensure_ascii=False)

配置

所有配置都是通过环境变量进行的。创建一个 .env 文件或在MCP配置中设置它们。

认证

变量默认值描述
MEM0_ANTHROPIC_TOKEN--Anthropic OAT或API令牌(优先级1)
ANTHROPIC_API_KEY--标准无烟煤API密钥(优先级3)
MEM0_OAT_HEADERSautoOAT标识标头: auto 或 none
MEM0_OAT_REFRESH_THRESHOLD_SECONDS1800到期前几秒触发主动OAT令牌刷新

LLM

变量默认值描述
MEM0_PROVIDERanthropic顶级供应商(anthropic 或 ollama).级联到 MEM0_LLM_PROVIDER 和 MEM0_GRAPH_LLM_PROVIDER 当这些未设置时。是否 不 影响 MEM0_EMBED_PROVIDER.
MEM0_LLM_PROVIDER_(成员_供应商)_主要法学硕士提供者: anthropic 或 ollama.继承自 MEM0_PROVIDER 当未设置时。
MEM0_OLLAMA_URLhttp://localhost:11434共享Ollama基本URL。级联到 MEM0_LLM_URL, MEM0_EMBED_URL,以及 MEM0_GRAPH_LLM_URL 当这些未设置时。
MEM0_LLM_MODEL_(每个供应商)_所选LLM提供程序的模型。默认为 claude-opus-4-6 对于Anthropic来说, qwen3:14b 对于Ollama
MEM0_LLM_URL_(级联)_Ollama主LLM的基本URL。级联: MEM0_LLM_URL → MEM0_OLLAMA_URL → http://localhost:11434仅在以下情况下使用 MEM0_LLM_PROVIDER=ollama
MEM0_LLM_MAX_TOKENS16384LLM响应的最大令牌数(仅适用于Anthropic)
MEM0_GRAPH_LLM_PROVIDER_(成员_供应商)_Graph LLM提供程序(anthropic, anthropic_oat, ollama, gemini, gemini_split).继承自 MEM0_PROVIDER 当未设置时。
MEM0_GRAPH_LLM_URL_(级联)_图LLM的Ollama基本URL。级联: MEM0_GRAPH_LLM_URL → MEM0_LLM_URL → MEM0_OLLAMA_URL → http://localhost:11434
MEM0_GRAPH_LLM_MODEL_(变化)_图形模型。继承 MEM0_LLM_MODEL 用于人/胶原蛋白;默认为 gemini-2.5-flash-lite 双子座/双子座分裂
GOOGLE_API_KEY--Google API密钥(对于 gemini/gemini_split 图形提供者)
MEM0_GRAPH_CONTRADICTION_LLM_PROVIDERanthropicLLM提供者在 gemini_split 模式(anthropic, anthropic_oat, ollama)
MEM0_GRAPH_CONTRADICTION_LLM_MODEL_(供应商知道)_矛盾模型 gemini_split 模式。默认为 claude-opus-4-6 为了 anthropic/anthropic_oat 提供者;继承 MEM0_LLM_MODEL 对于其他人。
MEM0_OLLAMA_KEEP_ALIVE30mOllama在调用之间将模型保持在VRAM中多长时间(例如。, 1h, 5m).防止在多调用图管道期间卸载模型
MEM0_OLLAMA_THINKfalse设置为 true 重新启用qwen3思维模式(默认禁用以防止 ` + format:"json"` 碰撞)

嵌入器

变量默认值描述
MEM0_EMBED_PROVIDERollama嵌入提供者(ollama 或 openai)
MEM0_EMBED_MODELbge-m3嵌入模型名称
MEM0_EMBED_URL_(级联)_Ollama嵌入URL。级联: MEM0_EMBED_URL → MEM0_OLLAMA_URL → http://localhost:11434
MEM0_EMBED_DIMS1024嵌入向量维度

矢量存储(Qdrant)

变量默认值描述
MEM0_QDRANT_URLhttp://localhost:6333Qdrant REST API URL
MEM0_QDRANT_API_KEY--Qdrant API密钥(用于Qdrant Cloud)
MEM0_QDRANT_ON_DISKfalse将矢量存储在磁盘上(减少RAM,搜索速度较慢)
MEM0_QDRANT_TIMEOUT_(客户端默认)_Qdrant REST API超时(以秒为单位)(例如。, 30).只有当你击中时才设置 ReadTimeout 在收集操作期间
MEM0_COLLECTIONmem0_mcp_selfhostedQdrant集合名称

图形库(Neo4j)

变量默认值描述
MEM0_ENABLE_GRAPHfalse启用图形内存(实体提取到Neo4j)
MEM0_NEO4J_URLbolt://127.0.0.1:7687Neo4j螺栓端点
MEM0_NEO4J_USERneo4jNeo4j用户名
MEM0_NEO4J_PASSWORDmem0graphNeo4j密码
MEM0_NEO4J_DATABASE--Neo4j数据库名称(多数据库设置)
MEM0_NEO4J_BASE_LABEL--用于节点类型分组的自定义Neo4j基本标签
MEM0_GRAPH_THRESHOLD0.7嵌入相似度阈值进行节点匹配

服务器

变量默认值描述
MEM0_TRANSPORTstdio运输: stdio, sse,或 streamable-http
MEM0_HOST0.0.0.0SSE/HTTP传输主机
MEM0_PORT8081SSE/HTTP传输端口
MEM0_USER_IDuser内存作用域的默认用户ID
MEM0_LOG_LEVELINFO日志记录级别(DEBUG, INFO, WARNING, ERROR)
MEM0_HISTORY_DB_PATH--内存更改历史的SQLite路径

建筑

Claude Code
  |
  ├── MCP stdio/SSE/streamable-http
  │     |
  │     ├── env.py               ← Centralized env var readers (whitespace-safe)
  │     ├── auth.py              ← Hybrid token fallback chain + OAT self-refresh
  │     ├── llm_anthropic.py     ← Custom Anthropic LLM provider (OAT + structured outputs)
  │     ├── llm_ollama.py        ← Custom Ollama LLM provider (restored tool-calling)
  │     ├── config.py            ← Env vars → MemoryConfig dict (provider + URL cascades)
  │     ├── helpers.py           ← Error wrapper, concurrency lock, safe bulk-delete, monkey-patches
  │     ├── graph_tools.py       ← Direct Neo4j Cypher queries (lazy driver)
  │     ├── llm_router.py        ← Split-model graph LLM router (gemini_split)
  │     ├── __init__.py          ← Telemetry suppression (before any mem0 import)
  │     └── server.py            ← FastMCP orchestrator (11 tools + prompt)
  │           |
  │           ├── mem0ai Memory class
  │           │     ├── Vector: LLM fact extraction → Ollama embed → Qdrant
  │           │     └── Graph: LLM entity extraction (tool calls) → Neo4j
  │           |
  │           └── Infrastructure
  │                 ├── Qdrant          ← Vector store
  │                 ├── Ollama          ← Embeddings
  │                 ├── Neo4j           ← Knowledge graph (optional)
  │                 └── Anthropic/Ollama ← Main LLM (configurable)
  |
  └── Session Hooks (subprocess, not MCP)
        |
        └── hooks.py             ← Cross-session memory (SessionStart + Stop hooks)
              ├── context_main()   → Injects memories as additionalContext on startup/compact
              ├── stop_main()      → Saves session summary to mem0 on exit
              └── install_main()   → CLI to patch .claude/settings.json

图形内存和配额

图形内存为 默认情况下禁用 (MEM0_ENABLE_GRAPH=false)为了保护你的克劳德配额。每 add_memory 启用图形后,会触发3个额外的LLM调用,用于实体提取、关系生成和冲突解决。

使用Ollama进行图形操作

要消除图操作的Claude配额使用,请使用本地Ollama模型:

MEM0_ENABLE_GRAPH=true
MEM0_GRAPH_LLM_PROVIDER=ollama
MEM0_GRAPH_LLM_MODEL=qwen3:14b

Qwen3:14b具有0.971的工具调用F1(几乎与GPT-4的0.974匹配),并在~7-8GB的VRAM中运行,采用Q4_K_M量化。

使用Gemini进行图形操作

谷歌的Gemini 2.5 Flash Lite是图形操作最便宜的选择,同时保持了很强的实体提取准确性:

MEM0_ENABLE_GRAPH=true
MEM0_GRAPH_LLM_PROVIDER=gemini
MEM0_GRAPH_LLM_MODEL=gemini-2.5-flash-lite
GOOGLE_API_KEY=your-google-api-key

使用分割模型获得最佳精度

这 gemini_split 提供程序根据操作将图形管道调用路由到不同的LLM。实体提取(调用1和2)转到Gemini以获得速度和成本;矛盾检测(呼叫3)的准确性由Claude负责。

MEM0_ENABLE_GRAPH=true
MEM0_GRAPH_LLM_PROVIDER=gemini_split
GOOGLE_API_KEY=your-google-api-key
MEM0_GRAPH_CONTRADICTION_LLM_PROVIDER=anthropic
MEM0_GRAPH_CONTRADICTION_LLM_MODEL=claude-opus-4-6

248个测试用例的基准结果:Gemini在实体提取方面的得分为85.4%(Claude为79.1%),而Claude在矛盾检测方面的得分是100%(Gemini为80%)。拆分模型结合了两者的优点。

运输方式

模式用例配置
stdio (默认)克劳德代码集成MEM0_TRANSPORT=stdio
sse传统远程客户端MEM0_TRANSPORT=sse
streamable-http现代远程客户端MEM0_TRANSPORT=streamable-http

对于远程部署,MCP SDK>=1.23.0默认启用DNS重新绑定保护。

发展

# Install with dev dependencies
pip install -e ".[dev]"

# Run unit tests
python3 -m pytest tests/unit/ -v

# Run contract tests (validates mem0ai internal API assumptions)
python3 -m pytest tests/contract/ -v

# Run integration tests (requires live Qdrant + Neo4j + Ollama)
python3 -m pytest tests/integration/ -v

# Run all tests
python3 -m pytest tests/ -v

测试结构

  • tests/unit/ --具有模拟依赖关系的纯单元测试(env、auth、config、配置矩阵、并发性、MCP协议、助手、钩子、LLM提供者、图形工具、LLM路由器、服务器)
  • tests/contract/ --验证关于mem0ai内部的假设(模式检测不变性, vector_store.client 访问路径, LlmFactory 注册幂等性)
  • tests/integration/ --针对真实Qdrant+Neo4j+Ollama的实时基础设施测试(内存生命周期、图操作、批量操作、钩子)。标记为 @pytest.mark.integration.

合同测试捕捉到以下方面的突破性变化 mem0ai 在投入生产之前进行升级。

遥测

所有mem0ai遥测被抑制。 os.environ["MEM0_TELEMETRY"] = "false" 在包导入时间设置,早于任何时间 mem0 模块已加载。没有发送PostHog事件。

许可证

麻省理工学院

工具与能力

工具数量

11

资源数量

0

提示词数量

0

能力标签

记忆管理Python本地部署自托管服务LLM集成知识图谱向量存储

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 工具数量 11 个,一次接入能覆盖的操作比单点工具更全。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 运行环境,换机器要重新装一遍。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到OAuth 授权的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Mem0 MCP Selfhosted

MCP World · 本页

11stdio有2 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Mem0 MCP Selfhosted 怎么安装?

公开资料给出的安装命令是 pip install -e ".[dev]",运行环境为 未标注。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Mem0 MCP Selfhosted 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Mem0 MCP Selfhosted 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Mem0 MCP Selfhosted 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Mem0 MCP Selfhosted 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP