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.
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