th-memory-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEMORY_DB_PATH | No | Path to the SQLite database file. Overrides the default data/memory.db. | data/memory.db |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| rememberA | Save or update a user preference (category+key upsert). Re-saving the same key increases confidence by 0.1 (cap 1.0). Returns the row id for forget(). |
| recallA | Search preferences + lessons via full-text index, plus recent matching interactions. Use before starting a new task. |
| get_profileA | Get the distilled user profile: profile sections, top preferences by confidence (max 15), and the 5 most recent lessons. |
| save_lessonA | Record a lesson learned from a correction: what situation, what mistake, what is the correct way. Call immediately after the user corrects your work. |
| search_historyA | Search past user prompts (kind='prompt') by keyword. Returns timestamped snippets truncated to 200 chars each. |
| forgetA | Delete one memory row (preference, lesson or interaction) by id and sync the search index. Pass type when you know it (ids from remember are preference ids, from save_lesson are lesson ids). |
| memory_statsA | Summarize memory usage: interaction counts by kind, preference/lesson totals, DB file size, oldest/newest interaction timestamps, and profile sections. |
| get_recent_interactionsA | List recently captured raw interactions (newest first) as [id] ts [kind] content lines. Optionally filter by kind. Use for auditing history or before distilling memory. |
| export_memoryA | Export preferences, lessons, profile (and optionally raw interactions) to a JSON file under data/exports/. Only writes inside that directory. Returns the file path, size in bytes and a JSON preview. |
| get_contextA | Assemble relevant memories for the current task via hybrid retrieval (+ optional memory-graph expansion), with token budgeting. Use to load memory into context before a task. |
| consolidateB | Cluster similar memories via embedding similarity and optionally create derived/consolidated memories linked via 'derived_from'. Use during periodic consolidation. |
| link_memoryB | Create a typed relationship between two memories in the graph (supports/contradicts/supersedes/derived_from/related_to/caused_by/depends_on). |
| merge_memoryA | Merge a duplicate/near-duplicate memory into a canonical one. The source becomes superseded and provenance is recorded in metadata.merged_from. |
| update_memoryA | Update mutable fields (summary/importance/confidence/valid_from/valid_until/metadata) in place. If content changes, a superseding memory is created by default (set supersede=false to edit in place). |
| import_memoryA | Import memories from a JSON array or a .json file inside data/exports/. Validates type, dedupes against existing memories, and never overwrites active memory blindly. Dry-run by default; pass apply=true to insert. |
| extract_memoriesA | Scan recent captured interactions for memory-intent phrases and propose memory candidates (deterministic, no LLM). Dry-run by default; pass apply=true to create them (source=captured). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Most tools clearly target distinct operations, but recall and get_context both serve task-time memory retrieval and could be confused by an agent. Search-related tools are otherwise differentiated by scope, and descriptions provide enough clarity.
Names mix single-word verbs like remember and forget, get_ prefixed accessors, verb_noun operations like merge_memory, and the noun-only memory_stats. The inconsistent style is noticeable, though all names are snake_case and readable.
With 16 tools, this sits at the borderline heavy end for a memory server. The breadth is somewhat justified by coverage of CRUD, graph links, consolidation, import/export, and stats, but a few tools could potentially be combined.
The tool set covers the full memory lifecycle: capture/extract, save, retrieve, update, merge, delete, graph linking, consolidation, profile generation, export/import, and statistics. There are no obvious critical dead ends for the stated memory-management purpose.