Releases: vasylenko/bear-notes-mcp
Releases · vasylenko/bear-notes-mcp
Release list
v3.0.1
Internal
- TypeScript upgraded from 5.9.3 to 6.0.3 —
@types/nodeis now declared explicitly intsconfig.json(TS6 no longer auto-loads ambient types reachable only through transitive peer deps). Hand-rolled regex escapes inoperations/notes.tsreplaced with the Stage-4RegExp.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
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-capabilitiestool — when Edit Mode is off, surfaces the unlock guidance throughtools/listso it reaches the model in clients that don't forward the MCPinstructionsfield (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_REPLACEMENTnow gates write tools at registration time instead of call time. When unset (default),tools/listadvertises the 4 read-only Bear-domain tools (bear-search-notes,bear-open-note,bear-find-untagged-notes,bear-list-tags) plusbear-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 onlybear-replace-textcalls at runtime with a "Content replacement is not enabled" error — is gone, along with that error message. The MCPinstructionsfield 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 fromtools/list(andbear-capabilitiesappear in their place) until they enable Edit Mode (Claude Desktop: Settings → Extensions → Configure → toggle Edit Mode; CLI: setUI_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 relevance —
bear-search-notesnow 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 likequarterly planning offsite notesrank notes covering more of the query terms higher. bear-search-notesreturns up to 30 results by default (was 50) — the cap is a default, not a ceiling: callers can passlimitto 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-fileenforces 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
NOTICEattribution. SeeLICENSE.md.
Removed
bear-add-fileno longer acceptsbase64_content(breaking) — passfile_pathinstead. 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 forenginno longer matchesengineering. 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
Removed
bear-grab-urltool — 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
Added
bear-search-notesnow includes tags in results — each search result with tags shows aTags: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: truein 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 setsisError: trueinstead 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-tagcorrectly marked as idempotent — the tool's MCP annotation now reflects that adding an already-present tag is a no-op. MCP clients can safely retrybear-add-tagcalls on transient failures without risk of unintended side effects.
Fixed
bear-add-tagandbear-add-filenow return complete note metadata — mutation tool responses previously had gaps:bear-add-tagomitted the note ID, andbear-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
Added
bear-grab-urltool — 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
Changed
bear-add-fileacceptsfile_pathas alternative tobase64_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. Thefilenameparameter is auto-inferred from the path when omitted. The two input modes (file_pathandbase64_content) are mutually exclusive.bear-open-noteaccepts title as an alternative to ID (#60): The tool now takes an optionaltitleparameter, 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 usingbear-search-notesfor partial text search.
v2.8.2
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
Fixed
- File attachment data no longer contaminates note body during write operations (#86):
bear-open-notepreviously appended a synthetic# Attached Filessection directly into the note text. When an AI agent then usedbear-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
Added
bear-rename-tagtool (#63) — rename a tag across all notes in your Bear library. Useful for reorganizing tag taxonomy, fixing typos, or restructuring tag hierarchies.bear-delete-tagtool (#64) — delete a tag from all notes without affecting the notes themselves.
Fixed
bear-list-tagsno 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
Changed
bear-create-notereturns 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.