🚀 Bear 2.8: BearCLI, Claude Connector, and MCP server

Security is a complex topic, so I’d be careful with black-and-white statements :slight_smile:

You’re right that folders inside ~/Library/Group Containers/ are protected by SIP, but many other locations aren’t, notably ~/Library/Containers (the home folder for sandboxed apps) and your actual home folder. Non-sandboxed apps can freely read, copy, or delete files from these locations.

So the point still stands: if you run a sandboxed app and don’t grant it excessive permissions, you’re mostly safe. If you run a non-sandboxed app, your data is at risk and not just your Bear notes. That same script you posted could be trivially rewritten to grab files from dozens of other apps that don’t have SIP protection on their data.

Worth noting too: bearcli doesn’t bypass anything macOS provides, it operates within the same permission model every other tool does. The convenience it adds for legitimate use is the same convenience an attacker would get, but an attacker with shell access on your machine already has much bigger data to exploit.

One more thing worth mentioning: if you enable “lock Bear at launch” in the Bear preferences, bearcli is disabled by default, and encrypted notes can’t be accessed by it under any circumstances.

This we can definitely consider, we’re always open to making things more secure (even if security is always a tradeoff).

Thanks for the feedback!

@matteo to reconfirm, currently Bear isn’t accessible to third party apps at all - without cli. Even with sudo..

ls -la ~/Library/Containers/net.shinyfrog.bear/Data
Operation not permitted

sudo ls -la ~/Library/Containers/net.shinyfrog.bear/Data
Operation not permitted

cat ~/Library/Group\ Containers/9K33E3U3T4.net.shinyfrog.bear/Application\ Data/database.sqlite
Operation not permitted

>bearcli doesn’t bypass anything macOS provides

As you can see above, there is no way to get database.sqlite. With cli, however, all notes are accessible to any app. Could you clarify how it equates to “doesn’t bypass”?

>That same script you posted could be trivially rewritten to grab files from dozens of other apps that don’t have SIP protection on their data

I am aware of this. It requires careful planning about which files where to place. It’s not a big deal and been known for years.

2 Likes

What a pantload of an idea. Making a tool for thought into a tool for slop. Guys, I think you made a mistake.

1 Like

As long as AI is not build into bear itself I really don’t carry and nobody else should either. Actually that is the best way: who wishes can connect its AI to bear and who dislikes AI isn’t bothered at all. Perfect solution, isn’t it?

5 Likes

“After following this space for a while, it seems like the industry has shifted. Early on, the goal was to bake AI directly into applications. Now the smarter approach — and what Bear appears to be doing — is to provide an interface that lets you bring your own AI. You get the flexibility to use whatever model you prefer, and if you’d rather not use AI at all, nothing changes. It’s just there when you want it.”

3 Likes

This is amazing! Thank you

Just wanted to chip in, I love that this was added as part of Bear 2.8!

Hi there! Great to see official MCP server :blush:

gpt-5.5 model rejects the tool call:

Error: Error code: 400 - {‘error’: {‘message’: “Invalid schema for function ‘mcp_bear_edit_note’: In context=(‘properties’, ‘edits’), array schema missing items.”, ‘type’: ‘invalid_request_error’, ‘param’: ‘tools[22].parameters’,
‘code’: ‘invalid_function_parameters’}}

I think that was happening because the edits array parameter was missing its items definition in the JSON schema, which caused OpenAI (gpt-5.5) to reject it. For example, Claude Sonnet, which is more tolerant of schema quirks, so edit_note should work fine here. The fix for gpt-5.5 would need to be on the MCP server side (adding “items”: {…} to the edits array schema).

Does the CLI include a command / subcommand to show details of the currently open note in Bear?

Thanks for reporting! We will have a look.

Not currently, but we have plans in that direction. What are you trying to achieve?

Trying to see if I can improve the speed of this daily note navigation helper that currently relies on reading the database.

What on earth are you talking about. AI hasn’t been added to Bear.

1 Like

This is a great addition to Bear. Being able to integrate Bear into command line workflows is extremely useful.

I have hit a snag with the mcp-server though. I have set up Zed to use the Bear MCP server but I’m getting this error message

2026-05-10T10:42:25+12:00 ERROR [project::context_server_store] bear context server failed to start: Unsupported protocol version: ProtocolVersion(“2025-06-18”)

Any idea how to resolve this?

Thanks for reporting. We will try to find a fix.

An official CLI is a fantastic addition to Bear and entirely in the spirit of simplicity and local-first that makes Bear so useful.

Not having to manually hook into the sqlite db makes things a lot simpler (and safter) going forward!

To the AI skeptics: I hear you 100%, but this changes nothing. The sqlitedb was always accessible to any AI you allowed to look at it. If an AI is accessing Bear it’s because you gave it permission to do so. Doing it through an official API (like bearcli) just makes it a lot safer.

1 Like

While the wording here is a bit alarmist, the underlying concern is valid: Shipping `bearcli` as enabled by default removes the protection that Full Disk Access (FDA) normally provides against other processes accessing the Bear database.

A sensible compromise could be to gate `bearcli` behind a toggle in Bear settings and default it to OFF. That would maintain the default safety net that FDA provides, while still allowing the user to enable that setting, accepting the reduced protections it entails.

1 Like

Also note that only non-sandboxed processes can execute `bearcli`. Sandboxed applications are prevented from executing anything outside their sandbox.

Terminals do not, for obvious reasons, opt in to the `com.apple.security.app-sandbox` entitlement, so the node script you’re running is not sandboxed. A sandboxed app would not be able to execute `bearcli` and access your notes that way.

I live in a world of software development, which means lots of random software running / compiling through terminal.

The suggestion to use “sandboxed” apps is unhelpful.

1 Like

Hi, new Bear user here :waving_hand: I’m a longtime (basic) user of Apple Notes and decided to look for a markdown friendly solution so I can pair it with some kind of ‘personal assistant AI’ to help me with my knowledge base. I chose Bear over Obsidian because of its superior (& cost effective) sync within the Apple ecosystem.
I’m also concerned about privacy and security so plan to use this with a local LLM which I’m running in Docker so I can choose exactly what it has visibility into, on my Mac.

So thank you for this connector capability :slightly_smiling_face: and here is how I’ve got it working on my MacBook.
Setup - LLM - Qwen3.6-35B-A3B on my MacBook using oMLX.

AI Application - AnythingLLM in a container (using OrbStack instead of Docker)

Config summary - Run bearcli mcp-server process in macOS and configure AnythingLLM to access it via a TCP bridge created using the socat command.

Step 1 : To allow AnythingLLM to access the running instance of bearcli mcp-server I’m these commands to bridge the traffic between the mcp server (Bear app) running in macOS and AnythingLLM in docker.
brew install socat
socat TCP-LISTEN:9090,reuseaddr,fork EXEC:"/Applications/Bear.app/Contents/MacOS/bearcli mcp-server"

Step 2 : AnythingLLM MCP config is located at /docker/containers/anythingllm/app/server/storage/plugins/anythingllm_mcp_servers.json which one can get to by clicking on ‘Files’ in the AnythingLLM container menu (above screenshot).
Add this config to the file and restart the container.
{
“mcpServers”: {
“bear”: {
“command”: “nc”,
“args”: [ “host.docker.internal”, “9090”]
}
} }

Step 3: Restart the container and visit the config page at - http://localhost:3001/settings/agents
One can now see the Bear MCP connector in the AnythingLLM config and limit access to functionality as needed.

Success! - Ask the AI to find things in your Bear notes as seen in the screenshot below.
Ultimately my plan is to configure jobs within AnythingLLM so agents can lookup information and update a dashboard of sorts in my Bear notes so that I just have to open the Bear app to get access to info I need for the day rather than visiting multiple websites :slight_smile:

1 Like