Skip to content

Releases: vasylenko/bear-notes-mcp

v3.0.1

Choose a tag to compare

@github-actions github-actions released this 12 May 12:01
50afb8b

Internal

  • TypeScript upgraded from 5.9.3 to 6.0.3@types/node is now declared explicitly in tsconfig.json (TS6 no longer auto-loads ambient types reachable only through transitive peer deps). Hand-rolled regex escapes in operations/notes.ts replaced with the Stage-4 RegExp.escape (V8 13.6; ships with all Node 24 releases). SQL rows are now cast to typed interfaces at the query boundary instead of field-by-field. No user-facing behavior changes.

Download bear-notes-mcpb-20260512.mcpb to install the extension.

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 11 May 14:56
30b5931

Added

  • Search results include matching snippets — each result carries a short excerpt around the matched terms so you can judge relevance without opening every note.
  • Plain-language errors for unprocessable search queries — when a query can't be parsed, the response says so in plain language and points at the offending input instead of leaking a raw SQLite error.
  • bear-capabilities tool — when Edit Mode is off, surfaces the unlock guidance through tools/list so it reaches the model in clients that don't forward the MCP instructions field (Claude Desktop, OpenCode; partial: Codex CLI). Hidden once Edit Mode is on, since there's nothing left to unlock.

Changed

  • Read-only by default; write tools require Edit Mode (breaking) — UI_ENABLE_CONTENT_REPLACEMENT now gates write tools at registration time instead of call time. When unset (default), tools/list advertises the 4 read-only Bear-domain tools (bear-search-notes, bear-open-note, bear-find-untagged-notes, bear-list-tags) plus bear-capabilities — 5 entries total; the 8 write tools (bear-create-note, bear-add-text, bear-replace-text, bear-add-file, bear-add-tag, bear-archive-note, bear-rename-tag, bear-delete-tag) are absent entirely. The previous behavior — registering all 12 tools but failing only bear-replace-text calls at runtime with a "Content replacement is not enabled" error — is gone, along with that error message. The MCP instructions field now tells the LLM how to unlock writes when the gate is closed (the env var name plus the Claude Desktop toggle path), so the read-only mode is discoverable without external docs. Existing installs that did not set the var will see the 8 write tools disappear from tools/list (and bear-capabilities appear in their place) until they enable Edit Mode (Claude Desktop: Settings → Extensions → Configure → toggle Edit Mode; CLI: set UI_ENABLE_CONTENT_REPLACEMENT=true). The OS env var name and the MCPB user-config key (enable_content_replacement) are unchanged so saved settings carry over.
  • MCPB user-config label "Content Replacement" renamed to "Edit Mode" — visible in Claude Desktop's Settings → Extensions → Configure (Bear Notes). The underlying user-config key (enable_content_replacement) and env var (UI_ENABLE_CONTENT_REPLACEMENT) are unchanged; existing toggle state is preserved.
  • Search ranks results by relevancebear-search-notes now ranks notes by how well they match your query, prioritizing titles and bodies over OCR-extracted text from attachments. The most relevant notes surface first instead of the most recently edited; multi-word queries like quarterly planning offsite notes rank notes covering more of the query terms higher.
  • bear-search-notes returns up to 30 results by default (was 50) — the cap is a default, not a ceiling: callers can pass limit to request more, and the response always includes the un-capped match count plus a hint for retrieving all. The lower default trims long-tail noise from common-word matches and reduces LLM context spent on results an agent rarely uses.
  • Tag features keep working through Bear schema updates — tag search and pinned-tag filters now resolve Bear's internal join-table IDs at runtime instead of relying on hardcoded names, so a future Bear schema renumber won't silently break them.
  • bear-add-file enforces a stricter input policy (breaking) — rejects symbolic links, non-regular files (directories, devices, FIFOs), empty files, and any file larger than 25 MB. Inputs that previously succeeded under one of these conditions now return an error. Most callers will not notice; agents passing iCloud/Drafts paths that resolve through a symlink will need to resolve to the real path first.
  • License changed from MIT to Apache 2.0 — same broadly-permissive posture, plus an explicit patent grant. End users see no functional change; redistributors of derivative works must keep the new NOTICE attribution. See LICENSE.md.

Removed

  • bear-add-file no longer accepts base64_content (breaking) — pass file_path instead. Sending base64 through tool input wasted thousands of LLM tokens per attachment for no benefit; the server has read files from disk natively since 2.9.0. Existing callers that built base64 blobs must write them to a file on disk and pass the path.
  • Substring matching in bear-search-notes (breaking) — search now matches whole words rather than partial fragments, so a query for engin no longer matches engineering. Use the full word (engineering) instead, or pick a more specific keyword from the same note. Existing search prompts that relied on partial-word matches may return different result sets under v3.0.0.

Download bear-notes-mcpb-20260511.mcpb to install the extension.

v2.12.0

Choose a tag to compare

@github-actions github-actions released this 21 Apr 18:21
b108d0e

Removed

  • bear-grab-url tool — removed to keep the server network-free and eliminate prompt-injection risk from fetched content.

Download bear-notes-mcpb-20260421.mcpb to install the extension.

v2.11.0

Choose a tag to compare

@github-actions github-actions released this 20 Apr 22:37
da95409

Added

  • bear-search-notes now includes tags in results — each search result with tags shows a Tags: line alongside existing metadata (title, dates, ID). This lets LLMs cross-reference tags across multiple notes without opening each one individually.

Changed

  • Soft errors now signal isError: true in tool responses — for recoverable failures handled inside tool implementations (such as a missing note, handler-level parameter validation, a disabled feature, or a file error), the tool response now sets isError: true instead of returning the error message as a normal result. This lets MCP clients distinguish failures from successful empty results (like "no notes found") and gives LLMs a clear signal to self-correct. Permanent conditions (e.g., feature disabled) include explicit "do not retry" guidance.
  • bear-add-tag correctly marked as idempotent — the tool's MCP annotation now reflects that adding an already-present tag is a no-op. MCP clients can safely retry bear-add-tag calls on transient failures without risk of unintended side effects.

Fixed

  • bear-add-tag and bear-add-file now return complete note metadata — mutation tool responses previously had gaps: bear-add-tag omitted the note ID, and bear-add-file (when called with an ID) omitted the note title. Both tools now consistently return the note title and ID, matching all other mutation tools. This gives LLM clients the metadata they need for follow-up operations without an extra lookup step.

Download bear-notes-mcpb-20260420.mcpb to install the extension.

v2.10.0

Choose a tag to compare

@github-actions github-actions released this 13 Apr 13:55
6f1da1d

Added

  • bear-grab-url tool — save a web page as a Bear note. Bear fetches the page and converts it to markdown. Supports optional comma-separated tags. The note is created in the background without bringing Bear to the foreground.

Fixed

  • Database reads no longer fail when Bear is writing — the SQLite connection now sets a 3-second busy_timeout, so read queries wait briefly instead of failing instantly with "database is locked" when Bear happens to be mid-write.

Download bear-notes-mcpb-20260413.mcpb to install the extension.

v2.9.0

Choose a tag to compare

@github-actions github-actions released this 31 Mar 22:28
bd5de83

Changed

  • bear-add-file accepts file_path as alternative to base64_content (#88): When the file exists on disk, provide its path instead of base64-encoded content. The server reads and encodes the file internally, avoiding the cost of the LLM producing thousands of base64 output tokens. The filename parameter is auto-inferred from the path when omitted. The two input modes (file_path and base64_content) are mutually exclusive.
  • bear-open-note accepts title as an alternative to ID (#60): The tool now takes an optional title parameter, so AI agents can open a note by its exact title without needing to know the ID upfront. Title matching is case-insensitive. When multiple notes share the same title, the tool returns a disambiguation list with each note's ID and last modification date instead of picking one arbitrarily. When no match is found, the response suggests using bear-search-notes for partial text search.

v2.8.2

Choose a tag to compare

@github-actions github-actions released this 29 Mar 00:29
331044a

Changed

  • Repository renamed to bear-notes-mcp (#75): The project identity is now client-neutral — "Bear Notes MCP Server" instead of "Claude Desktop Extension". README, package metadata, and all repository URLs have been updated. GitHub redirects the old URL automatically, but update your bookmarks and clones when convenient.
    No feature- or client-facing changes in this release

Download bear-notes-mcpb-20260329.mcpb to install the extension.

v2.8.1

Choose a tag to compare

@github-actions github-actions released this 14 Mar 16:12
20bd409

Fixed

  • File attachment data no longer contaminates note body during write operations (#86): bear-open-note previously appended a synthetic # Attached Files section directly into the note text. When an AI agent then used bear-replace-text, this synthetic section could be written back into the note as real content. File metadata is now returned as a separate MCP content block, keeping the note body clean for downstream edits.

Download bear-notes-mcpb-20260314.mcpb to install the extension.

v2.8.0

Choose a tag to compare

@github-actions github-actions released this 13 Mar 11:13
29a82ad

Added

  • bear-rename-tag tool (#63) — rename a tag across all notes in your Bear library. Useful for reorganizing tag taxonomy, fixing typos, or restructuring tag hierarchies.
  • bear-delete-tag tool (#64) — delete a tag from all notes without affecting the notes themselves.

Fixed

  • bear-list-tags no longer shows ghost tags from excluded notes (#77): Tag counts previously included trashed, archived, and encrypted notes, causing tags that existed only on those notes to appear in the list with inflated counts. Tag results now match what Bear's UI shows.
  • Attachments without OCR text no longer silently disappear (#79): When a note had attachments that Bear could not extract text from (e.g., MHTML files), those attachments were omitted entirely — making it look like the note had no files. Attachment filenames now always appear, with a note indicating when file content is not available.

Download bear-notes-mcpb-20260313.mcpb to install the extension.

v2.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Mar 18:55
f3f29dc

Changed

  • bear-create-note returns the note ID (#66): When a title is provided, the tool now polls Bear's database after creation and returns the note's unique identifier. This lets AI agents reference the newly created note in follow-up operations (add text, add tag, etc.) without a separate search step. When no title is given or the lookup times out, the tool still succeeds — returning the ID is best-effort.

Download bear-notes-mcpb-20260306.mcpb to install the extension.