Skip to main content
Glama
README.md
# Bear MCP Server

![CI/CD](https://github.com/philgetzen/bear-mcp/workflows/CI%2FCD%20Pipeline/badge.svg)
![License](https://img.shields.io/github/license/philgetzen/bear-mcp)
![npm version](https://img.shields.io/npm/v/bear-mcp)

An MCP (Model Context Protocol) server for integrating Bear Note Taking App with Claude Desktop. This server allows Claude to read, create, and search your Bear notes directly.

## ✨ Features (v4.0.2)

**Full data retrieval capabilities:**
- šŸ” **Search notes** and get complete results with metadata
- šŸ·ļø **Retrieve all tags** from your Bear database
- šŸ“– **Read note content** for analysis and summarization
- āœļø **Create notes** and get their IDs back
- šŸ“ **Add text** to existing notes
- āœ… **Test setup** with comprehensive status checking

## āš ļø Current Limitations & Usage Guidelines

### Browser Window Behavior
**Expected**: Brief browser windows may appear during search/tags operations due to Bear's callback system.
- Windows are automatically minimized and moved off-screen
- Auto-close within 1-2 seconds in most cases
- **Safe to manually close** if they persist
- **Focus is returned** to your original window automatically

### Search Reliability
**Success Rate**: ~80-90% of searches work reliably
- **Occasional timeouts** may occur (20-second limit)
- **Simple terms** work better than complex queries
- **Retry once** if a search times out
- **Single words** tend to be more reliable than phrases

### Best Practices
āœ… **Recommended Usage**:
```
Search my Bear notes for "project"
Get all my Bear tags
Create a note titled "Meeting Notes" with today's agenda
Add "Action item: Follow up" to my "Weekly Review" note
```

āš ļø **If Issues Occur**:
- **Timeouts**: Wait a moment and retry the same search
- **Browser windows**: Safe to close manually if they don't auto-close
- **No results**: Try simpler/broader search terms
- **Setup issues**: Use `check_bear_setup` to diagnose

## Available Tools

| Tool | Functionality | Reliability | Notes |
|------|---------------|-------------|-------|
| `create_note` | Creates new notes | āœ… Excellent | Always works, returns ID |
| `add_text` | Adds text to notes | āœ… Excellent | Reliable text addition |
| `check_bear_setup` | Tests configuration | āœ… Excellent | Diagnostic tool |
| `search_notes` | Searches notes | āš ļø Good | ~80-90% success, may timeout |
| `get_tags` | Lists all tags | āš ļø Good | Usually works, brief popup |
| `get_note` | Retrieves note content | āš ļø Good | Works well with valid IDs |

## Installation

1. Clone the repository:
```bash
git clone https://github.com/philgetzen/bear-mcp.git
cd bear-mcp
```

2. Install dependencies:
```bash
npm install
```

3. Build the project:
```bash
npm run build
```

## Configuration in Claude Desktop

Add the server to your Claude Desktop configuration file:

### macOS
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "bear": {
      "command": "node",
      "args": ["/path/to/bear-mcp/dist/index.js"]
    }
  }
}
```

### Windows
Edit `%APPDATA%\Claude\claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "bear": {
      "command": "node",
      "args": ["C:\\path\\to\\bear-mcp\\dist\\index.js"]
    }
  }
}
```

## Bear Configuration

### Required Settings:
1. **Enable x-callback-url**:
   - Open Bear → Settings (⌘,)
   - Go to "Advanced" tab
   - Enable "Allow x-callback-url"

2. **Generate API Token** (for search and tags):
   - Open Bear → Help → Advanced → API Token
   - Click "Copy Token"
   - In Claude, use: `set_bear_token` with your token

## Usage Examples

### Setup and Testing
```
Check my Bear setup and show me what's available
```

### Reliable Operations (Always Work)
```
Create a new Bear note titled "Project Ideas" with content about machine learning

Add "## Next Steps\n- Review documentation\n- Schedule follow-up" to my "Weekly Review" note
```

### Search Operations (Usually Work)
```
Search my Bear notes for "machine learning" and show me what you find

Get all my Bear tags and help me organize them
```

### Content Analysis (When Search Works)
```
Search for "meeting notes" then help me identify common action items across all results

Find notes tagged with "work" and summarize the main topics
```

## Troubleshooting

### "Search failed: Callback timeout"
- **Normal**: Happens ~10-20% of the time
- **Solution**: Wait 5-10 seconds and retry the same search
- **Tip**: Try simpler search terms (single words work better)

### "No token configured"
Get your token: Bear → Help → Advanced → API Token → Copy Token, then use `set_bear_token`

### "Bear not found"
Make sure Bear is installed and has been opened at least once.

### Browser windows appearing
- **Expected behavior** due to Bear's callback system
- Windows auto-minimize and move off-screen
- Safe to manually close if they persist
- Focus returns to your original window automatically

### No search results
- **Check search term**: Ensure it exists in your notes
- **Verify token**: Use `check_bear_setup` to test
- **Try broader terms**: Single words often work better than phrases
- **Check Bear directly**: Verify the content exists in Bear app

## Technical Details

### HTTP Callback System
The server uses HTTP callbacks (port 51234) to receive data from Bear:
- Bear sends search results and tag data via URL callbacks
- Browser windows appear briefly due to this callback mechanism
- 20-second timeout for Bear responses
- Auto-retry mechanisms for common failures

### Performance Characteristics
- **Fast operations**: Note creation, text addition (~1-2 seconds)
- **Medium operations**: Single note retrieval (~3-5 seconds)  
- **Slower operations**: Search, tags list (~5-15 seconds)
- **Timeout threshold**: 20 seconds maximum wait

## Development

To run in development mode:
```bash
npm run dev
```

To test the server:
```bash
npm run build
node dist/index.js
```

## Version History

- **v4.0.2**: Enhanced browser window handling, 20s timeout
- **v4.0.1**: Improved callback reliability, better error messages  
- **v4.0.0**: Full functionality restored with callback system
- **v3.1.0**: Documentation-only version (limited functionality)

## Requirements

- Node.js 18 or higher
- Bear app installed on your system
- Claude Desktop application
- macOS (Bear is macOS-only)

## License

MIT

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: add_text modifies note content, check_bear_setup handles configuration, create_note and get_note manage note lifecycle, get_tags retrieves metadata, search_notes finds notes, and set_bear_token handles authentication. The descriptions make it easy to distinguish between them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case: add_text, check_bear_setup, create_note, get_note, get_tags, search_notes, set_bear_token. The naming is predictable and readable throughout the set.

Tool Count5/5

With 7 tools, this is well-scoped for a Bear note-taking server. It covers core operations (create, read, update via add_text, search) and necessary setup/authentication without being overwhelming or too sparse.

Completeness4/5

The toolset provides strong coverage for note management: create, read, update (via add_text), search, and tag retrieval. Minor gaps include no explicit delete_note or update_note (beyond add_text), but agents can work around this, and the surface supports core workflows effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues