Opinionated MCP for Bear Notes. Relevance-ranked search across titles, bodies, hierarchical tags. Offline-first.
Bear Notes MCP demonstrates strong definition quality with comprehensive tool coverage (13 tools), well-articulated descriptions (100+ chars for most), and complete input schemas with type definitions. All tools are explicitly registered with Zod schemas converted to JSON Schema. However, there are notable gaps: missing output schema documentation, incomplete error recovery guidance, and some parameter descriptions lack explicit format constraints or range specifications. Tool naming follows clear verb-noun convention (bear-open-note, bear-search-notes, bear-add-text) but could be more action-forward. The server includes tool annotations (readOnlyHint, idempotentHint) which is modern. Parameter descriptions are generally good (70-120 chars) but some lack actionable constraints (e.g., bear-search-notes 'limit' lacks explicit min/max guidance in description).
Attach a file (image, PDF, document) to a Bear note. File must be under 25 MB. Symbolic links are rejected for security; only regular files are supported.
Create a new note in Bear with optional title, tags, and content. New notes are created in the default Bear folder. Supports inline Bear tag syntax or programmatic tag application.
Add one or more tags to a Bear note. Supports hierarchical tag names with slashes.
Append or prepend text to a Bear note. Optionally target a specific section by header name. Text is added on its own line, not glued to existing content.
Archive a note in Bear. Archived notes are hidden from search and list views but are not permanently deleted.
Report the current Bear Notes MCP server mode and how to unlock additional capabilities. Call this when the user asks what you can do with their Bear notes, when a write operation appears unavailable, or when the user wants to enable note creation, editing, or tag management.
Output schemas not documented. While input schemas are complete with Zod-derived JSON Schema, the server provides no explicit documentation of what each tool returns (field names, types, structure). LLMs cannot plan downstream tool calls or extract correct fields without knowing response structure.
Parameter constraints lack actionable guidance. The 'limit' parameter in bear-search-notes states '1000 cap' but doesn't specify minimum (1?) in the description itself. Format constraints for file_path in bear-add-file (symlinks rejected) are clear, but expected_revision token format across write tools (bear-add-text, bear-replace-text) lacks clarity on what happens if token is stale/invalid.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | <=2025-11-25 | v2 |
Delete a tag from all notes in your Bear library. Removes the tag but preserves the notes themselves. Use bear-list-tags first to see existing tags.
Find notes in your Bear library that have no tags. Useful for bulk tagging or identifying notes that need categorization.
List all tags in your Bear library as a hierarchical tree. Shows tag names with note counts. Useful for understanding your tag structure and finding tags to apply to untagged notes. Counts include only active notes (trashed and archived are excluded). Tags with zero active notes are not shown.
Read the full text content of a Bear note by its ID or title. Supports direct title lookup as an alternative to searching first. Always includes text extracted from attached images and PDFs (aka OCR search) with clear labeling. Response includes the note's revision token that changes whenever the note is modified.
Rename a tag across all notes in your Bear library. Useful for reorganizing tag taxonomy, fixing typos, or restructuring tag hierarchies. Use bear-list-tags first to see existing tags.
Replace content in a Bear note. Can replace the entire note or a specific section (by header name). Section-level replace preserves the section header.
Search across Bear notes with FTS5 full-text search across note titles, bodies, and OCR text from attached images/PDFs. Filter by tags, creation/modification dates, and pinned status. Results are relevance-ranked with snippets showing matched context.
Error recovery guidance incomplete. Write tools (bear-add-note, bear-add-text, bear-add-file, bear-add-tag) have WRITE risk classification but descriptions lack explicit guidance on what errors are retryable, what require user intervention, or what are fatal. E.g., bear-add-file says 'symbolic links are rejected' but doesn't explain the error message the LLM will see or how to recover.
Destructive operations lack confirmation step. bear-rename-tag and bear-delete-tag modify all notes matching a tag with no dry-run or confirmation capability. Descriptions warn 'useful for reorganizing' but do not explain the irreversibility or offer a safer pattern like require_confirmation or dry_run parameter.
Naming could be more action-forward. Tools like bear-find-untagged-notes use 'find' instead of 'search' or 'list', creating minor inconsistency with bear-search-notes. bear-capabilities is status-query rather than action-verb. These are minor but detract from naming uniformity.