开源MCP服务器

mem0-open-mcp是一个开源的自托管MCP服务器,支持本地LLM、多向量存储和无Docker部署,适用于需要私有化部署和灵活配置的场景。

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

使用说明

mem0打开mcp

开源MCP服务器 mem0 — 本地LLM,自托管,无Docker.

创建是因为官方 mem0-mcp 配置对我的设置不起作用。

特性

  • 本地LLMs:Ollama(推荐)、LMStudio*或任何与OpenAI兼容的API
  • 自托管:您的数据保留在您的基础设施上
  • Docker免费:简单 pip install +CLI
  • 灵活的:支持环境变量的YAML配置
  • 多个矢量存储:Qdrant、Chroma、Pinecone等

*LMStudio需要JSON模式兼容的模型

快速开始

安装

pip install mem0-open-mcp

或者从源代码安装:

git clone https://github.com/wonseoko/mem0-open-mcp.git
cd mem0-open-mcp
pip install -e .

用法

# Create default config
mem0-open-mcp init

# Interactive configuration wizard
mem0-open-mcp configure

# Test configuration (recommended for initial setup)
mem0-open-mcp test

# Start the server
mem0-open-mcp serve

# With options
mem0-open-mcp serve --port 8765 --user-id alice

这 test 命令在不启动服务器的情况下验证您的配置:

  • 检查矢量存储、LLM和嵌入器连接
  • 执行实际的内存添加/搜索操作
  • 自动清理测试数据

模式

stdio模式(适用于mcp代理或克劳德桌面)

与mcp代理或Claude Desktop集成时,在stdio模式下运行服务器:

mem0-open-mcp stdio
mem0-open-mcp stdio --config ./config.yaml

在以下情况下使用此模式:

  • 通过mcp代理运行
  • Claude Desktop子流程集成
  • 按需生成流程
  • 演出:针对v0.2.1+进行了优化,支持轻量级管理器启动

服务模式(HTTP/SSE服务器)

为远程访问或多个并发客户端运行持久HTTP服务器:

mem0-open-mcp serve --port 8765

在以下情况下使用此模式:

  • 需要远程访问
  • 多个并发客户端
  • 首选始终在服务器上
  • 需要自定义端口配置

mcp代理集成

使用mcp代理在工具和Claude Desktop之间路由mcp协议。配置您的 mcp-servers.json:

{
  "mcpServers": {
    "mem0": {
      "command": "mem0-open-mcp",
      "args": ["stdio"]
    }
  }
}

或者使用自定义配置:

{
  "mcpServers": {
    "mem0": {
      "command": "mem0-open-mcp",
      "args": ["stdio", "--config", "/path/to/config.yaml"]
    }
  }
}

stdio模式通过stdin/stdout进行通信,使其成为进程生成集成的理想选择。

更新命令

使用自我更新功能使mem0-open-mcp保持最新状态:

# Check for available updates
mem0-open-mcp update --check

# Force update to latest version
mem0-open-mcp update --force

# Update and exit on success
mem0-open-mcp update

选项:

  • --check:仅检查可用更新,不安装
  • --force:强制重新安装,即使已经是最新版本

配置

创建 mem0-open-mcp.yaml:

server:
  host: "0.0.0.0"
  port: 8765
  user_id: "default"

llm:
  provider: "ollama"
  config:
    model: "llama3.2"
    base_url: "http://localhost:11434"

embedder:
  provider: "ollama"
  config:
    model: "nomic-embed-text"
    base_url: "http://localhost:11434"
    embedding_dims: 768

vector_store:
  provider: "qdrant"
  config:
    collection_name: "mem0_memories"
    host: "localhost"
    port: 6333
    embedding_model_dims: 768

与LMStudio合作

⚠️ 备注:LMStudio需要一个支持 response_format: json_object. mem0使用结构化JSON输出进行内存提取。如果你得到 response_format 错误, 请改用Ollama,或在LMStudio中选择一个支持JSON模式的模型。

llm:
  provider: "openai"
  config:
    model: "your-model-name"
    base_url: "http://localhost:1234/v1"

embedder:
  provider: "openai"
  config:
    model: "your-embedding-model"
    base_url: "http://localhost:1234/v1"

MCP集成

将您的MCP客户端连接到:

http://localhost:8765/mcp/<client-name>/sse/<user-id>

克劳德桌面版

{
  "mcpServers": {
    "mem0": {
      "url": "http://localhost:8765/mcp/claude/sse/default"
    }
  }
}

可用的MCP工具

工具 说明
add_memories 存储文本中的新记忆
search_memory 按查询搜索记忆
list_memories 列出所有用户记忆
get_memory 按ID获取特定内存
delete_memories 按ID删除记忆
delete_all_memories 删除所有用户记忆

API终点

端点 方法 描述
/health GET 健康检查
/api/v1/status GET 服务器状态
/api/v1/config GET/PUT 配置
/api/v1/memories GET/POST/DELETE 内存操作
/api/v1/memories/search POST 搜索记忆

需求

  • Python 3.10+
  • 矢量存储(推荐Qdrant)
  • LLM服务器(Ollama、LMStudio等)

性能优化

stdio模式优化(v0.2.1+)

stdio模式针对性能进行了优化:

  • 轻量级管理器:与HTTP服务器相比,降低了启动开销
  • 按需产卵:流程仅在MCP请求需要时生成
  • 无服务器开销:消除了HTTP/SSE连接管理
  • Claude Desktop的理想选择:通过mcp代理集成时,资源占用最小

在Claude Desktop或mcp代理集成中使用stdio模式以获得最佳性能。

性能提示

  • 使用Qdrant矢量存储以获得最佳性能(推荐)
  • 保持嵌入尺寸一致(768或1536)
  • 对于大型内存操作,请在配置中增加向量存储批处理大小
  • 使用本地型号监控Olama的性能(建议使用llama3.2进行速度监控)

图形存储(实验)

图存储支持用于实体之间关系提取的知识图功能。

配置

graph_store:
  provider: "neo4j"
  config:
    url: "bolt://localhost:7687"
    username: "neo4j"
    password: "your-password"

安装

pip install mem0-open-mcp[neo4j]
# or
pip install mem0-open-mcp[kuzu]

局限性

⚠️ 重要:图形存储需要具有正确LLM的LLM 工具调用 支持。

  • OpenAI模型:完全支持(建议用于图形存储)
  • Olama模型:支持有限-大多数模型(llama3.2、llama3.1)不能准确遵循工具模式,导致图关系为空

如果您需要使用本地LLM的图形功能,请考虑使用 graph_store.llm 设置为仅为图形操作指定不同的LLM提供程序。

# Example: Use OpenAI for graph, Ollama for everything else
llm:
  provider: "ollama"
  config:
    model: "llama3.2"

graph_store:
  provider: "neo4j"
  config:
    url: "bolt://localhost:7687"
    username: "neo4j"
    password: "password"
  llm:
    provider: "openai"
    config:
      model: "gpt-4o-mini"

许可证

Apache 2.0