{
  "markdown": "# bookmarks-mcp\n\n**Your bookmarks, wherever they live, readable by your AI.**\n\nEveryone saves. Browsers, read-later apps, that Pocket export from 2023 —\ncapture is a solved problem. Processing is not: the average bookmark is saved\nonce and never touched again. AI assistants are the first thing that can\nactually process a pile like that — summarize, triage, turn it into a to-do\nlist — but they can't see it.\n\nThis is a local, read-only MCP server that fixes the \"can't see it\" part.\n\n```\nOne command in your MCP client config. Zero accounts. Nothing is ever sent to us.\n```\n\n## Sources\n\n| Source | How | Notes |\n|---|---|---|\n| Chrome, Edge, Brave, Arc, Vivaldi, Chromium | reads each profile's local `Bookmarks` file | every profile auto-detected |\n| Safari (macOS) | reads `~/Library/Safari/Bookmarks.plist` | **includes your Reading List**; no extension can do this — Safari's extension API has no bookmarks surface |\n| Firefox | reads `places.sqlite` per profile | needs Node ≥ 22.5 (built-in sqlite); degrades gracefully below |\n| Export files | Pocket CSV, Instapaper CSV, Raindrop CSV, browser HTML, URL lists | via [parse-bookmarks](https://github.com/Fisher521/parse-bookmarks) |\n\nPhone bookmarks: reachable once they sync to your desktop (iCloud → Safari on\nMac, Chrome sync → desktop profile). There is no way for any third-party tool\nto read Safari bookmarks directly on iOS.\n\n## Install\n\nNo account, no API key, no configuration — the server works the moment it's\ninstalled.\n\nClaude Code:\n\n```bash\nclaude mcp add -s user bookmarks -- npx -y bookmarks-mcp\n```\n\n**Use `-s user`.** The scope defaults to `local`, which only registers the server\nfor the directory you ran the command in. Your bookmarks aren't tied to one\nproject, so register it account-wide.\n\nClaude Desktop / Cursor / any MCP client (`mcpServers` JSON):\n\n```json\n{\n  \"mcpServers\": {\n    \"bookmarks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"bookmarks-mcp\"]\n    }\n  }\n}\n```\n\nTo run from source instead (for development), clone this repo next to its\ndependency `parse-bookmarks` (the two directories must be siblings), run\n`npm install` in `bookmarks-mcp`, and point your client at\n`node /absolute/path/to/bookmarks-mcp/src/index.js`.\n\nmacOS + Safari: the app hosting the server (Claude Desktop, your terminal)\nneeds **Full Disk Access** (System Settings → Privacy & Security), because\n`~/Library/Safari` is protected. Chromium browsers and Firefox need nothing.\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `list_sources` | every bookmark source found on this machine |\n| `list_bookmarks` | list, with folder filter + pagination |\n| `search_bookmarks` | search titles / URLs / folders / tags |\n| `recent_bookmarks` | \"what did I save this week?\" |\n| `bookmark_stats` | the state of the pile: counts, age distribution, top domains |\n| `parse_export_file` | parse a Pocket/Instapaper/Raindrop/HTML export from disk |\n| `export_bookmarks` | everything out as Markdown, CSV, JSON, or importable browser HTML |\n| `fetch_page_preview` | a few-hundred-token preview of a page (title, description, headings, excerpt) instead of the raw HTML — for when title/URL alone can't be triaged |\n\n## Turn the pile into a to-do list\n\nThe reason this exists. Ask your assistant:\n\n> Look at my bookmark stats, then help me triage: which of these become deep\n> reads, which are tools to try, which feed a project I'm working on, and\n> which should I finally let go? Give me a checklist for this week.\n\nOr use the built-in `triage_bookmarks` prompt, which walks through exactly\nthat — including asking *you* to define what your saves usually become, so\nthe lanes are yours, not ours.\n\n## Guarantees\n\n- **Read-only.** This server never writes to a browser file. There is no\n  delete tool. Your bookmarks cannot be harmed.\n- **Zero phone-home.** No telemetry, no accounts, and not a single byte sent\n  to us. The server talks to exactly two places: your local bookmark files,\n  and — only when you ask it to preview a page — the bookmarked site itself,\n  directly from your machine.\n- **Clean output.** Tool results are data. No ads, no upsells, ever.\n\n## Design boundaries\n\nThese are deliberate, not gaps waiting to be filled. PRs that cross them will\nbe declined:\n\n- **Preview-level extraction only.** `fetch_page_preview` answers \"is this\n  worth my time\" — it is not a reader mode and never will be a full-fidelity\n  content extractor.\n- **Public web pages only.** No proxies, no login walls, no special-casing\n  for X/YouTube/WeChat/etc. If a page needs auth to read, this tool isn't the\n  way in.\n- **On-demand only.** Nothing fetches in the background, ever. Every network\n  call is a direct response to a tool call you made.\n\n## Roadmap\n\n- Cloud sources behind user-supplied tokens (Raindrop, Readwise, …) — one\n  adapter per service. PRs welcome; an adapter is a single well-defined file.\n- Services that already ship their own MCP server don't need us — run both\n  servers and your assistant sees everything. We only cover the places that\n  have no other bridge.\n\n## Who makes this\n\nBuilt by the team behind [Burn 451](https://www.burn451.cloud), a read-later\napp. This server is deliberately neutral: it reads your bookmarks for whatever\nassistant and whatever workflow you choose, and it never writes to them.\n\n## License\n\nMIT\n",
  "bytes": 5303,
  "sha": "e7b6338ec8caf470cad5ab32a689a8ff2660b64402b3bb90f54fffbc988a40cb",
  "repo_slug": "fisher521/bookmarks-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_fisher521_bookmarks_mcp_9c133658/readme"
}