代理记忆存储服务

一个MCP服务器,为AI代理提供持久化记忆功能,支持多种后端和LLM提供商,用于存储、搜索和管理跨会话的上下文信息。

  • by arunkumars-mf
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 arunkumars-mf/mem0-agent-memory

使用说明

Mem0代理内存

一种模型上下文协议(MCP)服务器,为使用Mem0的AI代理提供持久内存功能。通过支持多个后端和LLM提供商,跨对话存储、搜索和管理上下文信息。

特性

核心能力:

  • 🧠 持久性内存:跨会话存储和检索上下文信息
  • 🔍 语义搜索:使用自然语言查询查找相关记忆
  • 📚 文件摄入:导入PDF、DOCX、Markdown和文本文件作为知识库
  • 🏷️ 元数据筛选:按类型、优先级、状态和自定义字段组织和筛选内存
  • 📊 内存管理:具有历史跟踪和批量操作的完整CRUD操作

后端支持:

  • 矢量存储:FAISS(本地)、Qdrant(嵌入式/服务器)、OpenSearch(AWS)、Mem0平台(云)
  • LLM提供商:AWS基岩(克劳德、泰坦)、Ollama(当地)、LM工作室(当地)
  • 图形存储:用于关系跟踪的KuzuDB集成(实验性)

开发人员经验:

  • ⚡ 自动配置:从系统上下文中自动检测用户/代理
  • 🎯 内存优先工作流:Kiro IDE集成的一个命令设置
  • 🔧 性能调整:可配置的推理、相关性过滤和连接池
  • 📦 会话分区:通过run_id隔离内存以进行多会话管理

快速开始

安装

pip install mem0-agent-memory

基本设置

添加到MCP客户端配置中:

基罗: .kiro/settings/mcp.json 亚马逊Q CLI: ~/.aws/amazonq/mcp.json 或 .amazonq/mcp.json

{
  "mcpServers": {
    "mem0-agent-memory": {
      "command": "uvx",
      "args": ["mem0-agent-memory"],
      "env": {
        "AWS_ACCESS_KEY_ID": "your-key",
        "AWS_SECRET_ACCESS_KEY": "your-secret",
        "AWS_REGION": "us-west-2"
      }
    }
  }
}

启用内存优先工作流(仅限Kiro)

在您的第一次聊天会话中:

setup steering for memory

这配置了AI在执行任务之前自动检查内存并存储重要结果。

配置

LLM提供商

通过设置适当的环境变量来选择LLM后端:

AWS Bedrock (Recommended)
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_REGION="us-west-2"

# Optional: Customize models
export BEDROCK_LLM_MODEL="us.anthropic.claude-3-5-haiku-20241022-v1:0"
export BEDROCK_EMBED_MODEL="amazon.titan-embed-text-v2:0"
export BEDROCK_MAX_TOKENS="1500"  # Default: 1500

演出:内置优化包括连接池(50个连接)、自适应重试和减少延迟设置。

Ollama (Local)
export OLLAMA_HOST="http://localhost:11434"
export OLLAMA_LLM_MODEL="llama3.2"           # Default
export OLLAMA_EMBED_MODEL="nomic-embed-text" # Default

# Pull models first:
ollama pull llama3.2
ollama pull nomic-embed-text

备注:对于Nomic嵌入,设置 NOMIC_USE_PREFIXES=true 以获得更好的搜索精度。

LM Studio (Local)
export LMSTUDIO_HOST="http://localhost:1234"
export LMSTUDIO_LLM_MODEL="llama-3.2-3b-instruct"
export LMSTUDIO_EMBED_MODEL="text-embedding-nomic-embed-text-v1.5"

矢量存储后端

FAISS (Default - Local)
export FAISS_PATH="/path/to/.mem0/memory"  # Optional, defaults to .mem0/memory

最适合:开发、中小型数据集(<10万内存)、单用户场景。

Qdrant (Embedded or Server)

嵌入式模式(无Docker):

export QDRANT_PATH=".mem0/qdrant"

服务器模式(生产):

export QDRANT_HOST="localhost"
export QDRANT_PORT="6333"  # Optional

好处:原生元数据过滤,复杂查询的性能更好,生产就绪的集群。 看 Qdrant设置指南 了解详情。

OpenSearch (AWS)
export OPENSEARCH_HOST="your-opensearch-endpoint"
export AWS_REGION="us-west-2"

最适合:大型数据集(>10万内存)、复杂的过滤、企业部署。

Mem0 Platform (Cloud)
export MEM0_API_KEY="your-api-key"

最适合:托管服务,无基础设施管理,内置功能。

其他设置

# User/Agent ID (optional - auto-detected if not set)
export MEM0_USER_ID="custom-user-id"      # Defaults to system username
export MEM0_AGENT_ID="custom-agent-id"    # Defaults to workspace name
export MEM0_RUN_ID="session-123"          # Optional: session partitioning

# Performance
export MEM0_INFER_DEFAULT="true"          # LLM inference for fact extraction
export MEM0_MIN_RELEVANCE_SCORE="0.7"     # Search result threshold (0.0-1.0)

# Response Optimization (v1.3.0+)
export MEM0_VERBOSE="false"               # Compact responses (default) vs verbose
export MEM0_MAX_RELATIONS="20"            # Max graph relations in compact mode

# Nomic embeddings (Ollama only)
export NOMIC_USE_PREFIXES="true"          # Improves search accuracy

响应模式(v1.3.0+):

  • 紧凑型(默认):仅返回基本字段(id、内存、元数据、分数)。每个内存的令牌使用量减少约55%。
  • 冗长的:返回所有字段,包括哈希、时间戳、user_id、agent_id等。
  • 图形关系:在两种模式下都保留,在紧凑模式下截断为20,以防止令牌膨胀
  • 每次通话控制 verbose 参数或全局 MEM0_VERBOSE 环境变量。

可用工具

核心业务

工具 说明
store_memory 使用可选元数据和推理控制存储内存
search_memories 具有相关性过滤的语义搜索
list_memories 列出所有带分页的内存
get_memory 按ID检索特定内存
get_recent_memories 获取最近添加/更新的记忆

高级操作

工具 说明
update_memory 直接更新现有内存(无LLM处理)
search_by_metadata 按元数据字段(类型、优先级、状态)过滤内存
get_memory_history 查看内存的更改历史记录
get_memory_stats 获取内存使用统计信息

批量操作

工具 说明
delete_memory 删除单个内存(永久)
delete_all_memories 删除作用域的所有内存(永久)
bulk_delete_memories 通过过滤器删除多个内存(支持模拟运行)

导入/导出

工具 说明
export_memories 导出为JSON或Markdown格式
import_memories 从JSON导出导入内存
ingest_documents 将PDF、DOCX、MD、TXT文件作为知识库

公用事业

工具 说明
health_check 验证后端连接
reset_memory 重置整个内存存储(破坏性)
setup_steering 创建Kiro内存优先导向文件

有关详细的参数文档,请参阅MCP客户端中的工具说明。

用法示例

基本内存操作

# Store a memory
store_memory(
    content="User prefers React over Vue for frontend development",
    metadata={"type": "preference", "priority": "high"}
)

# Search memories
search_memories(query="React preferences", limit=5)

# Get recent memories
get_recent_memories(days=7, limit=10)

# Filter by metadata
search_by_metadata(type="preference", priority="high")

文件摄入

# Ingest single file
ingest_documents(path="/path/to/manual.pdf")

# Ingest directory recursively
ingest_documents(
    path="/path/to/docs",
    recursive=True,
    chunk_size=2048,
    chunk_overlap=400,
    file_metadata={"type": "documentation", "version": "2.0"}
)

# Search ingested documents
search_memories(query="how to configure authentication")

会话分区

# Store memory for specific session
store_memory(
    content="Current task: Implementing user authentication",
    run_id="session-123",
    metadata={"type": "task", "status": "in_progress"}
)

# Search within session
search_memories(query="authentication", run_id="session-123")

# Clean up session
delete_all_memories(run_id="session-123")

性能优化

# Fast storage (no LLM inference)
store_memory(
    content="Completed: API refactoring - 30% faster response times",
    metadata={"type": "task_completion"},
    infer=False  # 5-10x faster
)

# Smart storage (with deduplication)
store_memory(
    content="User mentioned they prefer TypeScript for type safety",
    metadata={"type": "preference"},
    infer=True  # Extracts facts, prevents duplicates
)

# Compact response (default - saves tokens)
search_memories(query="React preferences", limit=5)
# Returns: {"memories": [{"id": "...", "memory": "...", "metadata": {...}}], "count": 5}

# Verbose response (full details)
search_memories(query="React preferences", limit=5, verbose=True)
# Returns: Full details including hash, timestamps, user_id, agent_id, etc.

性能提示

存储速度:

  • 使用 infer=false 当您不需要重复数据删除时,写入速度可提高5-10倍
  • 使用 infer=true (默认)用于重要信息,以防止重复

响应优化:

  • 使用 verbose=false (默认)每个内存减少55%的令牌
  • 紧凑模式仅返回:id、内存、元数据、分数
  • 在紧凑模式下,图形关系被保留并截断为20
  • 详细模式返回所有字段,包括时间戳、哈希值等。
  • 集 MEM0_VERBOSE=true 全球或使用 verbose 每次调用的参数
  • 配置关系限制 MEM0_MAX_RELATIONS (默认值:20)

搜索优化:

  • FAISS使用L2距离:得分越低=相似度越高
  • 调整 MEM0_MIN_RELEVANCE_SCORE 过滤不太相关的结果
  • 使用元数据过滤进行精确查询

后端选择:

  • FAISS:最适合小于10万内存、单用户、开发
  • Qdrant:最适合元数据密集型查询、生产部署
  • OpenSearch:最适合超过10万个内存,企业级

LLM提供者:

  • 基岩:内置优化,生产就绪,速度最快
  • 奥拉玛:有利于当地发展,注重隐私
  • LM 工作室:具有UI的替代本地选项

高级功能

KuzuDB图形库(实验)

跟踪实体(人、公司、技术)之间的关系以及向量嵌入。看 docs/KUZU_GRAPH_STORE.md 了解详情。

已知限制

  • 亚马逊Nova型号:现在通过bedrock_patch.py完全兼容
  • 元数据筛选:mem0 v1.0.x仅支持隐式AND操作(平面字典)
  • 平台特性:某些功能(custom_categories、expiration_date)仅在Mem0平台中可用

有关故障排除,请参阅 故障排除.md

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 提交拉取请求

看 贡献.md 作为指导方针。

文档

引用

如果您在研究或工作中使用此项目,请引用:

@software{selvam_mem0_agent_memory_2025,
  author = {Selvam, Arunkumar},
  title = {Mem0 Agent Memory - MCP Server},
  url = {https://github.com/arunkumars-mf/mem0-agent-memory},
  version = {1.3.0},
  year = {2025}
}

看 引文.cff 更多格式。

许可证

MIT许可证-请参阅 许可证 了解详情。