LabscoMCP early access ↗
bejaminjonesMCP SERVER

Bear Notes Read & Write MCP

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.

by bejaminjones ↗Note-Taking & Personal Knowledge BasesCommunity

LABSCO 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

Build from source — git clone https://github.com/bejaminjones/bear-notes-mcp