localmem-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOCALMEM_HOME | No | Directory used when LOCALMEM_DB_PATH is unset. | ~/.localmem |
| LOCALMEM_MODEL | No | Any model name supported by fastembed. | BAAI/bge-small-en-v1.5 |
| LOCALMEM_DB_PATH | No | Full path to the SQLite file. | ~/.localmem/memories.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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| store_memoryA | Save something worth remembering across sessions. Store durable facts, decisions, preferences, and project context — not transient chatter. The text is embedded locally so it can be found later by meaning, not just exact words. |
| search_memoryA | Find memories by meaning. Semantic search over everything stored, so "what database did we pick?" finds a memory that says "we went with SQLite". Results are ranked by similarity, highest first. To page through more matches, keep the same query and advance |
| recall_memoryA | Re-read a specific memory by id, or the most recent memories. Use this when you already know which memory you want (from a previous store_memory or search_memory call), or to catch up on what was recorded most recently. To find memories by meaning, use search_memory instead. |
| list_memoriesA | Enumerate memories with tag filtering, ordering, and pagination. Use this to browse stored memories without requiring a search query — to audit memories, paginate through tag categories, or view memories in chronological or reverse-chronological order. Filtering and ordering only — no embedding model or scoring is used. |
| update_memoryA | Correct an existing memory in place. Use this when a stored memory is wrong — a misremembered decision, a misspelled name, a fact that has since changed. It edits the original record rather than adding a related one, and re-embeds the text so search finds the correction. Only the fields you pass are changed. |
| forget_memoryA | Permanently delete one memory by id. Use this when a stored memory is wrong beyond correction, sensitive, or simply no longer wanted — prune it so stale facts stop outranking current ones. To fix a memory instead of deleting it, use update_memory. The delete is hard: the row is gone, not hidden. |
| forget_memoriesA | Permanently delete memories by tag and/or age. Use this to prune stale facts en masse — drop every memory tagged "scratch", or everything older than 90 days. At least one filter is required; an unfiltered call is rejected so the store can't be wiped by accident. Deletion is hard: matching rows are gone, not hidden. |
| memory_statsA | Report where memories are stored, how many there are, and which model is used. |
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 8 tools
Each tool targets a distinct operation (store, search, recall by id, list, update, delete, bulk delete, stats), and descriptions clearly separate search from recall and list. The only mild overlap is recall_memory's 'most recent memories' versus list_memories in chronological order, but the descriptions give enough guidance to choose correctly.
Most tools follow a consistent verb_noun pattern (store_memory, search_memory, update_memory, forget_memory), and all names are lowercase snake_case. memory_stats breaks the pattern by using a noun_noun form rather than a verb like get_stats, and singular/plural alternates between memory and memories.
Eight tools is well-scoped for a memory store: create, read (three retrieval modes), update, delete (single and bulk), and stats. Each tool earns its place without redundancy or bloat.
The surface covers the full memory lifecycle: store, retrieve by meaning/id/browse, update, delete, bulk prune, and inspect storage. There are no obvious dead ends; even bulk deletion is safely gated by requiring a filter.