跨应用的AI记忆:Tablestore OpenMemory MCP

Mem0是为AI智能体设计的记忆层,提供自我改进、跨应用的个性化AI体验。Tablestore Openmemory MCP基于Mem0,将Tablestore作为稳定、可扩展的记忆中心,为 AI 应用打造一个持久化的记忆系统。

功能介绍

Tablestore Openmemory MCP 包含4MCP 工具:

  • add_memories:更新用户记忆,包括记忆的添加、修改、删除。

  • search_memories:检索用户记忆。

  • list_memories:列举用户所有记忆。

  • delete_all_memories:删除用户所有记忆。

准备工作

部署和连接MCP服务

Tablestore Openmemory MCP支持SSEStdio两种模式。

SSE模式

通过SSE模式部署Tablestore Openmemory MCP服务时,需要准备一台运行 MCP 的服务器,可以使用阿里云ECS。为确保 Python 依赖顺利下载,建议选择中国香港地域。

说明

本文使用的 ECS 实例操作系统为Alibaba Cloud Linux 3.2104 LTS 64位,默认自带的Python3版本为3.6.8,需要升级Python版本。

如何升级ECSPython版本?

此处以Python3.12.11为例进行介绍。

  1. 下载并解压Python。

    wget https://www.python.org/ftp/python/3.12.11/Python-3.12.11.tgz && tar -zxvf Python-3.12.11.tgz
  2. 安装Python所需的依赖。

    sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel xz-devel libffi-devel libuuid-devel libtirpc-devel libnsl2-devel
  3. 配置、编译和安装Python。

    cd Python-3.12.11 && ./configure && make && sudo make install && source ~/.bashrc
  4. 安装完成后,可通过以下命令查看Python版本。

    python3 --version

一、部署MCP服务

使用 uv 工具可以在不安装MCP的情况下直接运行服务。

  1. 安装uv包管理工具。

    pip3 install uv
  2. 配置运行服务需要的环境变量。

    echo "export OPENAI_API_KEY='sk-7*******************************'" >> ~/.bashrc
    echo "export OPENAI_BASE_URL='https://dashscope.aliyuncs.com/compatible-mode/v1'" >> ~/.bashrc
    echo "export TABLESTORE_ENDPOINT='https://k01r********.cn-hangzhou.ots.aliyuncs.com'" >> ~/.bashrc
    echo "export TABLESTORE_INSTANCE_NAME='k01r********'" >> ~/.bashrc
    echo "export TABLESTORE_ACCESS_KEY_ID='LTAI********************'" >> ~/.bashrc
    echo "export TABLESTORE_ACCESS_KEY_SECRET='Jy3H**************************'" >> ~/.bashrc

    配置完成后需要使用 source ~/.bashrc 命令使环境变量生效。环境变量获取方式:

    名称

    说明

    OPENAI_API_KEY

    前往API-Key管理,查看并复制API-KEY,如果没有API-KEY,单击创建API-KEY创建一个新的API-KEY。

    OPENAI_BASE_URL

    https://dashscope.aliyuncs.com/compatible-mode/v1

    TABLESTORE_ENDPOINT

    前往表格存储控制台,在实例列表中单击实例别名进入实例管理页面,查看并复制实例名称和实例访问地址。如果使用ECS,根据地域情况选择访问地址:

    • ECS与表格存储在同一地域:选择公网地址或者VPC地址。

    • ECS与表格存储不在同一地域:选择公网地址。

    重要

    表格存储新创建的实例默认不开启公网访问,如果要使用公网访问地址,务必在表格存储控制台实例管理网络管理页签中允许网络类型选中公网,并单击设置保存配置。

    TABLESTORE_INSTANCE_NAME

    TABLESTORE_ACCESS_KEY_ID

    阿里云账号或RAM用户的AccessKey ID。

    TABLESTORE_ACCESS_KEY_SECRET

    阿里云账号或RAM用户的AccessKey Secret。

    其它可选的环境变量

    名称

    说明

    默认值

    SERVER_HOST

    MCP 服务的运行地址。

    0.0.0.0

    SERVER_PORT

    MCP 服务的运行端口。

    8765

    TABLESTORE_STS_TOKEN

    阿里云STS临时访问凭证

    TABLESTORE_VECTOR_DIMENSION

    向量维度。

    1536

    LLM_MODEL

    大语言模型名称。

    qwen-plus

    EMBEDDER_MODEL

    Embedding模型名称

    text-embedding-v4

    TOOL_ADD_MEMORIES_DESCRIPTION

    添加记忆工具的描述文字。

    Add a new memory. This method is called everytime the user informs anything about themselves, their preferences, or anything that has any relevant information which can be useful in the future conversation. This can also be called when the user asks you to remember something.

    TOOL_SEARCH_MEMORIES_DESCRIPTION

    检索记忆工具的描述文字。

    Search through stored memories. This method is called EVERYTIME the user asks anything.

    TOOL_LIST_MEMORIES_DESCRIPTION

    列举记忆工具的描述文字。

    List all memories in the user's memory

    TOOL_DELETE_ALL_MEMORIES_DESCRIPTION

    删除记忆工具的描述文字。

    Delete all memories in the user's memory

  3. 启动MCP服务。

    uvx tablestore-openmemory-mcp --transport=sse

    首次运行需要下载相关依赖,请耐心等待。如遇网络问题导致下载失败,重新执行命令即可。启动后,MCP 服务将在表格存储实例中自动创建所需的数据表及多元索引。当出现以下日志时,表示服务已启动成功。

    INFO:     Started server process [43283]
    INFO:     Waiting for application startup.
    INFO:     Application startup complete.
    INFO:     Uvicorn running on http://0.0.0.0:8765 (Press CTRL+C to quit)

二、连接MCP服务

连接URL格式:http://server_ip:port/mcp/client_name/sse/user_id

  • server_ip:运行MCP服务的服务器IP地址。

  • port:MCP服务运行端口,默认为8765。

    重要

    访问ECS上的MCP服务,需要在ECS安全组的入方向规则中添加安全组规则,放行MCP服务使用的TCP端口(默认为8765)。

  • client_nameuser_id:自定义配置,用于隔离不同用户的记忆。

Cline

按照下图所示填写Remote Servers信息,或者单击 Edit Configuration 后在MCP配置文件 cline_mcp_settings.json 中添加MCP服务启动信息。

image

Cline连接配置示例

{
  "mcpServers": {
    "tablestore-openmemory": {
      "autoApprove": [
        "add_memories",
        "search_memories",
        "list_memories",
        "delete_all_memories"
      ],
      "disabled": false,
      "timeout": 60,
      "type": "sse",
      "url": "http://47.******.88:8765/mcp/mem0/sse/user0"
    }
  }
}

配置 autoApprove 将自动允许 MCP 工具的调用,无需手动确认。如果不需要自动触发工具调用,删除 autoApprove 字段即可。

配置完成后,在Cline对话窗口开启MCP服务。

image

Cherry Studio

Cherry Studio设置 > MCP 设置菜单中单击添加服务器 > 快速创建,填写以下内容:

  • 名称:MCP服务名称,可自定义。

  • 类型:选择服务器发送事件(sse)

  • URL:按上述URL格式进行填写。

MCP服务器添加完成后,在对话窗口开启MCP服务。

image

Stdio模式

此处介绍如何在ClineCherry Studio中部署Tablestore Openmemory MCP服务。

Cline

ClineMCP配置文件cline_mcp_settings.json中配置Tablestore Openmemory MCP启动信息,示例配置如下所示:

{
  "mcpServers": {
    "tablestore-openmemory-mcp": {
      "autoApprove": [
        "add_memories",
        "list_memories",
        "delete_all_memories",
        "search_memories"
      ],
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uvx",
      "args": [
        "tablestore-openmemory-mcp",
        "--transport",
        "stdio"
      ],
      "env": {
        "OPENAI_API_KEY": "sk-7*******************************",
        "OPENAI_BASE_URL": "https://dashscope.aliyuncs.com/compatible-mode/v1",
        "TABLESTORE_ENDPOINT": "https://k01r********.cn-hangzhou.ots.aliyuncs.com",
        "TABLESTORE_INSTANCE_NAME": "k01r********",
        "TABLESTORE_ACCESS_KEY_ID": "LTAI********************",
        "TABLESTORE_ACCESS_KEY_SECRET": "Jy3H**************************"
      }
    }
  }
}

env 环境变量配置说明:

名称

说明

OPENAI_API_KEY

前往API-Key管理,查看并复制API-KEY,如果没有API-KEY,单击创建API-KEY创建一个新的API-KEY。

OPENAI_BASE_URL

https://dashscope.aliyuncs.com/compatible-mode/v1

TABLESTORE_ENDPOINT

前往表格存储控制台,在实例列表中单击实例别名进入实例管理页面,查看并复制实例名称和实例访问地址。如果使用ECS,根据地域情况选择访问地址:

  • ECS与表格存储在同一地域:选择公网地址或者VPC地址。

  • ECS与表格存储不在同一地域:选择公网地址。

重要

表格存储新创建的实例默认不开启公网访问,如果要使用公网访问地址,务必在表格存储控制台实例管理网络管理页签中允许网络类型选中公网,并单击设置保存配置。

TABLESTORE_INSTANCE_NAME

TABLESTORE_ACCESS_KEY_ID

阿里云账号或RAM用户的AccessKey ID。

TABLESTORE_ACCESS_KEY_SECRET

阿里云账号或RAM用户的AccessKey Secret。

其它可选的环境变量

名称

说明

默认值

SERVER_HOST

MCP 服务的运行地址。

0.0.0.0

SERVER_PORT

MCP 服务的运行端口。

8765

TABLESTORE_STS_TOKEN

阿里云STS临时访问凭证

TABLESTORE_VECTOR_DIMENSION

向量维度。

1536

LLM_MODEL

大语言模型名称。

qwen-plus

EMBEDDER_MODEL

Embedding模型名称

text-embedding-v4

TOOL_ADD_MEMORIES_DESCRIPTION

添加记忆工具的描述文字。

Add a new memory. This method is called everytime the user informs anything about themselves, their preferences, or anything that has any relevant information which can be useful in the future conversation. This can also be called when the user asks you to remember something.

TOOL_SEARCH_MEMORIES_DESCRIPTION

检索记忆工具的描述文字。

Search through stored memories. This method is called EVERYTIME the user asks anything.

TOOL_LIST_MEMORIES_DESCRIPTION

列举记忆工具的描述文字。

List all memories in the user's memory

TOOL_DELETE_ALL_MEMORIES_DESCRIPTION

删除记忆工具的描述文字。

Delete all memories in the user's memory

MCP_STDIO_USER_ID

用户ID和客户端名称,可自定义,用于隔离不同用户的记忆。

stdio_default_user

MCP_STDIO_CLIENT_NAME

stdio_default_client

配置完成后,在Cline对话窗口开启MCP服务。

image

Cherry Studio

Cherry Studio设置 > MCP 设置菜单中单击添加服务器 > 快速创建,填写以下内容:

  • 名称:MCP服务名称,可自定义。

  • 类型:选择标准输入/输出(stdio)

  • 命令:启动命令,填写 uvx

  • 参数:启动参数,填写以下内容。

    tablestore-openmemory-mcp
    --transport
    stdio
  • 环境变量:启动需要的环境变量,按以下示例和说明进行填写。

    OPENAI_API_KEY=sk-7*******************************
    OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
    TABLESTORE_ENDPOINT=https://k01r********.cn-hangzhou.ots.aliyuncs.com
    TABLESTORE_INSTANCE_NAME=k01r********
    TABLESTORE_ACCESS_KEY_ID=LTAI********************
    TABLESTORE_ACCESS_KEY_SECRET=Jy3H**************************

    环境变量获取方式:

    名称

    说明

    OPENAI_API_KEY

    前往API-Key管理,查看并复制API-KEY,如果没有API-KEY,单击创建API-KEY创建一个新的API-KEY。

    OPENAI_BASE_URL

    https://dashscope.aliyuncs.com/compatible-mode/v1

    TABLESTORE_ENDPOINT

    前往表格存储控制台,在实例列表中单击实例别名进入实例管理页面,查看并复制实例名称和实例访问地址。如果使用ECS,根据地域情况选择访问地址:

    • ECS与表格存储在同一地域:选择公网地址或者VPC地址。

    • ECS与表格存储不在同一地域:选择公网地址。

    重要

    表格存储新创建的实例默认不开启公网访问,如果要使用公网访问地址,务必在表格存储控制台实例管理网络管理页签中允许网络类型选中公网,并单击设置保存配置。

    TABLESTORE_INSTANCE_NAME

    TABLESTORE_ACCESS_KEY_ID

    阿里云账号或RAM用户的AccessKey ID。

    TABLESTORE_ACCESS_KEY_SECRET

    阿里云账号或RAM用户的AccessKey Secret。

其它可选的环境变量

名称

说明

默认值

SERVER_HOST

MCP 服务的运行地址。

0.0.0.0

SERVER_PORT

MCP 服务的运行端口。

8765

TABLESTORE_STS_TOKEN

阿里云STS临时访问凭证

TABLESTORE_VECTOR_DIMENSION

向量维度。

1536

LLM_MODEL

大语言模型名称。

qwen-plus

EMBEDDER_MODEL

Embedding模型名称

text-embedding-v4

TOOL_ADD_MEMORIES_DESCRIPTION

添加记忆工具的描述文字。

Add a new memory. This method is called everytime the user informs anything about themselves, their preferences, or anything that has any relevant information which can be useful in the future conversation. This can also be called when the user asks you to remember something.

TOOL_SEARCH_MEMORIES_DESCRIPTION

检索记忆工具的描述文字。

Search through stored memories. This method is called EVERYTIME the user asks anything.

TOOL_LIST_MEMORIES_DESCRIPTION

列举记忆工具的描述文字。

List all memories in the user's memory

TOOL_DELETE_ALL_MEMORIES_DESCRIPTION

删除记忆工具的描述文字。

Delete all memories in the user's memory

MCP_STDIO_USER_ID

用户ID和客户端名称,可自定义,用于隔离不同用户的记忆。

stdio_default_user

MCP_STDIO_CLIENT_NAME

stdio_default_client

MCP服务器添加完成后,在对话窗口开启MCP服务。

image

验证持久化记忆

Tablestore Openmemory MCP 将记忆持久化,存储在Tablestore中,并且可以在与AI应用交互过程中对记忆进行添加、检索、更新和删除,此处以代码偏好为例进行演示。

  1. 添加记忆信息:在Cline中进行对话,让模型调用工具记忆代码偏好。

    调用工具记忆以下信息:我是一名程序员,我需要你来辅助我写代码,我比较擅长编写JavaPython相关代码,习惯将函数、类名使用大驼峰命名,变量使用小驼峰命名,常量全部采用大写字母加下划线进行命名。

    大模型会调用 add_memories 工具将记忆存储到Tablestoremem0数据表中。

    image

    可以在表格存储控制台查看记忆数据。

    image

  2. 检索记忆信息:在Cline中进行对话,让模型调用工具检索代码偏好。为了防止大模型从对话上下文中得知相关信息,重新启动一个会话进行提问。

    我喜欢什么样的变量命名方式

    大模型会调用 search_memories 工具检索Tablestore中存储的相关记忆并提供准确回答。

    image

  3. 更新记忆信息:在Cline中进行对话,让模型调用工具更新代码偏好。

    请记忆,我现在喜欢使用小写字母加下划线命名变量

    大模型会调用 add_memories 工具检索Tablestore中存储的相关记忆并进行更新。

    image

    可以在表格存储控制台查看更新后的记忆数据。

    image

验证跨平台记忆

由于记忆被存储在表格存储(Tablestore),使得记忆从应用和模型中分离,可以随意地切换应用、模型对相同的记忆进行访问。此处以CIineCherry Studio为例,在 Cline 中添加个人的个性信息,然后在另外一个 AI 客户端 CherryStudio 中生成个性化的出行方案。

  1. 添加个性信息:在Cline中进行对话,让模型调用工具记忆个人的个性信息,如住址、爱好等。

    记忆以下信息:我现在住在杭州,喜欢吃辣的东西,同时我爱看悬疑小说和电影,我总是喜欢尝试新品,尽管老踩雷。

    大模型会调用 add_memories 工具将记忆存储到Tablestoremem0数据表中。

    image

    可以在表格存储控制台查看记忆数据。

    image

  2. 跨平台访问记忆:在Cherry Studio中进行对话,让模型根据记忆生成个性化的周末出行计划。

    根据记忆,帮我制定一份周末外出游玩计划

    大模型会调用 search_memories 工具检索Tablestore中存储的相关记忆并根据记忆生成计划。

    image

应用到生产

Tablestore Openmemory MCP应用于生产环境时,需考虑以下因素以确保服务的稳定性、安全性和可扩展性。

部署架构优化

通过多台ECS实例部署MCP服务并使用负载均衡SLB实现实例间的负载均衡,或者使用容器服务ACK计算巢服务替代单台ECS部署,不仅提供自动扩缩容能力,还能根据负载动态调整资源,既能应对突发流量,又能节省闲时成本。

安全加固

为保障生产数据安全,应使用RAM用户并遵循最小权限原则,授权其仅访问表格存储特定实例。同时,通过配置安全组IP白名单来限制访问来源,或部署API网关进行统一的认证、流控与日志记录。

运维和监控

为保障服务健康,应使用云监控ECS实例或容器设置关键指标(如CPU、内存)的监控和告警。同时,建议将运行日志统一采集到日志服务SLS,以便进行快速的故障排查、性能分析和业务洞察。

资源清理

为避免产生不必要的费用,在完成方案体验后,请按照以下步骤清理所有相关资源:

  1. 释放 ECS 实例:前往ECS控制台,找到目标实例,单击全部操作 > 释放,按页面指示释放实例。

  2. 删除 Tablestore 数据表:前往表格存储控制台,在实例列表中单击目标实例别名, 在实例管理页面先单击目标数据表右侧的索引管理删除多元索引,然后再单击目标数据表右侧的 > 删除,删除数据表。

  3. 删除 Tablestore 实例:前往表格存储控制台,在实例列表中单击目标实例操作列的释放 > 释放,按页面指示释放实例。