Better Bear vs MediaWiki MCP Server

A side-by-side look at the Better Bear and MediaWiki MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Better Bear logoBetter BearKnowledge & Memory · Local subprocess (stdio)MCP server for Bear notes — read, search, create, edit, tag, and manage notes via CloudKit60GoodAuth: not declaredMediaWiki MCP Server logoMediaWiki MCP ServerKnowledge & Memory · Local subprocess (stdio)MCP server enabling AI clients to interact with any MediaWiki wiki through standard tools68GreatAuth: not declared

Verdict: choose Better Bear for knowledge & memory work as a local process; choose MediaWiki MCP Server for knowledge & memory as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Better Bear logoChoose Better Bear when

  • You need dedicated capabilities in the Knowledge & Memory domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like bear_list_notes, bear_get_note, bear_search.
Explore Better Bear

MediaWiki MCP Server logoChoose MediaWiki MCP Server when

  • You need dedicated capabilities in the Knowledge & Memory domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: CONFIG, MCP_TRANSPORT, MCP_LOG_LEVEL.
  • You want tools like get-page, get-pages, get-page-history.
Explore MediaWiki MCP Server

Feature & specification comparison

Rows where the two servers differ are marked.

SpecBetter Bear logoBetter BearMediaWiki MCP Server logoMediaWiki MCP Server
CategoryKnowledge & MemoryKnowledge & Memory
Quality signal60/100 · Good68/100 · Great
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNot declared
PricingNot declaredFree
Required env varsNone listedCONFIGMCP_TRANSPORTMCP_LOG_LEVEL
Verified ownerCommunity listingCommunity listing
GitHub stars68138
Directory activity 2 views 0 installs 0 upvotes 3 views 0 installs 0 upvotes
Tools3530

Tools & capabilities

Better Bear tools 35

  • bear_list_notesList 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_noteGet 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_searchFull-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.
  • bear_get_tagsGet 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_noteCreate 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_noteEdit 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_noteMove 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_syncTrigger 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_todosList Bear notes that have incomplete TODO items (markdown checkboxes like '- [ ]'). Returns each note's title, tags, and counts of complete/incomplete items.
  • bear_get_todosGet 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_todoToggle 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_fileAttach 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 on the listing page

MediaWiki MCP Server tools 30

  • get-pageReturns a single wiki page (wikitext source, rendered HTML, or metadata only). If the title does not exist, an error is returned. Use metadata=true to retrieve the revision ID (for edit-conflict detection), page size, and section outline. Set content="none" to fetch only metadata. Large content is truncated at 75000 bytes by default, with a marker reporting how much of it was returned and which sections a narrower read can target; a follow-up call with section=N fetches a specific section. For more than one page at a time, use get-pages. For a specific historical revision, use get-revision.
  • get-pagesReturns multiple wiki pages in one call (wikitext source or metadata only). Suited to reading a cluster of related pages, diffing a page family, or syncing pages to local storage. Accepts up to 50 titles; missing pages are reported inline (not as errors). One byte budget covers the whole response, 75000 bytes by default: pages come back whole in the order asked for until it is spent, and the pages past that point are named rather than returned, so a follow-up call for those names fetches the rest. Only a first page larger than the budget on its own is truncated, with a marker reporting how much of it was returned and which sections a narrower read can target. For a single page or HTML output, use get-page. requestedTitle is included only when it differs from the resolved title.
  • get-page-historyReturns revision metadata (revision ID, timestamp, user, comment, size, minor flag) for a wiki page, in segments of 20 revisions, newest first. Paginate with olderThan or newerThan (mutually exclusive). If the title does not exist, an error is returned. Boolean flags appear only when true.
  • get-recent-changesReturns recent change events, newest first, in segments of 50. Defaults to edits and page creations; set types to include log actions, categorizations, or external changes. Each row includes title, timestamp, user, revision IDs, size change, flags (minor/bot/new/anon), tags, and change type. Filter by timestamp window, namespaces, user, change tag, or hide flags (hideBots/hideMinor/hideAnon/hideRedirects/hidePatrolled). Pass showPatrolStatus to include per-row patrol state (requires patrol rights). Paginate with the continue token from the truncation marker. For a single page's revision history, use get-page-history. Boolean flags appear only when true; rows report the size delta, not raw old/new lengths.
  • search-pageSearches wiki page titles and page content (full-text) for the provided terms. Returns matching pages with a snippet, size, timestamp, and the namespace the match came from. Covers the namespaces the wiki counts as content unless namespaces names the namespace IDs to search; get-site-info lists a wiki's namespaces and flags which of them hold content. Accepts up to 100 matches per call (default 10); additional matches beyond the cap are flagged in the response — narrow the query to surface more. For title-prefix lookup (e.g. autocomplete), use search-page-by-prefix.
  • search-page-by-prefixReturns wiki page titles beginning with a given prefix (suited to autocomplete and title lookup). Only titles are returned — no snippets, sizes, or IDs. Accepts up to 500 titles per call (default 10); additional matches beyond the cap are flagged in the response. For full-text content search, use search-page.
  • parse-wikitextRenders wikitext through the live wiki without saving. Returns HTML, parse warnings, categories, wikilinks, templates, external URLs, and display title. Suited to dry-running a planned edit before create-page or update-page, or previewing standalone wikitext (template combinations, sanitizer checks) with no target page. HTML output is truncated at 75000 bytes by default, with a marker reporting how much of it was returned; a smaller wikitext fragment in a follow-up call returns the rest.
  • compare-pagesReturns the changes between two versions of a wiki page as a compact text diff. Each side accepts a revision ID, page title (latest revision), or supplied wikitext; text-vs-text is rejected. Only the changes are returned over the wire. For the full text of both sides, fetch with get-page instead. If a title or revision ID does not exist, an error is returned. Set includeDiff=false for a cheap change-detection response that skips diff rendering and returns just the change flag, revision metadata, and size delta. Diff output is truncated at 75000 bytes by default, with a marker reporting how much of it was returned; a narrower revision range or includeDiff=false avoids truncation.
  • get-fileReturns metadata for a file (uploader, timestamp, size, MIME type) along with download URLs for the thumbnail, preview, and original. The File: prefix is added automatically if omitted.
  • get-file-dataFetches a wiki file server-side and returns the image inline as a content block, for clients that cannot reach the wiki host (sandboxed or network-restricted) and need the image sent to the model for visual analysis. Returns a scaled rendition sized by width. Files MediaWiki can rasterize (images, SVG, PDF, DjVu) come back as an image; other types (audio, video, arbitrary binaries) error — for those, and for metadata or a download URL, use get-file.
  • get-revisionReturns a specific historical revision of a wiki page by revision ID (wikitext source, rendered HTML, or metadata only). If the revision ID does not exist, an error is returned. Content is truncated at 75000 bytes by default; a past revision has no narrower read, so for a large one use compare-pages to see what changed. For the latest revision plus metadata, use get-page with metadata=true.
  • get-site-infoReturns key facts about the targeted wiki from its MediaWiki siteinfo: general settings (sitename, MediaWiki version, content language, page-title case-sensitivity, live read-only state, and maxarticlesize in bytes), the namespace map with localized names and aliases, the list of installed extension names, and the content license. Set includeStatistics to also return page, article, edit, image, user, active-user, and admin counts.
  • +18 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Better Bear

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "better-bear-2": {
      "command": "npx",
      "args": [
        "-y",
        "better-bear"
      ]
    }
  }
}

MediaWiki MCP Server

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "mediawiki-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@professional-wiki/mediawiki-mcp-server@latest"
      ],
      "env": {
        "CONFIG": "YOUR_CONFIG_HERE",
        "MCP_TRANSPORT": "YOUR_MCP_TRANSPORT_HERE",
        "MCP_LOG_LEVEL": "YOUR_MCP_LOG_LEVEL_HERE"
      }
    }
  }
}

Frequently asked questions

Better Bear is categorized under Knowledge & Memory and uses a local stdio subprocess. MediaWiki MCP Server belongs to Knowledge & Memory and uses a local stdio subprocess. Pick Better Bear for knowledge & memory work and MediaWiki MCP Server for knowledge & memory.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Better Bear has no declared pricing — check the project's own site. MediaWiki MCP Server is listed as free. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add better-bear-2 and mediawiki-mcp-server as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Better Bear has a quality signal of 60/100 (Good) with 2 views, 0 installs and 68 GitHub stars. MediaWiki MCP Server has 68/100 (Great) with 3 views, 0 installs and 138 GitHub stars.