wickend.dev / Projects / chromium-bookmarks-mcp
TypeScriptMCPNative Messaging live shipped Apr 17, 2026

chromium-bookmarks-mcp

an MCP server + browser extension pair that gives Claude, Cursor, Windsurf — any MCP client — real-time read/write access to bookmarks across Chrome, Brave, Edge, Arc, and Chromium.

§ the story

Bookmarks are the most under-used personal database on every developer’s machine. You add 800 of them over a decade, then never search them, because the browser’s UI is hostile to anything more nuanced than “drag into folder.”

This started as “what if I could just ask Claude to find that thing about webrings I bookmarked sometime last fall.” It turned into a published Chrome Web Store extension, an npx chromium-bookmarks-mcp on npm, and a small pile of process-architecture I didn’t expect to write.

the architecture, briefly

There is no WebSocket. The path looks like this:

AI client  ─stdio MCP─▶  proxy  ─HTTP :19420─▶  native host  ─chrome.runtime─▶  extension

The proxy is what your AI client spawns (npx chromium-bookmarks-mcp). It speaks MCP over stdio on one end and HTTP to localhost:19420 on the other. The HTTP server lives inside a native messaging host that the browser spawns when the extension launches. Native messaging is the only sanctioned way for an extension to talk to a local process, so the topology has to flow that way — the browser is the parent, not the AI client.

First-run is the part I’m most proud of: the proxy auto-registers itself as a native host for every detected Chromium browser on macOS, Linux, and Windows — including writing the right HKCU\Software\<vendor>\<browser>\NativeMessagingHosts registry keys on Windows. No register step, no manifest paths to copy.

the cross-browser bonus

Chrome, Brave, Edge, Arc, and Chromium all implement the same chrome.bookmarks extension API and the same native messaging protocol — so one extension build works everywhere with one native host install. The detection logic lives in apps/mcp-server/src/browsers.ts and is the smallest interesting file in the repo.

twenty tools, with safety gates

Twenty MCP tools across read, write, batch, export/import, and analysis: tree, list, search, get, count; create / update / move / delete; folder paths like "Bookmarks Bar > Tech > AI" with create_parents; bookmark_find_duplicates + bookmark_deduplicate; bookmark_merge_folders with optional dedup; bookmark_export_html / bookmark_import_html in Netscape format; bookmark_check_dead_links with HEAD-then-GET fallback. Destructive batch operations require an explicit confirm: true so an over-eager agent can’t quietly delete your “to-read” stack.

what it pairs with

End-to-end “I starred this six months ago, what was it again” — agent searches the bookmark, fetches the page, summarizes, files the summary into joplin-mcp. All MCP, all local, all on the same machine.

// shipped on a Wickend, Apr 17, 2026