Labsco
MCP SERVER

Bear MCP Server

by bejaminjones

Search, analyse and write Bear notes from Claude — reads come straight from Bear's SQLite database, writes go through Bear's own x-callback-url API so iCloud sync stays intact.

Note-Taking & Personal Knowledge Bases
Summary
The hybrid design is the reason writing is safe here.

Tools that write into Bear's database directly are the ones that produce sync conflicts and corrupted notes; routing writes through the x-callback-url API means Bear's own sync logic stays in charge, and reads still get the speed of direct SQLite. Two things to expect: tags are silently normalised (lowercased, spaces and hyphens stripped) with a warning in the response, and the author's disclaimer stands — this is not affiliated with Bear, so keep your usual backups.

What it is

An MCP server for Bear on macOS with a deliberately split architecture: read operations query Bear's SQLite database directly for speed, while every write goes through Bear's official x-callback-url API so that iCloud sync coordinates the change instead of fighting it. That split is why writes are safe to run while Bear is open.

What you get
  • Basic access to the library: database statistics, note listing with filters, lookup by ID or exact title, and every tag with its usage count — `get_database_stats`, `get_notes`, `get_note_by_id`, `get_note_by_title`, `get_tags`, `get_notes_by_tag`
  • Search beyond title matching: full-text with relevance scoring, similarity matching, related notes by tag and content, multi-criteria filtering and autocomplete — `search_notes_fulltext`, `find_similar_notes`, `get_related_notes`, `get_notes_advanced`, `get_notes_with_criteria`, `get_search_suggestions`, `get_recent_notes`, `get_note_counts_by_status`, `search_notes_regex`
  • Analytics over your own writing: note statistics, content-pattern analysis, attachment inventory, tag hierarchy, tag usage patterns and trends over time — `get_note_analytics`, `analyze_note_metadata`, `get_notes_with_metadata`, `get_file_attachments`, `get_tag_hierarchy`, `get_tag_analytics`, `analyze_tag_relationships`, `get_tag_usage_trends`
  • Writes that survive sync: create, update, duplicate and archive notes, plus forcing hashtag reprocessing singly or in bulk — `create_note`, `update_note`, `duplicate_note`, `archive_note`, `trigger_hashtag_parsing`, `batch_trigger_hashtag_parsing`
  • Tag sanitisation with a warning attached: `Project` becomes `project`, `tag name` becomes `tagname`, `project-alpha` becomes `projectalpha`, while forward slashes survive so `project/alpha` stays nested — and the response tells you what was changed
  • Conflict detection that prevents overwriting a concurrent change
Requirements

Bear installed on macOS and opened at least once, Node.js 18+, and a clone built with `npm install` and `npm run build`; register `dist/index.js` with `node`. No account and no key — the database is found automatically under `~/Library/Group Containers/9K33E3U3T4.net.shinyfrog.bear/Application Data/`, and `BEAR_DB_PATH` overrides that for reads. `NODE_ENV=development` turns on debug logging. The package is `bear-mcp-server` 1.0.0. Read operations are instant; writes take 1-2 seconds because Bear's URL scheme processes them. Bear can stay running throughout.

Setup effort

One command — npx -y bear-mcp-server