chromium-bookmarks-mcp
MCP server + Chrome extension for real-time bookmark management. Give AI agents in Claude, Cursor, Windsurf, or any MCP client full read/write access to bookmarks in Chrome, Brave, Edge, and Arc.
Install / Use
claude mcp add wickes1 -- npx -y github:wickes1/chromium-bookmarks-mcpIf the server publishes to npm under a different name, use that package instead ā check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Our assessment of chromium-bookmarks-mcp
chromium-bookmarks-mcp scores 84/100 on our quality scale, 2072nd of 2,855 Automation skills we index.
Its MCP Server is 13 KB long, well organised into 24 sections with 9 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 16 days ago, so chromium-bookmarks-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit ā read the skill file before letting an agent act on it.
chromium-bookmarks-mcp compared with similar skills
All 4 of these similar skills score higher than chromium-bookmarks-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| chromium-bookmarks-mcp (this skill)by wickes1 | 84 | 10 | 16d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 107.8k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.6k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.8k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 92.4k | today | MCP Server |
Frequently asked questions
- How do I install chromium-bookmarks-mcp?
- Run
claude mcp add wickes1 -- npx -y github:wickes1/chromium-bookmarks-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does chromium-bookmarks-mcp work with?
- It is written for Claude Code, Claude Desktop, Cursor and Windsurf, as a MCP Server file. Other agents that read the same format can often use it too.
- Is chromium-bookmarks-mcp safe to use?
- It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is chromium-bookmarks-mcp still maintained?
- The repository was last updated 16 days ago, so chromium-bookmarks-mcp is actively maintained.
Skill content
View source on GitHubPrerequisites
- Bun 1.2+ ā the MCP server and native host run on Bun. Install with
curl -fsSL https://bun.sh/install | bash(macOS / Linux) orpowershell -c "irm bun.sh/install.ps1 | iex"(Windows). - A Chromium-based browser (Chrome, Brave, Edge, Arc, or Chromium itself).
Quick Start
1. Install the Chrome extension
<a href="https://chromewebstore.google.com/detail/chromium-bookmarks-mcp/ipcgfbbojaphhaoanjalmjmooeobjein"> <img src="https://img.shields.io/badge/Install_from-Chrome_Web_Store-4285F4?style=for-the-badge&logo=googlechrome&logoColor=white" alt="Install from Chrome Web Store" height="48"> </a>2. Add to your AI client
Claude Code:
claude mcp add bookmarks -- npx chromium-bookmarks-mcp
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"bookmarks": {
"command": "npx",
"args": ["chromium-bookmarks-mcp"]
}
}
}
Registration runs when your MCP client first starts the stdio proxy (not at install time) ā it registers itself as a native host for every detected Chromium browser, including writing the required HKCU registry keys on Windows. The step is idempotent and re-runs on every startup, so no manual
registeris needed.
Cursor / Windsurf / other MCP clients ā use the same command: npx chromium-bookmarks-mcp
3. Activate the connection
Open your browser and click the extension icon. This activates the connection between the extension and the MCP server ā you should see a green dot and Connected status. If you don't, click the Refresh status button in the popup.
Then ask your AI agent:
Use the ping tool to check if bookmarks MCP is connected
Note: Your browser must be open for the MCP tools to work. The extension only attempts a connection on browser launch, popup open, or Refresh ā there is no background polling. No data leaves your machine.
4. Back up before any cleanup
Bookmark deletes are permanent ā Chrome has no undo for them. Before running any destructive tool (bookmark_batch_delete, bookmark_deduplicate, bookmark_merge_folders with delete_source, or bookmark_delete_folder), take a full snapshot:
Use bookmark_export_html to export all my bookmarks, then save the HTML to a file
bookmark_export_html returns the complete bookmark tree as standard Netscape Bookmark HTML ā the same format the browser's own "Export bookmarks" produces. If a cleanup goes wrong, bookmark_import_html restores that snapshot back into your browser. Keep the export until you have verified the result.
Features
19 MCP tools for complete bookmark management:
| Category | Tools |
|----------|-------|
| Read | ping, bookmark_get_tree, bookmark_list, bookmark_search, bookmark_get, bookmark_count, bookmark_find_duplicates |
| Write | bookmark_create, bookmark_update, bookmark_move, bookmark_delete, bookmark_delete_folder |
| Batch | bookmark_batch_move, bookmark_merge_folders, bookmark_deduplicate, bookmark_batch_delete |
| Export/Import | bookmark_export_html, bookmark_import_html |
| Analysis | bookmark_check_dead_links |
Key capabilities:
- Real-time operations while browser is open (no file manipulation)
- Folder path resolution (
"Bookmarks Bar > Tech > AI") - Auto-create nested folders with
create_parents - Smart deduplication by URL
- Folder merge with optional dedup
- Dead link detection with HEAD/GET fallback
- Safety gates on destructive operations (
dry_run: trueto preview,confirm: trueto execute) - HTML export as a one-call backup before cleanup (
bookmark_export_html/bookmark_import_html)
Architecture
Three-process design with HTTP bridge:
Claude Code / AI Agent
| (MCP stdio JSON-RPC)
v
MCP Stdio Proxy (Process C) <- spawned by AI client
| (HTTP to localhost:19420)
v
Native Host + HTTP Server (Process A) <- spawned by browser extension
| (Chrome Native Messaging)
v
Browser Extension (Service Worker)
| (chrome.bookmarks API)
v
Browser Bookmarks
Tool Reference
Read Tools
ping ā Check if the extension is connected and responsive.
bookmark_get_tree ā Get the bookmark tree structure.
folder_id(optional) ā Get subtree of a specific folderdepth(optional, default: 2) ā Max depth to return. Use0for unlimited.
bookmark_list ā List bookmarks in a folder (non-recursive).
folder_id(optional) ā Folder to list. Default: root.limit/offsetā Pagination.
bookmark_search ā Full-text search across titles and URLs.
queryā Search textfolder_idorfolder_pathā Scope search (e.g.,"Bookmarks Bar > Tech")limit(optional, default: 50)
bookmark_get ā Get a single bookmark/folder by ID with folder path.
bookmark_count ā Count bookmarks and folders, optionally scoped.
bookmark_find_duplicates ā Find bookmarks with duplicate URLs.
Write Tools
bookmark_create ā Create a bookmark or folder.
titleā Requiredurlā Omit to create a folderparent_idorparent_path+create_parents: trueā Auto-create nested folders
bookmark_update ā Update title or URL.
bookmark_move ā Move to a different parent folder.
bookmark_delete ā Delete a single bookmark. Root folders protected.
bookmark_delete_folder ā Delete a folder and all contents. Requires confirm: true.
Batch Tools
bookmark_batch_move ā Move multiple bookmarks at once.
bookmark_merge_folders ā Merge source folder into target.
deduplicateā Skip bookmarks that already exist in target (by URL)delete_sourceā Remove source folder after merge. Whentrue, this is destructive: passdry_run: truefirst to preview, thenconfirm: trueto execute. No undo.
bookmark_deduplicate ā Remove duplicate bookmarks (same URL). Destructive, no undo.
folder_idorscope: 'global'ā Required. Scopes which bookmarks are considered; omitting both is rejected so an unscoped call can't sweep the whole tree.keepā'first'or'last'dry_run: trueā Preview the exact items that would be removed. Runbookmark_find_duplicatesor adry_runfirst, thenconfirm: trueto execute.
bookmark_batch_delete ā Delete multiple bookmarks by IDs. Destructive, no undo: dry_run: true to preview, confirm: true to execute.
Back up first with
bookmark_export_html;bookmark_import_htmlrestores it. See Quick Start step 4.
Export/Import
bookmark_export_html ā Export as Netscape Bookmark HTML format. Use this as your backup/safety net before any destructive cleanup.
bookmark_import_html ā Import from Netscape Bookmark HTML. Restores a snapshot produced by bookmark_export_html.
Analysis
bookmark_check_dead_links ā Check URLs for broken links (HTTP HEAD with GET fallback).
limit(default: 50) ā Max bookmarks to checktimeout_ms(default: 5000) ā Request timeout
CLI Commands
npx chromium-bookmarks-mcp # Start MCP stdio proxy (default)
npx chromium-bookmarks-mcp register # Register native host for detected browsers
npx chromium-bookmarks-mcp register ID # Register with specific extension ID (local dev)
npx chromium-bookmarks-mcp unregister # Remove native host registration
npx chromium-bookmarks-mcp doctor # Diagnose connection issues
registeris automatic on first proxy startup. Run it manually only when changing extension IDs (local dev), or after manually deleting native-host manifests.
Troubleshooting
| Issue | Solution |
|-------|----------|
| Extension shows "Disconnected" | Click Refresh status in the popup. If still disconnected, run npx chromium-bookmarks-mcp doctor to diagnose. |
| register doesn't detect browser | Pass the extension ID manually: npx chromium-bookmarks-mcp register <ID> |
| MCP tools timeout | Ensure your browser is open and the extension is enabled |
| Port 19420 conflict | Another instance may be running. Check with lsof -i :19420 |
| Tools work but return empty | Your browser may need bookmarks ā try creating one manually first |
For deeper diagnostics, run:
npx chromium-bookmarks-mcp doctor
Supported Browsers
| Browser | macOS | Linux | Windows | |---------|-------|-------|---------| | Chrome | Yes | Yes | Yes | | Brave | Yes | Yes | Yes | | Edge | Yes | Yes | Yes | | Arc | Yes | ā | ā | | Chromium | Yes | Yes | ā |
On Windows, register writes both the manifest JSON and the corresponding HKCU\Software\<vendor>\<browser>\NativeMessagingHosts registry key, which is how Chromium discovers native messaging hosts on Windows.
Development
Prerequisites
- Bun 1.2+
- A Chromium browser
Project Structure
chromium-bookmarks-mcp/
āāā packages/shared/ # Shared types and constants
āāā apps/extension/ # Browser extension (WXT + TypeScript)
ā āāā entrypoints/
ā āāā background/ # Service worker + tool handlers
ā āāā offscreen/ # Keepalive for MV3
ā āāā popup/ # Connection status UI
āāā apps/mcp-server/ # MCP server + native host
āāā src/
ā āāā index.ts # CLI entry point
ā āāā native-host.ts # Process A: native messaging + HTTP
ā āāā stdio-proxy.ts # Process C: MCP stdio proxy
ā āāā native-protocol.ts # Chrome binary protocol
ā āāā browsers.ts # Browser detection
ā āāā register.ts # Native host registration
āāā bin/run_host.sh # Shell wrapper for native host
Commands
bun install # Install all dependencies
bun test # Run tests
cd apps/extension && bun run wxt dev # Dev mode (hot reload)
cd apps/extension && bun run wxt build # Production build
Working with a local unpacked extension
The native-host manifest's allowed_origins defaults to the published Chrome Web Store extension ID. When developing against an unpacked extension you have two options:
- Pin the dev ID via
manifest.keyā copy the public key from the Web Store Developer Dashboard ("More info" ā "Public key") intoapps/extension/wxt.config.tsasmanifest.key. Chrome derives the unpacked extension's ID from this key, matching the published one. Do not commit the key ā keep it in a local.env-styl
Truncated for display ā read the full file on GitHub.
Related Skills
Agent-Reach
107.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu ā one CLI, zero API fees.
headroom
78.6kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.8kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
92.4kš·ļø The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit ā see the Safety scan above for what the skill file itself contains.
