mcpField
M
mem0-mcp-for-pm

mem0-mcp-for-pm

本地服务
pypi.org记忆与知识633 周前更新

关于 mem0-mcp-for-pm

mem0-mcp-for-pm 是连接 MCP 主机与 mem0 云服务的 MCP 服务,用于结构化存储和语义检索项目记忆。它面向项目管理信息,并采用 TOML 格式条目。

主要功能

  1. 01存储和检索项目记忆
  2. 02语义搜索项目信息
  3. 03更新和删除项目记忆
  4. 04使用 TOML 结构化条目
  5. 05配置标准错误或文件日志

适用场景

  1. 01记录项目状态和任务详情
  2. 02搜索已存储的项目决策和更新
  3. 03按项目上下文归组相关记忆

MCP 相关

它通过基于 stdio 的 MCP 工具连接 mem0 云服务,支持添加、检索、搜索、更新和删除项目记忆。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mem0-mcp-for-pm": {
"command": "uvx",
"args": [
"mem0-mcp-for-pm"
],
"env": {
"MEM0_API_KEY": "<MEM0_API_KEY>"
}
}
}
}
启动命令uvx mem0-mcp-for-pm
需要配置的环境变量
MEM0_API_KEY密钥

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimem0-mcp-for-pm

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

用于项目管理的 mem0 MCP 服务

用于项目管理的 mem0 MCP 服务

版本:0.3.3

mem0 MCP 服务连接 MCP Host 应用与 mem0 云服务,实现结构化项目记忆管理,并支持对项目相关信息进行语义搜索。


发行说明

v0.3.3
  • 修复:get_all_project_memories 和 search_project_memories 现在可与 mem0 v2 API 正常配合使用。
    • mem0 v2 API 将 user_id 参数替换为必需的 filters 对象:{"AND": [{"user_id": {"in": ["..."]}}]}。
    • 直接传入 user_id 现在会导致 "Filters are required and cannot be empty" 错误。本版本会自动转换该参数。
v0.3.1 和 v0.3.2
  • 修复:调整消息格式以适配 mem0 API,使“添加项目记忆”工具正常工作。
  • 在 MCP Host 配置示例中添加版本指定。(用于排查缓存问题)
v0.3.0
  • 修复:由于 mem0 云服务更改了数据处理方式,相应的数据处理方式也进行了更改。
  • 将基于 JavaScript 对象的模板和指南改为基于 TOML 的模板和指南,后者更便于 mem0 云服务提取数据。
  • 添加日志功能(详情请参阅 MCP Host 配置部分)。
v0.2.0
  • 从基于 SSE 的调用切换为基于 stdio 的调用,以提高与 MCP Host 的兼容性
  • 添加对基于 pipx 的安装和运行的支持
  • 通过 pyproject.toml 脚本入口简化部署

功能

  • 项目记忆存储和检索
  • 项目信息语义搜索
  • 结构化项目管理数据处理
  • 全面测试的基于 stdio 的 MCP 服务工具
  • 灵活的日志记录:默认输出到 stderr,也可通过 --logfile 输出到文件
  • 通过兼容 pipx 的接口智能调用 CLI

MCP Host 配置

运行此 MCP 服务时,必须通过命令行参数明确指定日志输出模式,以及(启用日志时)日志文件的绝对路径。

  • --log=off:禁用所有日志(不写入任何日志)
  • --log=on --logfile=/absolute/path/to/logfile.log:启用日志,并将日志写入指定的绝对文件路径
  • 启用日志时,必须提供这两个参数。如果缺少任一参数、路径不是绝对路径或提供了无效值,服务将报错退出。
示例:禁用日志
"mem0": {
  "command": "pipx",
  "args": ["run", "mem0-mcp-for-pm", "--log=off"],
  "env": {
    "MEM0_API_KEY": "{apikey}"
  }
}
示例:启用日志(必须提供日志文件绝对路径)
"mem0": {
  "command": "pipx",
  "args": ["run", "mem0-mcp-for-pm", "--log=on", "--logfile=/workspace/logs/mem0-mcp-server.log"],
  "env": {
    "MEM0_API_KEY": "{apikey}"
  }
}

注意:

  • 启用日志时,日志只会写入指定的绝对文件路径。使用相对路径或省略 --logfile 都会导致错误。
  • 禁用日志时,不会输出任何日志。
  • 如果缺少必需参数或参数无效,服务将无法启动,并会打印错误消息。
  • 日志文件必须可供 MCP 服务进程访问和写入。
  • 如果此服务无法正常运行,可能是因为缓存了旧版本的 mem0-mcp-for-pm。请尝试通过以下设置,使用 mem0-mcp-for-pm 的最新版本(将 x.y.z 替换为最新版本)运行。

故障排除:pipx 缓存问题

通过 pipx 安装时,实际进程可能从 ~/.local/share/pipx/venvs/ 而非 ~/.cache/pipx/ 下的缓存环境运行。在这种情况下,使用 pipx install --force 重新安装会更新 venvs 目录,但运行中的进程仍会使用旧缓存中的代码。

症状
  • 你使用 pipx install --force . 重新安装后,行为仍未改变。
  • ps aux | grep mem0 显示进程从 ~/.cache/pipx/<hash>/bin/python 运行。
解决方法

选项 1:在 MCP Host 配置中指定固定版本(推荐)

显式固定版本,以便 pipx 每次都从 PyPI 获取正确的版本:

"mem0": {
  "command": "pipx",
  "args": ["run", "mem0-mcp-for-pm==0.3.3", "--log=off"],
  "env": {
    "MEM0_API_KEY": "{apikey}"
  }
}

选项 2:手动清除 pipx 缓存

# Find and remove the stale cache directory
ls ~/.cache/pipx/
rm -rf ~/.cache/pipx/<hash-directory>/

# Then reinstall
pipx install --force mem0-mcp-for-pm

选项 3:终止正在运行的进程

重新安装后,终止旧进程,以便 MCP Host(例如 VS Code)使用新二进制文件重新启动它:

kill $(ps aux | grep mem0-mcp-for-pm | grep -v grep | awk '{print $2}')

然后重新加载或重启 MCP Host 应用程序。

"mem0": {
  "command": "pipx",
  "args": ["run", "mem0-mcp-for-pm==x.y.z", "--log=off"],
  "env": {
    "MEM0_API_KEY": "{apikey}"
  }
}

工具

  • add_project_memory
  • get_all_project_memories
  • search_project_memories
  • update_project_memory
  • delete_project_memory
  • delete_all_project_memories

所有工具均可通过基于 stdio 的 MCP 协议使用。


日志记录

  • 默认:stderr
  • 可选:--logfile /path/to/logfile.log

许可证

请参阅 LICENSE 文件。

技术细节

此分支的独特之处在于,MCP Host 与 mem0 之间采用结构化格式,预期使用 TOML 等编码格式。 请务必设置自定义指令,以便更好地处理。

自定义指令

为了让 mem0 更好地满足项目管理需求,此分支为 AI 设置了以下指令。

对于 mem0
  • 检查源代码。
对于 MCP Host

要在 mem0 中注册项目信息,所有条目始终使用 TOML 格式。
请遵循以下指南,以确保 AI 能够更有效地提取信息、进行搜索,并支持项目管理:

1. 使用 TOML 作为基础格式
  • 所有项目记忆条目都必须以 TOML 格式的字符串提供。
  • 至少始终包含以下顶层字段:
    • category(例如“任务管理”“项目状态”等)
    • project(项目名称)
    • timestamp(ISO 8601 格式,例如 "2025-04-29T16:00:00+09:00")
2. 推荐模板

以下是适用于常见项目管理场景的 TOML 模板。
请根据需要进行调整,同时保持结构和元数据一致,以便更好地搜索和提取信息。

项目状态示例

category = "Project Status"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
name = "Project Name"
purpose = "Project Purpose"
version = "1.2.0"
phase = "development"
completionLevel = 0.65
milestones = ["Planning", "Development"]
currentFocus = ["Implementing Feature X", "Optimizing Component Y"]

[metadata]
type = "status"
priority = "high"
tags = ["backend", "release"]

任务管理示例

category = "Task Management"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"

[[tasks]]
description = "Implement Feature X"
status = "in-progress"
deadline = "2025-05-15"
assignee = "Team A"
dependencies = ["Component Y"]

[metadata]
type = "task"
priority = "high"
tags = ["frontend", "authentication"]
3. 使用 run_id 管理上下文
  • 使用 run_id 参数对相关条目进行逻辑分组。
  • 推荐格式:
    project:project-name:category:subcategory
  • 示例:
    run_id = "project:member-system:feature:authentication"
    
4. 元数据用法
  • 始终添加 [metadata] TOML 表,以增强搜索和筛选能力。
  • 示例:
    [metadata]
    type = "task"
    priority = "high"
    tags = ["frontend"]
    
5. 信息生命周期
  • 使用 immutable = true 防止更新。
  • 使用 expiration_date = "YYYY-MM-DD" 设置过期时间。
6. 最佳实践
  • 保持字段名称和结构一致。
  • 始终包含 project 和 timestamp。
  • 使用清晰、具体的标签和元数据。
  • 如有需要,可利用 TOML 注释提供面向人类或 AI 的提示。

遵循这些基于 TOML 的指南,可以最大限度地提升 mem0 在项目记忆提取和管理方面的效果。
如需了解更高级的用例,请参阅源代码和服务端自定义指令。

  • 以下仅为示例,请自行寻找最适合的方式!!

高效项目记忆指南(增强版)

本指南介绍如何使用 mem0 高效管理项目信息的策略和模板。目标是通过结构化模板和元数据管理,提升项目数据的可搜索性和可复用性。

信息结构与模板

mem0 可以有效管理以下类型的信息。使用结构化模板有助于提升可搜索性和可复用性。请注意,以下模板仅供参考,应根据具体项目需求进行调整。

1. 项目状态管理

模板:

category = "Project Status"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
name = "Project Name"
purpose = "Project Purpose"
version = "1.2.0"
phase = "development"
completionLevel = 0.65
milestones = ["Planning Phase", "Development Phase"]
currentFocus = ["Implementing Feature X", "Optimizing Component Y"]
risks = ["Concerns about API stability", "Resource shortage"]
2. 任务管理

模板:

category = "Task Management"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"

[[tasks]]
description = "Implement Feature X"
status = "in-progress"
deadline = "2025-03-15"
assignee = "Team A"
dependencies = ["Component Y"]

[[tasks]]
description = "Setup Development Environment"
status = "completed"
3. 会议摘要

模板:

category = "Meeting Summary"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
title = "Weekly Progress Meeting"
date = "2025-03-23"
attendees = ["Sato", "Suzuki", "Tanaka"]
topics = ["Progress Report", "Risk Management", "Next Week's Plan"]
decisions = ["Approve additional resource allocation", "Delay release date by one week"]
[[actionItems]]
description = "Procedure for adding resources"
assignee = "Sato"
dueDate = "2025-03-25"
[[actionItems]]
description = "Revise test plan"
assignee = "Suzuki"
dueDate = "2025-03-24"

高效的信息管理技巧

1. 上下文管理(run_id)

使用 mem0 的 run_id 参数,可以对相关信息进行逻辑分组。这有助于保持特定的对话流程或项目上下文。

推荐格式:

project:project-name:category:subcategory

使用示例:

run_id = "project:member-system:feature:authentication"
2. 有效使用元数据

使用元数据可以提升信息的可搜索性。我们建议使用以下架构:

[metadata]
type = "meeting|task|decision|status|risk"
priority = "high|medium|low"
tags = ["frontend", "backend", "design"]
status = "pending|in-progress|completed"
3. 信息生命周期管理

使用 immutable 和 expiration_date 参数,可以管理信息的生命周期。

使用示例:

immutable = true
expiration_date = "2025-06-30"

实用使用模式

1. 冲刺管理示例
category = "Project Status"
project = "member-system"
timestamp = "2025-05-01T10:00:00+09:00"
sprint = "Sprint-2025-05"
duration = "2 weeks"
goals = ["Implement authentication feature", "Improve UI"]
[[tasks]]
description = "Implement login screen"
assignee = "Tanaka"
estimate = "3 days"
[[tasks]]
description = "API integration"
assignee = "Sato"
estimate = "2 days"
[metadata]
type = "status"
tags = ["sprint-planning"]
category = "Project Status"
project = "member-system"
timestamp = "2025-05-08T15:00:00+09:00"
sprint = "Sprint-2025-05"
completionLevel = 0.4
[[status]]
task = "Implement login screen"
progress = 0.7
status = "in-progress"
[[status]]
task = "API integration"
progress = 0.2
status = "in-progress"
blockers = ["Change in API response specification"]
[metadata]
type = "status"
tags = ["sprint-progress"]
2. 风险管理示例
category = "Risk Management"
project = "member-system"
timestamp = "2025-05-03T11:00:00+09:00"
[[risks]]
description = "Concerns about external API stability"
impact = "High"
probability = "Medium"
mitigation = "Implement fallback mechanism"
owner = "Development Lead"
status = "open"
[metadata]
type = "risk"
priority = "high"
category = "Risk Management"
project = "member-system"
timestamp = "2025-05-10T16:30:00+09:00"
[[risks]]
description = "Concerns about external API stability"
status = "Resolved"
resolution = "Fallback mechanism implementation completed"
[metadata]
type = "risk"
priority = "medium"

要点

  • 标准元数据:始终包含项目名称和时间戳。
  • 数据格式:所有条目均使用 TOML,并包含 [metadata] 表。
  • 上下文管理:使用 run_id 进行分层管理,以保持信息的相关性。
  • 搜索效率:一致的元数据和结构有助于提升搜索效率。

4. 实施策略

为实施上述改进,我们建议采取以下步骤:

  1. 增强 add_project_memory 方法:

    • 更新文档字符串:改进使用示例和参数说明。
    • 错误处理:提供更详细的错误信息。
    • 响应格式:明确说明所用参数。
  2. 更新自定义指令:

    • 丰富模板示例。
    • 明确 run_id 的推荐用法(引入分层结构)。
    • 统一元数据架构。
    • 提供实用的使用示例。

在保持与现有 mem0 MCP 服务函数兼容的同时,这些改进将提升信息管理的易用性和效率。

5. 总结

在保持与现有 mem0 MCP 服务函数兼容的同时,拟议的改进将在以下方面带来价值:

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。