AI-assisted bookmark cleanup MCP tool for Chrome. Scan, plan, and clean up your Chrome bookmarks through any MCP-capable AI agent — Codex, Claude Code, Cursor — with destructive actions gated by your explicit dashboard approval.
Version: v1.0.0 · MCP server:
@bookmarkops/mcpv0.1.3 on npm · Chrome Web Store: live.
Recommended — Chrome Web Store: Install BookmarkOps
Reviewed and signed by Google. One click, auto-updates.
For developers — build from source: see Quick start below.
- Open source under MIT — every line of code is auditable. See
LICENSE. - Runs entirely on your machine — bookmark data never leaves your browser. The only network traffic is the MCP bridge on
localhost:7842, which never binds to a public interface. - No telemetry, no analytics — BookmarkOps does not collect or transmit any usage data.
- Build it yourself —
npm install && npm run buildproduces the exact extension you load into Chrome.
scan → report → plan → dryRun → preview → backup → apply → verify → restore
The workflow splits between three pieces:
- The Chrome extension — the only thing that talks to
chrome.bookmarks. Scans, applies, restores, and renders the dashboard. - The MCP server (
@bookmarkops/mcp) — a small Node bridge launched by your AI tool overnpx. Lets the AI propose cleanup plans without ever holding bookmark mutation authority. - You — every destructive action (apply / restore / delete backup) requires typing a confirmation phrase (
APPLY/RESTORE/DELETE BACKUP) in the dashboard.
For developers building from source, load as an unpacked extension:
npm install
npm run build- Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select the
dist/folder.
Open the BookmarkOps dashboard → AI Agent Settings → Quick Setup. Copy the JSON config and paste it into your AI tool.
Codex (~/.codex/config.toml):
[mcp_servers.bookmarkops]
command = "npx"
args = ["-y", "@bookmarkops/mcp"]
[mcp_servers.bookmarkops.env]
BOOKMARKOPS_TOKEN = "<your-token>"Claude Code (~/.claude.json):
{
"mcpServers": {
"bookmarkops": {
"command": "npx",
"args": ["-y", "@bookmarkops/mcp"],
"env": { "BOOKMARKOPS_TOKEN": "<your-token>" }
}
}
}Cursor (.cursor/mcp.json): same shape — copy from Quick Setup.
No local install of the bridge is required — npx -y @bookmarkops/mcp downloads it on first run. The bridge requires BOOKMARKOPS_TOKEN in its environment and refuses to start without it.
Full setup walkthrough, available MCP tools, and the threat model are in src/agent/README.md.
"Scan my bookmarks and suggest a cleanup plan."
The agent calls scan_bookmarks and get_report, drafts a bookmark-plan.json, and queues it for your approval. Open the dashboard, review every operation, then type APPLY to execute.
npm install
npm run dev # Vite dev server
npm run build # Production build → dist/
npm run test:task1 # Smoke test: scanner + report-generator (pure Node)
npm run test:workflow # Smoke test: full plan workflow
npm run test:isolated-runtime # Playwright extension runtime test (build dist/ first)
npm run validate # Full validation suite (smoke tests + build)For real Chrome testing, load the freshly built dist/ as an unpacked extension. The isolated runtime test uses a temporary Chrome profile and never touches your real bookmarks.
- The manifest requests only
bookmarks,storage, andalarms. Nohistory, no external host permissions — onlyhttp://localhost:7842/*for the local MCP bridge. - Agent Operator Mode can prepare scan / report / plan / dryRun work, but Apply, Restore, and Delete backup all require a typed confirmation phrase from you in the dashboard.
- The MCP bridge binds to
127.0.0.1:7842only and validates a per-session token on every/enqueuecall.
Full threat model: src/agent/README.md → Security model.
- Email: brianjhang.ai@gmail.com
- Issues & feature requests: github.com/brianjhang/bookmarkops/issues
- Personal site: brianjhang.com
I'm building BookmarkOps as a real tool I want to use. Bug reports, weird-bookmark-tree stories, and "have you considered X" emails are all welcome.
Licensed under MIT — see LICENSE. Copyright © 2026 Brian Jhang.
- MCP integration & threat model —
src/agent/README.md - Traditional Chinese quickstart —
docs/zh-TW/getting-started.zh-TW.md