In-depth architectural comparison of the Better Bear and Docmost Local MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Better Bear
Workplace & Productivity · Local stdio
Quality: 63/100 (Good) | Auth: other
Docmost Local MCP
Workplace & Productivity · Local stdio
Quality: 61/100 (Good) | Auth: other
Verdict Summary: Choose Better Bear if you need specialized Workplace & Productivity tools running via a local process. Choose Docmost Local MCP if your workspace requires Workplace & Productivity integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Better Bear when:
You need dedicated capabilities in the Workplace & Productivity domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: other (Free / Open Source).
You have access to required keys: ICLOUD_USERNAME, ICLOUD_PASSWORD, ICLOUD_2FA_CODE.
MCP server for Bear notes via CloudKit — CRUD, tags, TODOs, attachments, search, front matter, stats, and health checks. Install via npx better-bear.
MCP server for self-hosted Docmost (an open-source Notion/Confluence alternative). Read and write spaces, pages, comments, and members from Claude, Cursor, or VS Code. Works on the free Community Edition. npx -y @wisflux/docmost-local-mcp
Category & Scope
Tools & Capabilities Breakdown
Better Bear Tools (35)
bear_list_notes
List Bear notes with optional tag filtering. Returns an array of notes with IDs, titles, tags, pin status, and modification dates. Each note includes two tag fields: 'tags' mirrors Bear's CloudKit index verbatim (includes ancestor expansions — a note tagged #parent/child will show both 'parent' and 'parent/child'); 'attached_tags' shows only leaf tags (the most-specific tag on each branch). Notes with 'locked: true' are private/encrypted in Bear and their body content is not searchable — if a search returns no results, check whether the relevant note is locked. Use bear_get_note to read the full content of a specific note.
bear_get_note
Get a single Bear note's full content and metadata by ID. Returns the note title, tags, full markdown text, and dates. The response includes 'tags' (CloudKit index, may contain ancestor tags like 'parent' for a note tagged '#parent/child') and 'attached_tags' (leaves only). If the note is locked/private, 'locked: true' will be included in the response. Use the 'raw' option to get just the markdown without metadata.
bear_search
Full-text search across Bear note titles, tags, and body content. Returns matching notes ranked by relevance (title matches first, then tag, then body). Body matches include a text snippet with surrounding context. Locked/private notes will match by title but may not match body searches — results include 'locked: true' for these notes. If you can't find content you expect, try listing notes to check if the relevant note is locked.
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Better Bear is categorized under Workplace & Productivity and uses a local stdio subprocess. In contrast, Docmost Local MCP belongs to Workplace & Productivity using local stdio subprocess. Select Better Bear when you need capabilities focused on workplace & productivity and Docmost Local MCP when you require tools for workplace & productivity.
Get the full tag hierarchy from Bear. Returns all tags with their note counts and pin status. Useful for understanding how notes are organized.
bear_create_note
Create a new Bear note with a title, optional body text, tags, and YAML front matter. Hashtags written inline in the body (e.g. '#my_tag' or '#parent/child') are extracted and registered as real tags on the note, matching Bear's desktop-app behaviour. Tags from the 'tags' array are indexed regardless of whether they appear in the body. Hierarchical tags like '#parent/child' also index every ancestor (so they show up under #parent in Bear's sidebar). Front matter is stored as a collapsed metadata block at the top of the note. Returns the new note's ID.
bear_edit_note
Edit an existing Bear note. Provide 'append_text' to add text, 'body' to replace content, or 'set_frontmatter'/'remove_frontmatter' to edit YAML front matter fields. Front matter edits can be combined with each other but not with body/append.
bear_trash_note
Move a Bear note to the trash. This is a soft delete — the note can be recovered from Bear's trash. The note is identified by its ID.
bear_sync
Trigger a sync of Bear notes from iCloud. Normally an incremental sync fetching only changes. Use 'full' to force a complete re-sync. Most read operations auto-sync when the cache is stale, so manual sync is rarely needed.
bear_list_todos
List Bear notes that have incomplete TODO items (markdown checkboxes like '- [ ]'). Returns each note's title, tags, and counts of complete/incomplete items.
bear_get_todos
Get all TODO items from a specific Bear note. Returns each item's text, completion status, and index number (use the index with bear_toggle_todo to toggle items).
bear_toggle_todo
Toggle a specific TODO item in a Bear note between complete and incomplete. The item_index is 1-based — use bear_get_todos first to see the list with index numbers.
bear_attach_file
Attach a file or image to an existing Bear note. The file is uploaded to iCloud and embedded in the note's markdown. Supports common image formats (jpg, png, gif, webp, heic) and other file types (pdf, zip, etc.). By default the attachment is appended to the end. Use 'after' or 'before' to place it relative to text in the note, or 'prepend' to put it right after the title.
+23 more tools listed on main page
Docmost Local MCP Tools (20)
list_spaces
list available Docmost spaces
get_space
fetch details for a specific space
search_docs
search documentation, optionally scoped to a space
search_pages
backward-compatible alias for `search_docs`
get_page
fetch a page and return its content as Markdown
list_pages
list recent pages in a space
list_child_pages
list child pages for a parent page ID
get_comments
list comments for a page
list_workspace_members
list workspace members
get_current_user
fetch the authenticated user and workspace context
create_page
create a new page in a space from Markdown content
update_page
update an existing page's title and/or Markdown content