Better Bear vs Mnemosyne OS

A side-by-side look at the Better Bear and Mnemosyne OS MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Better Bear logoBetter BearKnowledge & Memory · Local subprocess (stdio)MCP server for Bear notes — read, search, create, edit, tag, and manage notes via CloudKit60GoodAuth: not declaredMnemosyne OS logoMnemosyne OSKnowledge & Memory · Local subprocess (stdio)Persistent memory for AI agents, governed by the human and stored on their own machine.64GoodAuth: not declared

Verdict: choose Better Bear for knowledge & memory work as a local process; choose Mnemosyne OS for knowledge & memory as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Better Bear logoChoose Better Bear when

  • You need dedicated capabilities in the Knowledge & Memory domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like bear_list_notes, bear_get_note, bear_search.
Explore Better Bear

Mnemosyne OS logoChoose Mnemosyne OS when

  • You need dedicated capabilities in the Knowledge & Memory domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like mnemosyne_about, mnemosyne_memory_query, mnemosyne_memory_ask.
Explore Mnemosyne OS

Feature & specification comparison

Rows where the two servers differ are marked.

SpecBetter Bear logoBetter BearMnemosyne OS logoMnemosyne OS
CategoryKnowledge & MemoryKnowledge & Memory
Quality signal60/100 · Good64/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNot declared
PricingNot declaredFree
Required env varsNone listedNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars6820
Directory activity 2 views 0 installs 0 upvotes 1 views 0 installs 0 upvotes
Tools3525

Tools & capabilities

Better Bear tools 35

  • bear_list_notesList Bear notes with optional tag filtering. Returns an array of notes with IDs, titles, tags, pin status, and modification dates. Each note includes two tag fields: 'tags' mirrors Bear's CloudKit index verbatim (includes ancestor expansions — a note tagged #parent/child will show both 'parent' and 'parent/child'); 'attached_tags' shows only leaf tags (the most-specific tag on each branch). Notes with 'locked: true' are private/encrypted in Bear and their body content is not searchable — if a search returns no results, check whether the relevant note is locked. Use bear_get_note to read the full content of a specific note.
  • bear_get_noteGet a single Bear note's full content and metadata by ID. Returns the note title, tags, full markdown text, and dates. The response includes 'tags' (CloudKit index, may contain ancestor tags like 'parent' for a note tagged '#parent/child') and 'attached_tags' (leaves only). If the note is locked/private, 'locked: true' will be included in the response. Use the 'raw' option to get just the markdown without metadata.
  • bear_searchFull-text search across Bear note titles, tags, and body content. Returns matching notes ranked by relevance (title matches first, then tag, then body). Body matches include a text snippet with surrounding context. Locked/private notes will match by title but may not match body searches — results include 'locked: true' for these notes. If you can't find content you expect, try listing notes to check if the relevant note is locked.
  • bear_get_tagsGet the full tag hierarchy from Bear. Returns all tags with their note counts and pin status. Useful for understanding how notes are organized.
  • bear_create_noteCreate a new Bear note with a title, optional body text, tags, and YAML front matter. Hashtags written inline in the body (e.g. '#my_tag' or '#parent/child') are extracted and registered as real tags on the note, matching Bear's desktop-app behaviour. Tags from the 'tags' array are indexed regardless of whether they appear in the body. Hierarchical tags like '#parent/child' also index every ancestor (so they show up under #parent in Bear's sidebar). Front matter is stored as a collapsed metadata block at the top of the note. Returns the new note's ID.
  • bear_edit_noteEdit an existing Bear note. Provide 'append_text' to add text, 'body' to replace content, or 'set_frontmatter'/'remove_frontmatter' to edit YAML front matter fields. Front matter edits can be combined with each other but not with body/append.
  • bear_trash_noteMove a Bear note to the trash. This is a soft delete — the note can be recovered from Bear's trash. The note is identified by its ID.
  • bear_syncTrigger a sync of Bear notes from iCloud. Normally an incremental sync fetching only changes. Use 'full' to force a complete re-sync. Most read operations auto-sync when the cache is stale, so manual sync is rarely needed.
  • bear_list_todosList Bear notes that have incomplete TODO items (markdown checkboxes like '- [ ]'). Returns each note's title, tags, and counts of complete/incomplete items.
  • bear_get_todosGet all TODO items from a specific Bear note. Returns each item's text, completion status, and index number (use the index with bear_toggle_todo to toggle items).
  • bear_toggle_todoToggle a specific TODO item in a Bear note between complete and incomplete. The item_index is 1-based — use bear_get_todos first to see the list with index numbers.
  • bear_attach_fileAttach a file or image to an existing Bear note. The file is uploaded to iCloud and embedded in the note's markdown. Supports common image formats (jpg, png, gif, webp, heic) and other file types (pdf, zip, etc.). By default the attachment is appended to the end. Use 'after' or 'before' to place it relative to text in the note, or 'prepend' to put it right after the title.
  • +23 more on the listing page

Mnemosyne OS tools 25

  • mnemosyne_aboutRe-read the server instructions: the governance tenet, the vault protection model (NORMAL and MAXIMUM, mixableWith, isolated sandbox vaults), the spine model, and the rules for an agent working on someone else's memory. Most clients show this text on connect. Call it if yours did not, or to read it again.
  • mnemosyne_memory_querySearch a vault and get the matching memories back word for word: notes, code, decisions, session summaries, commit history. Nothing is rewritten, so use this when you need the source text itself, to quote it or to write documentation from it. Ranking is vector similarity fused with a local BM25 channel, weighted by spine type. To FIND something rather than quote it, prefer mnemosyne_memory_ask, even when you only want its sources. It retrieves deeper and re-ranks, so it catches rare literal terms this tool misses: proper nouns, identifiers, product names. The score is not a confidence value. A hit and a miss come back with similar numbers, so judge the text, not the number beside it.
  • mnemosyne_memory_askAsk a question and get a prose answer grounded in the vault, plus the memories it drew on. It runs the full local RAG pipeline: deeper retrieval, lexical fusion and a re-rank. That also makes it the better retriever, so reach for it whenever you need to find something, and read the Sources list even if you ignore the prose. It is at its best on why, who and how questions that span many memories. It takes up to about 30 seconds. The prose is a model rewording of the sources, so quote the sources instead, or fetch them with mnemosyne_memory_query. Check them before you trust the answer.
  • mnemosyne_vault_listList the memory vaults this Mnemosyne OS exposes, each with its token, display name and memory count. Call it first when you are unsure which vault to work against, or when the user names a store you have not seen. Pass the bold token as the `vault` argument of the other tools. The `id` line is a local path and the other tools do not take it. Vaults this server was not configured for are flagged here and refused until the user adds them.
  • mnemosyne_memory_ingestWrite a memory into a vault: a decision, an architecture note, a debug finding, a session summary. It is stored permanently and indexed for every future agent to retrieve. Use it at the end of a meaningful work session, or whenever a decision is reached that someone will want to recall later.
  • mnemosyne_resonance_listList the resonances recorded in the default vault. A resonance is a workspace that tracks one ongoing project. Each entry carries its id, its last phase, how many minutes ago it moved, and the id of the memory behind it. Read-only. There is no status filter, so you get every resonance the scan matched in one vault, from at most 30 candidates. An empty result is written in words and means no resonance has been recorded yet. Read one in full with mnemosyne_position_get, or write a new one with mnemosyne_position_update.
  • mnemosyne_position_getRead where one resonance was left: the phase, and the free-text note an agent or the cockpit wrote when it stopped. Read-only. It returns the resonance id, when it was saved, the spine type of the memory, and the whole note. An id nothing was ever saved under answers in plain words and points at mnemosyne_position_update, so a blank history and a failed call do not look alike. Call mnemosyne_resonance_list when you do not know the id.
  • mnemosyne_position_updateRecord where you left off on a resonance: phase, current state, next steps. Call it at the end of a session. It is stored as a DECISION memory in the vault.
  • mnemosyne_git_logRead recent commits from the git repository this Mnemosyne OS is configured to read. Read-only. Each commit carries an 8-character hash, the subject line, the author and the date, newest first. The path is set on the app side, so this cannot be pointed at another checkout, and it needs the monorepo:read scope. When either is missing the answer names what is missing, rather than returning an empty list that would read as "no commits". Use mnemosyne_memory_query for the reasoning behind a change.
  • mnemosyne_dream_bridgesList the connections the Dream State engine found between memories while the machine was idle. Each bridge links two memories, sometimes from different vaults, with a Dream Bridge Score, a raw cosine similarity, and a short excerpt of both sides. Use it to surface associations the memory made on its own, to audit whether they are insightful or noise, or to seed creative exploration. An empty list is normal and means the engine has not produced bridges yet. It runs on idle time, when the user enables it in Settings.
  • mnemosyne_spine_assignmentsSee how Mnemosyne classified its memories. It returns the memory-to-spine assignments for one vault, newest first, and the per-spine counts for the whole vault. Use it to check whether memories landed in the right spines, to read a vault's composition at a glance, or to find the taxon ids to pass as spine_type_filter in mnemosyne_memory_query. Set include_taxonomy to also get the global spine tree.
  • mnemosyne_agent_listList the other coding-agent sessions on this machine, read from the transcript files their harnesses already write to disk. Metadata only: conversation name, project, git branch, model, last tool, how many files were touched, and when a line was last written. It reads every harness installed here, not just your own, so you can see a session from a different agent working in your repository. Use it before you touch shared state. It reports when a line was last seen and you draw the conclusion: a crashed session and an idle one fall equally silent, so nothing here can tell you an agent is working. Works with the Mnemosyne OS app closed.
  • +13 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Better Bear

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "better-bear-2": {
      "command": "npx",
      "args": [
        "-y",
        "better-bear"
      ]
    }
  }
}

Mnemosyne OS

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "mnemosyne-os": {
      "command": "npx",
      "args": [
        "-y",
        "@mnemosyne_os/mcp"
      ]
    }
  }
}

Frequently asked questions

Better Bear is categorized under Knowledge & Memory and uses a local stdio subprocess. Mnemosyne OS belongs to Knowledge & Memory and uses a local stdio subprocess. Pick Better Bear for knowledge & memory work and Mnemosyne OS for knowledge & memory.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Better Bear has no declared pricing — check the project's own site. Mnemosyne OS is listed as free. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add better-bear-2 and mnemosyne-os as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Better Bear has a quality signal of 60/100 (Good) with 2 views, 0 installs and 68 GitHub stars. Mnemosyne OS has 64/100 (Good) with 1 views, 0 installs and 20 GitHub stars.