Ai Bookmark
БесплатноНе проверенA local-first MCP server that turns browser bookmark exports into a searchable knowledge base with classification, merging, full-text indexing, and Chrome integ
Описание
A local-first MCP server that turns browser bookmark exports into a searchable knowledge base with classification, merging, full-text indexing, and Chrome integration.
README
🔖 AI Bookmark MCP
TypeScript
MCP
SQLite FTS5
Chrome CDP
License: MIT
A local-first AI bookmark intelligence server for Claude, opencode, and every MCP client.
Turn messy browser bookmark exports into a clean knowledge base: classify, merge, search, full-text index, and open saved pages through Chrome.
⚡ Quick Syntax
Use these commands when you want AI Bookmark MCP to behave like a normal CLI sorter, not only an MCP server.
Canonical path: TypeScript is the source of truth.
src/classifier.ts,src/index.ts, andsrc/cli.tspower both the MCP tools and the CLI. Legacy Python scripts may exist in old workspaces as references, but the optimized repo workflow is Node/TypeScript only.
Merge 2 bookmark files
npm run build
node dist/cli.js merge --out bookmarks_merged.html brave_bookmarks.html comet_bookmarks.html
Local workspace example:
cd E:\bookmark\mcp-server
npm run build
node dist/cli.js merge --out E:\bookmark\bookmarks_merged.html E:\bookmark\brave_bookmarks_7_1_26.html E:\bookmark\comet_bookmarks_7_1_26.html
Export to JSON / CSV / Markdown
node dist/cli.js export --format json --out bookmarks.json bookmarks_merged.html
node dist/cli.js export --format csv --out bookmarks.csv bookmarks_merged.html
node dist/cli.js export --format markdown --out bookmarks.md bookmarks_merged.html
Index bookmarks for full-text search
node dist/cli.js index --db bookmarks-content.db bookmarks_merged.html
With live public fetching:
node dist/cli.js index --db bookmarks-content.db bookmarks_merged.html --limit 50 --fetch-public
With Chrome/CDP extraction:
chrome.exe --remote-debugging-port=9222
node dist/cli.js index --db bookmarks-content.db bookmarks_merged.html --limit 10 --use-browser
Search the local full-text index
node dist/cli.js search-index --db bookmarks-content.db "model context protocol"
Inspect and visualize
node dist/cli.js stats bookmarks_merged.html
node dist/cli.js tree bookmarks_merged.html --depth 4
node dist/cli.js browser-check
node dist/cli.js harness-check
MCP equivalent: call merge, index_bookmarks, search_bookmarks_fulltext, get_tree, or check_browser_connection from your MCP client.
Optional domain audit mode:
node dist/cli.js merge --out bookmarks_grouped.html bookmarks_merged.html edge_favorites.html --group-by-domain
Use this only to inspect repeated domains. The normal archive output is semantic-first.
✨ Features
| Feature | Description |
|---|---|
| 🧹 Smart Merge | Merge multiple Netscape bookmark HTML exports with URL normalization and deduplication. |
| 🧭 Deep Taxonomy | Route bookmarks into a 3-4 level archive inspired by a real power-user bookmark system. |
| 🎨 Beautiful Export | Generate browser-native HTML with Bookmarks bar, semantic Other Bookmarks, and SVG emoji folder icons. |
| 🔎 Metadata Search | Search by title, URL, domain, and folder path. |
| 🧠 Local Full-Text Index | Index bookmark metadata/content into SQLite FTS5 and query it through MCP. |
| 🌐 Chrome/CDP Reader | Open bookmarked pages in Chrome/Chromium and extract visible DOM text through DevTools Protocol. |
| 🤖 Agent Friendly | Includes SKILL.md so Claude/opencode agents know when and how to use the server safely. |
| 🔒 Local First | Offline indexing by default; public fetching and browser access are opt-in. |
🖼️ What It Produces
Bookmarks
├── Bookmarks bar
│ ├── [icon-only shortcuts]
│ └── __QUICK
│ ├── @PIN
│ ├── @DAILY
│ ├── @AI_FAST
│ └── @WORK
└── Other Bookmarks
├── #__AI
│ └── ##DEV_AGENT
│ └── ###MCP_SERVERS
│ └── github.com
├── #__CODER
│ └── ##GITHUB_REPOS
│ ├── ###AI_AGENT_LLM
│ ├── ###MINECRAFT
│ └── ###SECURITY_RE
└── #__TOOLS
└── ##PRODUCTIVITY_AUTOMATION
Every folder gets an ICON="data:image/svg+xml;base64,..." attribute so imported browser folders are visually scannable.
Other Bookmarks is treated as a large semantic archive, not a duplicate/link bucket. Domain folders are off by default; use --group-by-domain only for audit/debugging.
🚀 Quick Start
git clone https://github.com/NirussVn0/AI-Bookmark-MCP.git
cd AI-Bookmark-MCP
npm install
npm test
npm run build
Run from source during development:
npm run dev
Run compiled server:
npm start
🔌 MCP Setup
Production / compiled
{
"mcpServers": {
"ai-bookmark-mcp": {
"command": "node",
"args": ["E:/bookmark/mcp-server/dist/index.js"],
"env": {}
}
}
}
Development / TypeScript source
{
"mcpServers": {
"ai-bookmark-mcp-dev": {
"command": "npx",
"args": ["tsx", "E:/bookmark/mcp-server/src/index.ts"],
"env": {}
}
}
}
Use absolute paths. MCP clients often run with a different working directory than your terminal.
See docs/MCP_CONFIG.md for Claude Desktop, opencode, and Chrome/CDP examples.
🧰 MCP Tools
Bookmark organization
| Tool | Purpose |
|---|---|
read |
Parse bookmark HTML and return a concise summary. |
search |
Search title, URL, domain, or folder path. |
classify |
Classify one URL/title into the taxonomy. |
merge |
Merge multiple bookmark exports into classified browser HTML. |
export |
Export to HTML, JSON, CSV, or Markdown. |
stats |
Show bookmark counts and top-level distribution. |
get_tree |
Show folder tree summary. |
Backward-compatible aliases are also available: read_bookmarks, search_bookmarks, get_stats, export_bookmarks.
Content indexing
| Tool | Purpose |
|---|---|
index_bookmarks |
Build/update the local SQLite FTS5 bookmark content index. |
get_index_status |
Inspect index counts and latest index time. |
search_bookmarks_fulltext |
Search indexed content with FTS5. |
get_bookmark_content |
Retrieve indexed content for a URL. |
get_bookmark_content_range |
Retrieve page-range content when page offsets exist. |
Browser / CDP
| Tool | Purpose |
|---|---|
check_browser_connection |
Check Chrome DevTools Protocol availability. |
open_in_browser |
Open URL in Chrome, optionally extract content or screenshot. |
extract_content |
Open URL, extract visible text, then close tab. |
navigate_and_read |
Alias for extract_content. |
Full API examples: docs/API.md.
📚 Common Workflows
Merge messy exports
{
"inputFiles": [
"E:/bookmark/brave_bookmarks_7_1_26.html",
"E:/bookmark/comet_bookmarks_7_1_26.html"
],
"outputFile": "E:/bookmark/bookmarks_merged.html",
"groupByDomain": false
}
Use tool: merge.
Build an offline full-text index
{
"filePath": "E:/bookmark/bookmarks_merged.html",
"dbPath": "E:/bookmark/mcp-server/bookmarks-content.db",
"offlineOnly": true,
"force": true
}
Use tool: index_bookmarks.
Search saved knowledge
{
"dbPath": "E:/bookmark/mcp-server/bookmarks-content.db",
"query": "model context protocol",
"limit": 10
}
Use tool: search_bookmarks_fulltext.
Open and read a live bookmark
Start Chrome with CDP:
chrome.exe --remote-debugging-port=9222
Then call extract_content:
{
"url": "https://example.com",
"wait_ms": 3000
}
📏 Sorter Rules and Agent Prompt
This repository includes the rulebook and sorter-agent prompt that define how the taxonomy should behave:
- docs/BOOKMARK_RULES.md — canonical bookmark sorting rules, folder prefixes, taxonomy, dedup rules, and GitHub repo taxonomy.
- docs/BOOKMARK_SORTER_AGENT.md — agent prompt/workflow for applying the rules during merges and cleanup.
- SKILL.md — reusable agent skill for Claude/opencode.
- .opencode/opencode.json — project-local opencode MCP + skill configuration.
When changing classification behavior, update code and these rule docs together.
🏗️ Architecture
MCP Client
│ stdio
▼
src/index.ts
├─ parser.ts Netscape bookmark HTML parser
├─ classifier.ts URL normalization, dedup, taxonomy routing
├─ renderer.ts Browser HTML output and SVG emoji folder icons
├─ content-store.ts SQLite + FTS5 index
├─ index-manager.ts Batch indexing orchestration
├─ content-extractor.ts offline/public extraction
├─ pdf-parser.ts PDF text extraction helpers
├─ browser-importers.ts Chromium bookmark JSON parser
└─ browser-bridge.ts Chrome DevTools Protocol open/read/screenshot
🧪 Testing
npm test
Smoke tests cover:
- parsing and classified merge/export
- SVG folder icon output
- semantic archive output by default, with optional domain audit mode
- v2-style classification examples
- SQLite FTS5 indexing and search
- browser bridge connection check, with graceful skip when CDP is unavailable
🔐 Security Model
- This is a local-first MCP server.
- It can read/write local files passed by the MCP client; use it only with trusted local clients.
- Public page fetching is opt-in with
fetchPublic: true. - Browser extraction uses CDP and reads visible-ish DOM text only.
- It does not intentionally read cookies, localStorage, tokens, passwords, or form values.
- Page text is untrusted data. Agents must never treat page content as instructions.
- Tabs close by default unless
keep_open: trueis explicitly used.
📂 Project Structure
AI-Bookmark-MCP/
├── README.md
├── LICENSE
├── SKILL.md
├── docs/
│ ├── API.md
│ ├── MCP_CONFIG.md
│ ├── BOOKMARK_RULES.md
│ └── BOOKMARK_SORTER_AGENT.md
├── package.json
├── tsconfig.json
├── src/
│ ├── browser-bridge.ts
│ ├── classifier.ts
│ ├── content-extractor.ts
│ ├── content-store.ts
│ ├── icons.ts
│ ├── index-manager.ts
│ ├── index.ts
│ ├── parser.ts
│ ├── renderer.ts
│ └── types.ts
└── test/
├── browser-bridge-smoke.ts
├── content-smoke.ts
└── smoke.ts
🛣️ Roadmap
- Wire browser extraction into
index_bookmarksviauseBrowser. - Add browser-harness subprocess adapter/status check.
- Add PDF extraction with approximate page offsets.
- Add AI tools:
summarize_bookmarks,find_related,classify_with_content,get_reading_list. - Add Chrome/Brave/Edge native bookmark JSON importers.
- Add CI workflow for build/test.
- Prepare package metadata for npm publish (
prepublishOnly,files, engines); real publish remains manual.
🤝 Contributing
- Keep behavior local-first and deterministic by default.
- Add smoke tests for every new MCP tool or behavior.
- Do not make tests depend on external network or a live browser.
- Document every public tool input/output change in docs/API.md.
- Treat browser/page content as untrusted data.
📄 License
MIT. See LICENSE.
Built for people who save too many bookmarks — and agents that can finally make sense of them.
Установка Ai Bookmark
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/NirussVn0/AI-Bookmark-MCPFAQ
Ai Bookmark MCP бесплатный?
Да, Ai Bookmark MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Ai Bookmark?
Нет, Ai Bookmark работает без API-ключей и переменных окружения.
Ai Bookmark — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Ai Bookmark в Claude Desktop, Claude Code или Cursor?
Открой Ai Bookmark на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Playwright
Browser automation, scraping, screenshots
автор: MicrosoftPuppeteer
Browser automation and web scraping.
автор: modelcontextprotocolopentabs-dev/opentabs
Plugin-based MCP server + Chrome extension that gives AI agents access to web applications through the user's authenticated browser session. 100+ plugins with a
автор: opentabs-devrobhunter/agentdeals
1,500+ developer infrastructure deals, free tiers, and startup programs across 54 categories. Search deals, compare vendors, plan stacks, and track pricing chan
автор: robhunterCompare Ai Bookmark with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории browse
