Skip to main content

Local MCP server to read and edit macOS Bear notes from Claude

Project description

bearnotes-mcp

A tiny local MCP server that lets any local MCP client on macOS — Claude Code, Claude Desktop, Cursor, VS Code — read and edit your Bear notes: search, read, create, append, and overwrite (e.g. tick a checkbox).

No Bear API token is needed. Reads use Bear's local database (opened read-only); writes use Bear's bear://x-callback-url scheme. Neither requires a token, and nothing here ever touches the network.

Requirements

  • macOS with Bear installed and opened at least once (the database only exists after Bear has run).
  • uv — install with curl -LsSf https://astral.sh/uv/install.sh | sh (or brew install uv).

No Python setup, no token.

Install — Claude Code

1. Warm the cache (first run downloads ~30 packages — may take a minute; ends with selfcheck ok):

uvx bearnotes-mcp --selfcheck

2. Register — one command, at user scope so it's available in every project:

claude mcp add bear -s user -- uvx bearnotes-mcp

3. Verify:

claude mcp list        # → bear: ✔ Connected

If the very first connect times out, just retry (the cache is warm after one attempt), or start Claude once with MCP_TIMEOUT=60000 claude.

Install — Claude Desktop, Cursor, VS Code

Add an mcpServers entry. Use the full path to uvx — GUI apps don't see your shell PATH (which uvx, e.g. /opt/homebrew/bin/uvx):

{
  "mcpServers": {
    "bear": {
      "command": "/opt/homebrew/bin/uvx",
      "args": ["bearnotes-mcp"]
    }
  }
}
  • Claude Desktop — Settings → Developer → Edit Config (creates ~/Library/Application Support/Claude/claude_desktop_config.json); paste, then fully quit and restart. Logs: ~/Library/Logs/Claude/mcp-server-bear.log.
  • Cursor — same block in ~/.cursor/mcp.json.
  • VS Code (Copilot).vscode/mcp.json, but the top-level key is servers (not mcpServers).
  • Windsurf / Cline / Zed / LM Studio — same stdio pattern; check their docs for the exact file.

Cannot work: claude.ai in the browser, mobile apps, remote/hosted connectors, and non-Mac machines — they can't spawn a local process, and Bear lives only on your Mac.

Alternatives: bleeding edge, or run from a clone

Latest main without waiting for a release (builds from GitHub each install):

claude mcp add bear -s user -- uvx --from git+https://github.com/samcrudge/bearnotes-mcp bearnotes-mcp

Clone it to read/hack the code first:

git clone https://github.com/samcrudge/bearnotes-mcp
claude mcp add bear -s user -- uv --directory /absolute/path/to/bearnotes-mcp run bearnotes-mcp

To point at a non-default Bear database, add -e BEAR_DB=/path/to/database.sqlite to the claude mcp add command.

How it works

  • Reads — Bear's local SQLite DB, opened read-only (mode=ro).
  • Writes — Bear's x-callback-url scheme (create, add-text in append / replace_all mode).

The DB is never written directly (that corrupts Bear's sync). Before any full-body overwrite, the note's current text is snapshotted to ~/.bear-mcp-backups/ as a timestamped .md file.

Tools

Tool What it does
search_notes(query="", limit=20) Search non-trashed notes; empty query = most recent
read_note(id) Return {id, title, text}
create_note(title, text="", tags=[]) Create a new note
append_note(id, text) Append to a note
replace_note(id, text) Overwrite a note's entire text; backs up first

What this can access

Once connected, the client can read every non-trashed note (encrypted notes are refused) and create, append to, or overwrite notes. Everything runs locally with no network calls; the database is opened strictly read-only; and before any full-body overwrite the current text is backed up to ~/.bear-mcp-backups/.

Troubleshooting

  • First connect times out — retry (cache is warm now), or MCP_TIMEOUT=60000 claude.
  • Desktop fails instantly"command" must be the full path to uvx (which uvx).
  • No notes found — open Bear at least once so its database exists.

License

Apache-2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bearnotes_mcp-0.1.0.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bearnotes_mcp-0.1.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file bearnotes_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: bearnotes_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bearnotes_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cb3fa37cf99d3feee3275281bc69bc1aa0eb60e8ca93d5b9c0f8a0c21fc1f61f
MD5 6404a9414d3c0f37ae7d6079955a4bc9
BLAKE2b-256 2d7c3aac579f5961e4f6eeac13cdda9370d0f18eeaca2731b27d6d2b66912400

See more details on using hashes here.

File details

Details for the file bearnotes_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bearnotes_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bearnotes_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4fa0be20ae3017b5e2cf37044571222936de2c21119cd539b44badeecaf601bb
MD5 a9b60f0fd78a5bacf3acb3339d787593
BLAKE2b-256 25735777295cb5821543692b3b7b98b56754318f99e74e818a08a25beefaeff1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page