freshcrate
Home > MCP Servers > bear-notes-mcp

bear-notes-mcp

MCP Server for Bear note taking app available as Claude Desktop extension or standalone server for any other AI tool

Description

MCP Server for Bear note taking app available as Claude Desktop extension or standalone server for any other AI tool

README

Supply Chain Ask DeepWiki bear-notes-mcp MCP server

Buy Me a Coffee

Bear Notes MCP Server

Search, read, create, and update your Bear Notes from any AI assistant. Available as a one-click Claude Desktop extension and as a standalone npm package for any MCP client.

This local-only MCP server reads Bear's SQLite database for fast search with OCR support, and uses Bear's native API for writes. Complete privacy: no external connections, all processing on your Mac.

Example prompts:

Summarize our conversation and create a new Bear note with it

Interview me about my side project idea and capture the key points in a Bear note

Help me restructure the outline in my "Product Launch" note

Let's brainstorm blog post ideas — save the best ones to my Bear note and refine them as we go

✨ Key Features

  • 12 MCP tools for searching, reading, creating, updating, tagging, and archiving notes
  • OCR search — finds text inside attached images and PDFs
  • Date-based search with relative dates ("yesterday", "last week", "start of last month")
  • Tag management — list tags as a tree, find untagged notes, add tags to notes
  • New note convention (opt-in) — place tags right after the title instead of at the bottom
  • Content replacement (opt-in) — replace the full note body or a specific section
  • Local-only — no network calls, all data stays on your Mac

Note

Complete privacy (except the data you send to your AI provider when using an AI assistant, of course): this server makes no external connections. All processing happens locally on your Mac using Bear's own database and API. There is no extra telemetry, usage statistics or anything like that.

šŸ“¦ Installation

Claude Desktop Extension

Prerequisites: Bear app must be installed and Claude Desktop must be installed.

  1. Download the latest bear-notes-mcpb-*.mcpb extension file from Releases

  2. Make sure your Claude Desktop is running (start if not)

  3. Doubleclick on the extension file – Claude Desktop should show you the installation prompt

    If doubleclick does not work for some reason, then open Claude -> Settings -> Extensions -> Advanced Settings -> click "Install Extension".

  4. DONE!

Ask Claude to search your Bear notes with a query like "Search my Bear notes for 'meeting'" - you should see your notes appear in the response!

Standalone MCP Server

Want to use this Bear Notes MCP server with Claude Code, Cursor, Codex, or other AI assistants?

Requirements: Node.js 24.13.0+

Claude Code (one command)

claude mcp add bear-notes --transport stdio -- npx -y bear-notes-mcp@latest

Other AI Assistants

Add to your MCP configuration file:

{
  "mcpServers": {
    "bear-notes": {
      "command": "npx",
      "args": ["-y", "bear-notes-mcp@latest"]
    }
  }
}

More installation options and local development setup — NPM.md

šŸ› ļø Tools

  • bear-open-note - Read the full text content of a Bear note including OCR'd text from attached images and PDFs
  • bear-create-note - Create a new note in your Bear library with optional title, content, and tags
  • bear-search-notes - Find notes by searching text content, filtering by tags, or date ranges. Includes OCR search in attachments
  • bear-add-text - Insert text at the beginning or end of a Bear note, or within a specific section identified by its header
  • bear-replace-text - Replace content in an existing Bear note — either the full body or a specific section. Requires content replacement to be enabled in settings.
  • bear-add-file - Attach a file to an existing Bear note. Provide a local file path (preferred) or base64-encoded content.
  • bear-list-tags - List all tags in your Bear library as a hierarchical tree with note counts
  • bear-find-untagged-notes - Find notes in your Bear library that have no tags assigned
  • bear-add-tag - Add one or more tags to an existing Bear note
  • bear-archive-note - Archive a Bear note to remove it from active lists without deleting it
  • bear-rename-tag - Rename a tag across all notes in your Bear library
  • bear-delete-tag - Delete a tag from all notes in your Bear library without affecting the notes

āš™ļø Configuration

Debug Logging

Enable verbose logging for troubleshooting.

  • Claude Desktop: Settings → Extensions → Configure (next to Bear Notes) → toggle "Debug Logging" → Save → Restart Claude
  • Standalone MCP server: set environment variable UI_DEBUG_TOGGLE=true

New Note Convention

By default, Bear places tags at the bottom of a note when created via API. Enable this option to place tags right after the title instead, separated by a horizontal rule.

See note structure with this convention enabled
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│ # Meeting Notes              │  ← Note title
│ #work #meetings              │  ← Tags right after title
│                              │
│ ---                          │  ← Separator
│                              │
│ Lorem Ipsum...               │  ← Note body
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

Tip

This convention is disabled by default — it's opt-in so existing behavior is preserved.

  • Claude Desktop: Settings → Extensions → Configure (next to Bear Notes) → toggle "New Note Convention" → Save → Restart Claude
  • Standalone MCP server: set environment variable UI_ENABLE_NEW_NOTE_CONVENTION=true

Example standalone configuration with the convention enabled:

{
  "mcpServers": {
    "bear-notes": {
      "command": "npx",
      "args": ["-y", "bear-notes-mcp@latest"],
      "env": {
        "UI_ENABLE_NEW_NOTE_CONVENTION": "true"
      }
    }
  }
}

Content Replacement

Enable the bear-replace-text tool to replace content in existing notes — either the full note body or a specific section under a header.

Tip

This feature is disabled by default — it's opt-in because replacement is a destructive operation.

  • Claude Desktop: Settings → Extensions → Configure (next to Bear Notes) → toggle "Content Replacement" → Save → Restart Claude
  • Standalone MCP server: set environment variable UI_ENABLE_CONTENT_REPLACEMENT=true

Example standalone configuration with content replacement enabled:

{
  "mcpServers": {
    "bear-notes": {
      "command": "npx",
      "args": ["-y", "bear-notes-mcp@latest"],
      "env": {
        "UI_ENABLE_CONTENT_REPLACEMENT": "true"
      }
    }
  }
}

Technical Details

This server reads your Bear Notes SQLite database directly for search/read operations and uses Bear's X-callback-URL API for write operations. All data processing happens locally on your machine with no external network calls.

Platforms Supported

macOS only because Bear desktop works only on macOS.

Logs

Claude Desktop:

  • MCP server logs go into ~/Library/Logs/Claude/main.log, look for bear-notes-mcp
  • MCP transport logs go to ~/Library/Logs/Claude/mcp-server-Bear\ Notes.log

Standalone MCP server:

  • Logs are written to stderr; enable debug logging with UI_DEBUG_TOGGLE=true

FAQ

Could this steal my data?

No. The server only reads Bear's local database (same data Bear app shows you) and uses Bear's native API to add text to the notes. No network transmission, no external servers.

Why SQLite and not just a native Bear app's x-callback-url API?

For read operations (search/open), the x-callback-url API returns the note data in x-success response: that would require a server or custom binary to handle x-success responses - both risky and fragile. Direct SQLite read-only access is simpler and more reliable for searching and reading notes.

Why native Node.js SQLite instead of third-party packages?

This avoids shipping an SQLite binary from third-party node packages, which poses supply chain risks and blocks the Claude Desktop extension from running on macOS.

Anthropic does not sign third-party SQLite binaries (obviously), causing macOS security systems to flag that the Claude process from a binary signed by Anthropic is trying to run another binary signed by a third party. As a result, Claude Desktop cannot run the extension.

When I install the extension, I see a red warning: "Installing will grant access to everything on your computer." - what does this mean?

This is how Claude for Desktop reacts to the fact that this extension needs access to the Bear SQLite database on your Mac.

Claude warning system does not distinguish between the need to access only one file (what the extension does) versus the need to access all files (this is NOT what the extension does).

One of the ways to validate this is asking your Claude to analyze the codebase (it is pretty small) before installing the extension and tell you.

How can I report a bug or contribute?

Use issues or discussions! I'd be glad to see your feedback or suggestions, or your help to make this project better! ā¤ļø

Staying Up To Date

Consider subscribing to release announcements to know when a new version is released:

I also post to reddit.com/r/bearapp/ when there's a new release.

Release History

VersionChangesUrgencyDate
v2.12.0### 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. High4/21/2026
v2.11.0### 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), tHigh4/20/2026
v2.10.0### 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. --- DownloaMedium4/13/2026
v2.9.0## Changed - **`bear-add-file` accepts `file_path` as alternative to `base64_content`** ([#88](https://github.com/vasylenko/bear-notes-mcp/issues/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 exclMedium3/31/2026
v2.8.2### Changed - **Repository renamed to `bear-notes-mcp`** ([#75](https://github.com/vasylenko/bear-notes-mcp/issues/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 toMedium3/29/2026
v2.8.1### Fixed - **File attachment data no longer contaminates note body during write operations** ([#86](https://github.com/vasylenko/claude-desktop-extension-bear-notes/issues/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 fLow3/14/2026
v2.8.0### Added - **`bear-rename-tag`** tool ([#63](https://github.com/vasylenko/claude-desktop-extension-bear-notes/issues/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](https://github.com/vasylenko/claude-desktop-extension-bear-notes/issues/64)) — delete a tag from all notes without affecting the notes themselves. ### Fixed - **`bear-list-tags` no longer shows ghost tLow3/13/2026
v2.7.0### Changed - **`bear-create-note` returns the note ID** ([#66](https://github.com/vasylenko/claude-desktop-extension-bear-notes/issues/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-effortLow3/6/2026
v2.6.0### Added - **Server instructions for MCP clients**: MCP clients now receive orientation at initialization — Bear's note structure, section model, and how tools relate to each other. This helps AI agents understand that section-level operations apply only to direct content under a header (not nested sub-sections) before they attempt any edits. ### Changed - **Improved tool descriptions for `bear-add-text` and `bear-replace-text`** ([#73](https://github.com/vasylenko/claude-desktop-extension-beaLow3/4/2026
v2.5.0### Added - **bear-replace-text** tool — replace content in an existing Bear note, either the full body or a specific section by header (**disabled by default**, opt-in). Two replacement scopes: - `section` — replaces content under a specific header while preserving the rest of the note - `full-note-body` — replaces the entire note body (everything below the title) **HOW TO ENABLE**: - For Claude Extension: Claude Settings -> Extensions -> Configure (next to the extension name) -> toLow2/22/2026
v2.4.1### Fixed - **Tag search no longer matches false positives** ([#67](https://github.com/vasylenko/claude-desktop-extension-bear-notes/issues/67)): Searching by tag (e.g., `car`) previously matched unrelated tags sharing a prefix (`career`), as well as tag-like text in code blocks and URLs. Tag filtering now uses Bear's relational tag tables for exact matching. Nested child tags still match as expected (e.g., `career` returns notes tagged `career` and `career/meetings`). - **Read-only database conLow2/21/2026
v2.4.0### Added - **New note convention** -- UI configuration (**disabled by default**, opt-in) to enforce the specific format for the new notes: ``` ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” │ # Meeting Notes │ ← Note title │ #work #meetings │ ← Tags right after title │ │ │ --- │ ← Horizontal rule separating title and tags from body │ │ │ Lorem Ipsum... │ ← Note body Low2/16/2026
v2.3.0### Added - **bear-archive-note** tool -- archive a Bear note to remove it from active lists without deleting it. Authored by [@wasuregusa18](https://github.com/wasuregusa18) --- Download bear-notes-mcpb-20260213.mcpb to install the extension. Low2/13/2026
v2.2.0### Added - **Pinned Notes Filter**: New `pinned` parameter for `bear-search-notes` tool ([#37](https://github.com/vasylenko/claude-desktop-extension-bear-notes/issues/37)). Matches Bear's UI: - `pinned: true` alone works as the pinned section in UI – show all pinned notes, no mater where they were pinned - `pinned: true` with `tag` returns notes pinned within that tag - Combines with other filters (search term, dates) for refined searches - **Total Count in Search Results**: Search toolLow1/18/2026
v2.1.1### Internal - **Preparation for Desktop Extension Catalog submission** - adjustments to the extension manifest - updates to README.md - demo screenshot **No features/tools changes in this release** --- Download bear-notes-mcpb-20251230.mcpb to install the extension. Low12/30/2025
v2.1.0### Added - **Use bear-mcp-server standalone**: You can now use the MCP server from this extension separately, e.g., for your Claude Code, Cursor, Codex or other AI tool - npmjs publishing with additional GH action - updated task for versions to process version changes in package-lock.json Standalone MCP usage instructions -- [NPM.md](./docs/NPM.md) **No features/tools changes in this release** --- Download bear-notes-mcpb-20251230.mcpb to install the extension. Low12/30/2025
v2.0.0### Changed - **Migrated from DXT to MCPB**: Anthropic renamed Desktop Extensions (DXT) to MCP Bundles (MCPB) - Package extension changed from `.dxt` to `.mcpb` - Updated to `@anthropic-ai/mcpb` v2.1.2 - Manifest updated to MCPB 0.3 specification mcpb is a core tool for the extension and together with manifest schema update, these changes together mark the v2.0 of the extension **Features (MCP tools) are the same as in 1.4.0 – no changes to business logic in this release** If you experiencLow12/26/2025
v1.4.0### Added - **Tag Management Tools**: - `bear-list-tags` - List all tags as hierarchical tree with note counts - `bear-find-untagged-notes` - Find notes without any tags - `bear-add-tag` - Add one or more tags to existing notes ### Changed - **Merged text tools**: Combined `bear-add-text-append` and `bear-add-text-prepend` into single `bear-add-text` tool with `position` parameter ('beginning' or 'end') ### Fixed - Bear no longer steals focus when executing URL commands (uses `open -g` flaLow12/25/2025
v1.3.0### Added - **Date-based search**: - supports filtering by note's creation and modification date - supports relative dates, e.g., 'yesterday' or 'last week', etc or exact dates - notes can be searched by date alone, without requiring a search term or tag --- Download bear-notes-mcpb-20251117.dxt to install the extension. Low11/17/2025
v1.2.0### Added - **File Attachment Support**: New `bear-add-file` tool for attaching files to Bear notes - Accepts base64-encoded file content (works with Claude Desktop's files feature) - Supports all file types supported by Claude Desktop ### Technical - Optimized for Claude Desktop's sandbox architecture - no external filesystem access required - Base64 encoding happens in Claude's sandbox via built-in shell commands ### Known limitation - Tool streaming passes base64 to the MCP tool call veryLow11/2/2025
v1.1.0### Added - **File Search**: Extended search functionality to include OCR'd text from images and PDFs ([#4](https://github.com/vasylenko/claude-desktop-extension-bear-notes/issues/4)) Prioritize completeness over context window efficiency - better to have full information upfront than incomplete results requiring multiple API calls and confused MCP client or an end user. - Always search files: searchNotes() hardcoded to include OCR content from attachments - no includeFiles parameter -Low9/8/2025
v1.0.0First release. Bear Notes MCP Bundle - Claude Desktop extension for comprehensive Bear Notes integration. Features: - 5 MCP tools: search, read, create, and append/prepend to Bear notes - Tool annotations for client safety and UX hints - Native Node.js SQLite for read oprations - Bear's X-callback-URL API integration for write operations --- Download bear-notes-mcpb-20250903.dxt to install the extension. Low9/3/2025

Dependencies & License Audit

Loading dependencies...

Similar Packages

trace-mcpMCP server for Claude Code and Codex. One tool call replaces ~42 minutes of agent explorationv1.28.0
claude-app-serverProvide a JSON-RPC 2.0 server that enables Claude Code access via stdio or WebSocket without requiring an API key or extra authentication.main@2026-04-21
arxiv-mcp-serverarXiv MCP Server Client šŸ™ enables AI assistants to search, retrieve, analyze, and summarize arXiv papers with features like author/category browsing, trends, and citation insights.0.0.0
product-management-skill🧠 Enable AI coding agents to adopt product management skills and build user-focused software efficiently.main@2026-04-21
scagentšŸ” Discover security flaws and improve code quality with ShenCha, an AI-powered autonomous code audit agent designed for developers.main@2026-04-21