basic-memory-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BASIC_MEMORY_READ_ONLY | No | Set to '1' to expose only read-only tools. | |
| BASIC_MEMORY_HARD_DELETE | No | Set to '1' to unlink files instead of moving them to trash. |
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 |
|---|---|
| discover_topicsA | List available topics. Call this before read/write/edit/delete/append/rename/sweep. Returns a JSON list of {id, title, tags, updated, size, snippet, outbound_links, expires, match_reason}, newest first. With a query, snippets are centered on the first body match. Expired topics are hidden by default; pass include_expired=true to reveal them, marked with "expired": true. Reports when results are truncated by limit or when expired topics were hidden. |
| readA | Read a single topic in full, including its YAML frontmatter. Errors with a clear message if the topic does not exist; call discover_topics first. Expired topics are still readable by id. |
| relatedA | Report outbound and inbound wiki-link relationships for a topic. Returns {id, outbound, inbound}. outbound lists [[topic-id]] links in this topic; inbound lists topics that link to this topic. Errors if the topic does not exist. |
| writeA | Create or replace a topic. Overwrites existing topics without asking; use edit for targeted changes. Parent folders are created implicitly. Returns the resolved id and whether the topic was created or replaced. Rejects content over approximately 1 MB; split large memories into multiple topics. Retention controls expiry: permanent means never; session/today means 24 hours; week means 7 days; month means 30 days. |
| editA | Exact-string replacement inside an existing topic, like the Claude Code Edit tool. Fails if the topic does not exist. Fails if 'old' is not found. Fails if 'old' appears more than once and replace_all is false. Bumps the 'updated' timestamp. To change title, tags, or expiry, use write instead. |
| appendA | Append text to an existing topic without rewriting the whole body. Inserts with exactly one blank line between the old body and the new text. If heading is supplied, appends under an existing ## heading or creates it at the end. Fails if the topic does not exist. Bumps the 'updated' timestamp. A retention argument only extends the current expiry; it never shortens it. |
| renameA | Move a topic and rewrite wiki links that pointed to it. Also rewrites prefix links: renaming |
| deleteA | Soft-delete a topic, moving it to /.trash//.md. Returns the trash path so it can be manually restored. Parent folders are pruned if empty. Topics are never unlinked. |
| sweepA | List or soft-delete topics whose expiry has passed. dry_run=true returns the list without changing anything; the model should review it and then call sweep(dry_run=false) to move the topics into .trash. |
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 9 tools
Each tool has a clearly distinct purpose: discover_topics for listing, read for full content, related for links, write for full replacement, edit for targeted string changes, append for adding text, rename for moving, delete for trash, and sweep for expired cleanup. No two tools overlap in function.
Most tools use single-word verbs (read, write, edit, append, rename, delete, sweep), but discover_topics introduces an underscore and related is an adjective rather than a verb. This mixed convention breaks the otherwise predictable verb-only pattern.
The 9 tools are well-scoped for a personal memory server, covering the full lifecycle of topics from discovery to deletion without unnecessary redundancy. Each tool addresses a distinct need and the count feels appropriate.
The tool surface is comprehensive: create, read, update (via edit, append, rename), delete, list, relationship traversal, and expiration cleanup are all covered. There are no discernible gaps for the stated purpose of managing topics in a knowledge base.