by vasylenko
MCP Server for Bear note taking app available as Claude Desktop extension or standalone server for any other AI tool
# Add to your Claude Code skills
git clone https://github.com/vasylenko/bear-notes-mcpGuides for using ai agents skills like bear-notes-mcp.
An unofficial, opinionated MCP server for Bear Notes — built around relevance-ranked search instead of substring matching. Results come ranked across titles, bodies, and hierarchical tags, with snippets and combinable filters (tag, date, pinned). Reads run direct against Bear's SQLite database — no Bear app required for queries.
Writes route through Bear's own URL handler — atomic and validated by Bear. Offline-first: no network calls, no telemetry, all processing on your Mac. Works with any MCP client — Claude Desktop, Claude Code, Codex, Gemini, Cursor. Ships as a one-click .mcpb extension or a standalone npm package.
Example prompts:
Find the deep-dive I wrote on export pipelines, somewhere under #engineering/
Append today's decisions to the 'Decisions' section of my Weekly Ops note
Pull every note under #research/llm-evals into a survey outline
Find my notes tagged #blog/drafts and draft this week's post outline

No comments yet. Be the first to share your thoughts!
node:sqlite, no network calls, no telemetry[!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.
This is an unofficial, opinionated alternative to the native Bear MCP. It fits when:
You have years of notes and substring search isn't enough. Search ranks results by relevance — titles, bodies, and tag matches across the whole library — so the right note rises to the top, even when your phrasing has drifted.
You bounce between MCP clients. Stdio transport works with Claude Desktop, Claude Code, Codex CLI, Gemini, Cursor, Windsurf — anything that speaks MCP. No per-client glue code, no lock-in.
You want to query without pulling Bear forward. Reads run straight against Bear's SQLite database. No need to keep Bear open — or even running — for a quick lookup mid-conversation. (Writes still route through Bear, atomically.)
You manage tags across the whole library. Rename or delete a tag everywhere it appears, atomically. Hierarchical tag matching in search rolls up subtags automatically — work that's tedious through Bear's UI alone.
You care about supply-chain hygiene. Native node:sqlite — no unsigned third-party binaries, no Gatekeeper hassles. Network-free server: no remote-fetch tools, no prompt-injection surface.
If you have a small library and just want a quick notes integration, you may not need this yet.
Prerequisites: Bear app must be installed and Claude Desktop must be installed.
Download the latest bear-notes-mcpb-*.mcpb extension file from Releases
Make sure your Claude Desktop is running (start if not)
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".
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!
Want to use this Bear Notes MCP server with Claude Code, Cursor, Codex, or other AI assistants?
Requirements: Node.js 24.13.0+
claude mcp add -s user bear-notes -- npx -y bear-notes-mcp@latest
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
bear-open-note - Read the full text content of a Bear note by its ID or title, including OCR'd text from attached images and PDFsbear-create-note - Create a new note in your Bear library with optional title, content, and tagsbear-search-notes - Find notes by relevance across titles, body, and OCR-extracted text from attached images and PDFs. Use a phrase or a few keywords describing what you're looking for; results are ranked by relevance and each includes a context snippet. Also supports tag, date-range, and pinned-only filters — combine with a search term or use them on their own to browse.bear-add-text - Insert text at the beginning or end of a Bear note, or within a specific section identified by its headerbear-replace-text - Replace content in an existing Bear note — either the full body or a specific section.bear-add-file - Attach a local file (image, PDF, document) to an existing Bear note by its ID or title. Bear extracts text from images and PDFs via OCR, making attachment content searchable.bear-list-tags - List all tags in your Bear library as a hierarchical tree with note countsbear-find-untagged-notes - Find notes in your Bear library that have no tags assignedbear-add-tag - Add one or more tags to an existing Bear notebear-archive-note - Archive a Bear note to remove it from active lists without deleting itbear-rename-tag - Rename a tag across all notes in your Bear librarybear-delete-tag - Delete a tag from all notes in your Bear library without affecting the notesbear-capabilities - Report the current server mode (read-only or Edit Mode) and how to unlock additional capabilitiesEnable verbose logging for troubleshooting.
UI_DEBUG_TOGGLE=trueBy 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.
┌──────────────────────────────┐
│ # 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.
UI_ENABLE_NEW_NOTE_CONVENTION=trueExample standalone configuration with the convention enabled:
{
"mcpServers": {
"bear-notes": {
"command": "npx",
"args": ["-y", "bear-notes-mcp@latest"],
"env": {
"UI_ENABLE_NEW_NOTE_CONVENTION": "true"
}
}
}
}
Edit Mode unlocks all 8 write tools: create notes, add or replace text (full body or by section header), attach files, manage tags, archive. When off, the server is fully read-only — tools/list returns the 4 read tools (bear-open-note, bear-search-notes, bear-find-untagged-notes, bear-list-tags) plus bear-capabilities (a discovery tool that surfaces this unlock guidance for clients that drop the MCP instructions field). The LLM cannot mutate your library by mistake.
[!TIP] Edit Mode is off by default so the server is provably read-only out of the box. Turn it on when you're ready for writes — and only when.
UI_ENABLE_CONTENT_REPLACEMENT=trueExample standalone configuration with Edit Mode enabled:
{
"mcpServers": {
"bear-notes": {
"command": "npx",
"args": ["-y", "bear-notes-mcp@latest"],
"env": {
"UI_ENABLE_CONTENT_REPLACEMENT": "true"
}
}
}
}
This server reads your Bear Notes SQLite database directly for search/re