Skip to main content
Glama
tyxiumud

personal-memory-mcp

by tyxiumud

Personal Memory MCP

让 Codex、WorkBuddy 和 DeepSeek Harness 共用一份由你掌管的长期记忆。

本地 SQLite · 标准 MCP · 支持来源与修订追溯 · 不需要模型 API 或向量服务

快速开始 · 三端接入 · 怎么使用 · 工具参考 · 设计说明

它解决什么问题

你在一个 AI 客户端里说明过自己的偏好、长期决定或项目背景,换个客户端又得从头解释。Personal Memory MCP 把这些经过确认的信息存进你自己的本地数据库,让接入同一数据库的客户端按需读取。

每条记忆都可记录来源,并带有适用范围、有效期和修订历史。搜索没有命中时,工具会说明是范围里没有记录,还是关键词没有匹配;宽松检索返回的只是待核对候选。

Codex ────────┐
WorkBuddy ────┼── MCP 工具 ── 同一份 SQLite 记忆库
DSH ──────────┘

Related MCP server: claude-memory-mcp

适合谁

  • 在 Codex、WorkBuddy、DSH 之间切换,希望它们共享个人偏好和长期决定。

  • 想把记忆放在本机,能够查询来源、纠正旧事实、导出备份。

  • 更看重可解释的写入和检索行为,愿意在客户端配置一次 MCP。

如果你希望“安装后自动读取所有聊天、自动整理成记忆”,这里目前没有后台会话采集。Codex Hook、WorkBuddy 规则和 DSH 提示只会提醒模型何时调用工具;实际读写以 MCP 工具返回为准。项目也没有 DSH 内嵌管理页面、HTTP 服务或跨设备实时同步。

现在能做什么

能力

具体行为

跨客户端共享

三端指向同一个本地数据库;全局、项目、领域范围分别过滤

审核写入

ACCEPT 写入;DROP 跳过精确重复;MERGE / DEFER 留待核对

按需读取

中文关键词、FTS5、多路查询;返回命中原因与候选池诊断

保留变化

有效期、事实替代链、修订历史和软删除

自己带走

JSON/Markdown 导出与导入,SQLite 数据库由用户持有

四态预审只能识别精确重复、同标题冲突和来源字段缺失,不能证明一条记忆真实,也不能做语义去重。证据检查同样只报告词面候选,回答前仍需核对正文和来源。完整参数见工具与数据参考。

快速开始

需要 Python 3.11+、uv 和带 FTS5 的 SQLite。以下命令从一个新克隆的仓库开始:

git clone https://github.com/tyxiumud/personal-memory-mcp.git
cd personal-memory-mcp
uv sync --locked
uv run --locked python -m personal_memory status

默认数据库在用户数据目录:Windows 为 %LOCALAPPDATA%\personal-memory-mcp\memory.sqlite3,macOS/Linux 为 ~/.local/share/personal-memory-mcp/memory.sqlite3。所有客户端必须使用同一个绝对数据库路径,才能共享记忆。

生成三端配置模板(输出目录需为新目录或空目录):

$configDir = Join-Path $env:TEMP 'personal-memory-configs'
uv run --locked python scripts/render_client_configs.py $configDir

模板不会自动改动客户端配置。按下一节把所需条目合并进去,再在客户端调用 memory_status 核对 database。若已有同名输出目录,换一个新目录即可。

接入 AI 客户端

客户端

接入方式

分步指南

Codex

合并 MCP 配置;可选安装读取与结束前复核 Hook

Codex

WorkBuddy

合并 MCP 配置、信任服务;可选安装常驻规则

WorkBuddy

DeepSeek Harness(DSH)

在 profile patch 中挂载本地 stdio MCP

DSH

这是 MCP 服务,不是在 DSH 插件页一键安装的 npm 插件。三端配置不同,但共用同一份数据库。配置探针可以验证启动命令、工具列表和数据库路径;它不代表客户端 UI 中的真实模型会话已成功读写。

怎么使用

接入后,先在客户端调用 memory_status,确认数据库路径。然后可以做一轮可见的跨客户端验收:

  1. 在一个客户端用 memory_store_reviewed 写入一条不含敏感信息的测试记忆,检查 disposition=ACCEPT 且 written=true。

  2. 在另一个客户端用 memory_search 查同一范围和关键词,确认返回同一个 ID。

  3. 如果只想预览写入结果,用 memory_review_write;它不会写数据库。测试记忆可通过 memory_forget 软删除,历史仍会保留。

示例写入参数(工具名 memory_store_reviewed):

{
  "memory": {
    "title": "示例:技术文档语言偏好",
    "content": "用户希望技术文档优先使用中文。此条仅用于演示。",
    "scope": "global",
    "type": "preference",
    "source": {
      "kind": "conversation",
      "client": "codex",
      "trigger": "explicit",
      "evidence": "replace-with-real-user-confirmation"
    }
  }
}

实际使用时请替换示例内容和来源,不要把这条示例当作真实用户偏好。source.trigger 区分用户明确要求的 explicit 与模型判断的 autonomous;自主写入还需要证据或引用。新事实每条尽量只表达一件事,纠错与事实变化分别使用修订和替代关系。

数据与边界

  • 记录存于本机 SQLite,支持按范围、类型和有效期过滤;范围不是访问控制。

  • memory_forget 是软删除,历史和备份中可能仍有原文;它不是安全擦除。

  • memory_assess 只能提示哪些要点找到词面候选,不能替模型证明结论。

  • 本项目不默认使用 embedding、外部模型 API、云服务、自动会话摄取或自动合并。

  • 项目仍处于 1.0 前的 alpha 阶段;客户端安装与 Hook 行为会随宿主版本变化。

导出完整备份时请使用 --include-forgotten,并将归档放在仓库外;不要把个人数据库或导出文件提交到 Git。导入、有效期、检索诊断和备份细节见工具与数据参考。

文档

想了解什么

去哪里

工具参数、四态写入、搜索诊断、归档

工具与数据参考

为什么这样设计、哪些能力暂不做

设计理念

数据如何存储、检索和修订

架构

什么值得记、客户端何时读写

记忆工作流 · Agent 接入

评测指标能说明什么

评测口径 · v0.4 实验记录

版本记录与后续提案

变更记录 · v0.4 计划与状态

贡献与安全边界

贡献指南 · 安全策略

开发与验证

uv sync --locked
uv run --locked python -m pytest -q
uv run --locked ruff check src tests scripts

测试和静态检查不需要个人数据库。三端安装后,可用 scripts/check_connections.py --installed --database <共用数据库的绝对路径> 验证实际启动配置;未安装三端时无需运行。固定检索夹具只验证后端候选行为,不代表真实会话回答准确率,详情见评测口径。

许可证

MIT License。

Available Tools

7 tools
memory_contextA
Read-only

Get bounded reference memories for the current task, respecting scope and validity.

max_chars bounds the serialized memories array, not the small response wrapper. Whole records that do not fit are omitted; omitted_from_page reports how many, and returned_after_budget is how many survived. retrieval.returned is what retrieval found before the budget, so a record dropped for size is never reported as no hit.

view="full" (default) returns complete records. view="compact" keeps id, revision, title, content, scope, scope_id, type, validity, updated_at, confidence, importance and a deterministically extracted source summary; it never truncates the body and never invents missing provenance. source_summary keeps verification and epistemic_status unshortened, because a trailing caveat like "未逐项外部核实" must not be cut off. Use memory_history when full evidence is needed. Suggested startup read: view="compact", max_chars=6000, limit=8.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNofull
max_charsNo
selectionYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=false, and the description goes well beyond that. It explains the exact semantics of max_chars (bounds serialized array, not wrapper), how omitted records are reported (omitted_from_page vs returned_after_budget vs retrieval.returned), and the behavior of compact view (never truncates body, never invents provenance, preserves source_summary details). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense yet well-structured: purpose first, then max_chars semantics, view behavior, source_summary note, and a usage recommendation. Every sentence adds essential information with no fluff. It front-loads the primary purpose and keeps related details grouped logically.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with a nested selection parameter, the description covers the key behavioral aspects: budget semantics, view differences, and the relationship with memory_history. It explains the response fields (omitted_from_page, returned_after_budget, retrieval.returned) sufficiently for an agent to interpret results correctly. The suggested startup read provides a practical entry point. No obvious gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does for the key parameters: max_chars (explains exactly what it bounds and how records are dropped) and view (explains full vs compact and what compact includes/excludes). It also gives a recommended value for limit. It doesn't elaborate on the selection object's fields, but that's detailed in the schema, and the description's core purpose is clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific purpose: retrieving bounded reference memories for the current task with scope and validity constraints. It clearly differentiates from memory_history by naming it as the alternative for full evidence, and the view options (full vs compact) further distinguish its behavior from other memory tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is given: when full evidence is needed, use memory_history instead. It also provides a concrete recommended startup read (view='compact', max_chars=6000, limit=8) and explains the trade-offs between full and compact views, making it clear when to choose each.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_forgetA
Destructive

Soft-delete one memory from retrieval. History and database content are retained.

This is NOT secure erasure. Read the current revision via history before forgetting.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes
expected_revisionYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though annotations already show destructiveHint=true and readOnlyHint=false, the description adds crucial non-obvious behavior: the deletion is soft, retrieval-only scope, history and database content are retained, and there is a revision-based precondition. This significantly goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler: the core operation is front-loaded, and the two caveats (not secure erasure, read revision first) are each essential. Every sentence carries load.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation without an output schema, the description covers the operation, retention behavior, and the required revision workflow. It stops short of describing the result/return value or what happens on a revision mismatch, but those are minor for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates for expected_revision by explaining that the current revision must be read from history before calling the tool, linking it to the parameter. It doesn't explicitly restate memory_id, but the name plus 'one memory' is self-explanatory; the marginal gap prevents a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action, 'Soft-delete one memory from retrieval,' which clearly names the verb and resource. The explicit distinction from secure erasure ('This is NOT secure erasure') differentiates it from any hard-delete variant and from sibling update/search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear prerequisite: read the current revision via history before forgetting, which tells the agent the correct sequencing. The 'NOT secure erasure' warning provides an explicit when-not-to-use condition, though it does not name alternative tools (e.g., memory_update) for other intents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_historyA
Read-only

Read revision snapshots newest first, including forgotten memories; supports pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
memory_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds behavioral detail beyond annotations: results are ordered newest first, forgotten memories are included, and pagination is supported. This gives the agent useful invocation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It packs the action, resource, ordering, special inclusion, and pagination support into a compact form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with one required parameter and no output schema, the description provides the key invocation facts: revision snapshots, newest-first order, forgotten-memory inclusion, and pagination. It could clarify what 'revision snapshot' means or describe the response shape, but those are not essential for calling the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry semantic weight. It only mentions pagination, which clarifies limit/offset at a high level but does not explain memory_id or the meaning of offset/limit values. The parameter names and defaults are self-evident enough to make a reasonable call, but the description does not fully compensate for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and resource ('revision snapshots'), and adds ordering ('newest first') and scope ('including forgotten memories'). This clearly distinguishes memory_history from siblings like memory_search, memory_context, and memory_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool for browsing historical revisions and forgotten memories, but it never explicitly says when to choose it over memory_search or memory_context. Pagination hints at large result sets, yet no alternative tools or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_statusA
Read-only

Report database location, counts, the scope inventory, schema and capabilities.

scopes lists every existing (scope, scope_id) pair with scope, scope_id, total_count, active_count and newest_updated_at kept as separate fields. Check it when the task scope is unclear or changes, then choose the relevant scope: knowing that a scope exists is not a reason to read every project. active_count follows the same rule as retrieval (not forgotten, valid at as_of), while total_count and newest_updated_at include forgotten and expired records.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint=true annotation, the description explains the meaning of active_count versus total_count and how they relate to retrieval semantics (validation at as_of, including forgotten and expired records). This gives the agent genuinely useful behavioral context about how the data in the report should be interpreted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is an excellent front-loaded summary maps directly to the tool name. The added detail about scopes is useful, though the phrase 'kept as separate fields' is slightly redundant and the paragraph could be trimmed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining what the agent can expect: location, counts, schema, capabilities, and a detailed account of the scopes sub-structure. For a zero-parameter status tool, this is complete enough for an agent to invoke and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%, so there is nothing meaningful to add about parameter behavior. The baseline of 4 applies; the description appropriately spends no space on parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Report') and a clear resource ('database location, counts, scope inventory, schema and capabilities'). This immediately distinguishes memory_status from memory_search, memory_store, and other siblings because it is about inspecting the memory system itself rather than operating on memories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use: 'Check it when the task scope is unclear or changes.' It also warns against over-reading scopes ('knowing that a scope exists is not a reason to read every project'), which prevents misuse. It does not name alternative sibling tools, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_storeA

Store a durable memory with provenance. Return id and revision.

Explicit user requests must be handled; autonomous writes require confirmed, durable, future-useful information. Search first. Prefer source.trigger=explicit|autonomous. Never store secrets, speculation, raw logs, or short-lived conversational details. For a changed fact create a new memory with supersedes=old_id; its valid_from closes the old memory's validity atomically. Scope and scope_id must match the old memory. An exact active duplicate in the same scope/type is returned without another insert.

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important write behavior: persistence, return of id/revision, exact-duplicate suppression, atomic closing of the superseded memory's validity, and scope/scope_id matching requirements. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and return value, and every subsequent sentence adds a policy, constraint, or behavioral detail. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema, the description supplies enough context: preconditions for autonomous writes, prohibited content, search-first requirement, deduplication behavior, and atomic supersede mechanics. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by adding meaning to source.trigger, supersedes, valid_from, scope, and scope_id. However, it leaves fields like valid_to, confidence, importance, tags, and type to inference or schema defaults/enums, so compensation is strong but not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Store') and resource ('durable memory with provenance'), and commits to a clear return contract ('Return id and revision'). It also distinguishes the tool from siblings like memory_search and memory_update by describing duplicate suppression and supersede behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: explicit user requests must be handled, and autonomous writes require confirmed, durable, future-useful information. It also gives clear when-not-to-use guidance by prohibiting secrets, speculation, raw logs, and short-lived details, and instructs the agent to search first and avoid re-inserting duplicates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_updateA
Destructive

Correct content/metadata with optimistic concurrency and a full audit snapshot.

Editable fields: title, content, type, confidence, importance, source, tags. Scope, validity and supersedes are immutable; use memory_store for changed facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYes
memory_idYes
expected_revisionYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses behavioral traits beyond annotations: it mentions optimistic concurrency (implying expected_revision is required), a full audit snapshot (indicating every update is logged), and which fields are immutable. Since annotations already flag destructiveHint=true, the description adds concurrency and audit details, enhancing transparency without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and concurrency/audit traits, followed by a compact bullet list of editable and immutable fields. No redundant phrasing; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation tool with a nested object and no output schema, the description covers all critical aspects: the concurrency mechanism, audit behavior, allowed fields, and when to use a sibling. An agent has everything needed to construct a valid call (memory_id, changes with only editable fields, expected_revision) and to avoid misuse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description fully compensates by listing the editable fields (title, content, type, confidence, importance, source, tags) and explaining that expected_revision is for optimistic concurrency. It also tells the agent which fields to exclude (scope, validity, supersedes), giving clear semantics for the 'changes' object beyond the generic schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb 'Correct' with a resource ('content/metadata'), and immediately distinguishes itself from the sibling memory_store by noting that scope, validity, and supersedes are immutable and should be handled there. This makes the tool's role unambiguous: updating/correcting existing memory entries rather than storing new facts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use and when-not-to-use guidance: it lists editable fields and states that immutable fields (scope, validity, supersedes) require memory_store instead. This directly tells an agent when to select this tool over alternatives, eliminating guesswork.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.3.1
    • First observedmemory_context
    • First observedmemory_forget
    • First observedmemory_history
    • First observedmemory_search
    • First observedmemory_status
    • First observedmemory_store
    • First observedmemory_update

TDQS

A4.6/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct operation: search for query-based retrieval, context for bounded task-relevant retrieval, store for creation, update for modification, forget for soft deletion, history for revision snapshots, and status for database metadata. There is no functional overlap between any pair.

Naming Consistency5/5

All tool names share the `memory_` prefix and follow a mostly verb-oriented pattern: search, store, update, forget, history, status. `memory_context` is the only noun-based name, but it clearly signals retrieving context and does not break the overall consistent naming convention.

Tool Count5/5

Seven tools is well within the ideal scoped range for a personal memory server. Each tool covers a necessary capability without redundancy or bloat, and none feel superfluous.

Completeness5/5

The tool surface provides full CRUD coverage (store/create, context+search+history/read, update/update, forget/delete) plus lifecycle extras like history, status, and scoped context retrieval. The soft-delete design is deliberate and well documented, leaving no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides persistent local memory functionality for AI assistants, enabling them to store, retrieve, and search contextual information across conversations with SQLite-based full-text search. All data stays private on your machine while dramatically improving context retention and personalized assistance.
    3
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent long-term memory for LLMs via local SQLite storage and semantic search, enabling recall across sessions without external APIs.
    16 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI harnesses to maintain a persistent memory layer backed by a local SQLite file, providing MCP tools to add, search, deprecate, and synchronize facts without deleting history.
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Local memory for AI agents in one SQLite file on your own machine. Facts carry a validity window and a confidence score, so an outdated one is superseded and downweighted rather than deleted, and retrieval fuses BM25, vector similarity and a knowledge graph.
    2
    -