| Crates.io | bear-mcp |
| lib.rs | bear-mcp |
| version | 0.1.0 |
| created_at | 2025-11-06 21:48:46.882078+00 |
| updated_at | 2025-11-06 21:48:46.882078+00 |
| description | A read-only Model Context Protocol (MCP) server for Bear notes |
| homepage | |
| repository | https://github.com/jakeswenson/bear-mcp |
| max_upload_size | |
| id | 1920770 |
| size | 117,517 |
A read-only Model Context Protocol (MCP) server for Bear notes, built on bear-query. This server allows AI assistants like Claude to search, retrieve, and explore your Bear notes library.
search_notesSearch for notes in Bear by title or content with optional filters. Uses Bear's database search capabilities for efficient queries.
Parameters:
query (optional): Search text to match against note titles and content. When provided, performs an efficient database search. When omitted, returns recent notes.pinned_only (optional): Only return pinned notesinclude_trashed (optional): Include trashed notes in results (default: false)include_archived (optional): Include archived notes in results (default: false)limit (optional): Maximum number of results to return (default: 50 for search, 10 for listing)Examples:
// Search for notes containing "rust programming"
{
"query": "rust programming",
"limit": 10
}
// List pinned notes only
{
"pinned_only": true
}
// Get all notes including archived
{
"include_archived": true,
"limit": 100
}
get_noteGet the full content of a specific note by its unique ID. Uses direct database lookup for fast retrieval.
Parameters:
note_id (required): The unique identifier (UUID) of the note to retrieveExample:
{
"note_id": "ABC123-DEF456-GHI789"
}
Note: This method performs a direct lookup by ID and does not fetch all notes, making it very efficient.
list_tagsList all tags in the Bear database with modification dates.
Parameters: None
# Clone the repository
git clone <your-repo-url>
cd bear-mcp
# Build the project
cargo build --release
# The binary will be at target/release/bear-mcp
Add the server to your Claude Desktop configuration file:
Location: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"bear": {
"command": "/Users/YOUR_USERNAME/path/to/bear-mcp/target/release/bear-mcp"
}
}
}
Replace /Users/YOUR_USERNAME/path/to/bear-mcp with the actual path to your cloned repository.
The server uses the RUST_LOG environment variable for logging configuration:
{
"mcpServers": {
"bear": {
"command": "/Users/YOUR_USERNAME/path/to/bear-mcp/target/release/bear-mcp",
"env": {
"RUST_LOG": "info"
}
}
}
}
Log Levels:
error - Only errorswarn - Warnings and errorsinfo - Informational messages (default)debug - Detailed debuggingtrace - Very verbose outputLogs are written to stderr and will appear in Claude Desktop's logs.
Once configured, you can ask Claude to interact with your Bear notes:
The server connects directly to Bear's SQLite database in read-only mode:
~/Library/Group Containers/9K33E3U3T4.net.shinyfrog.bear/Application Data/database.sqliteSQLITE_OPEN_READ_ONLY with PRAGMA query_only = ONThe server uses the bear-query library which provides:
# Run with debug logging
RUST_LOG=debug cargo run
You can test the server using the MCP Inspector or by piping JSON-RPC messages:
# Example: Call the list_tags tool
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_tags"}}' | cargo run
rmcp - Rust MCP SDKbear-query - Bear database query librarytokio - Async runtimetracing - Logging and diagnosticsserde - Serialization framework~/Library/Group Containers/9K33E3U3T4.net.shinyfrog.bear/Application Data/database.sqliteclaude_desktop_config.json is correct and absolutechmod +x target/release/bear-mcp~/Library/Logs/Claude/list_tags first to confirm database connectivity[Add your license here]
[Add contributing guidelines here]