Reads and processes Firefox bookmarks, enabling semantic search and metadata extraction from bookmark collections across Windows, macOS, and Linux platforms.
Reads and processes Opera bookmarks, enabling semantic search and metadata extraction from bookmark collections across Windows, macOS, and Linux platforms.
Reads and processes bookmarks from Perplexity Comet browser, enabling semantic search and metadata extraction from bookmark collections.
Bookmark Geni MCP Server
Stand-alone MCP (Model Context Protocol) server for processing local browser bookmarks and making url/bookmarks easily searchable using natural language.
Connect to Claud Desk top or Gemini CLI
Features
🔍 Multi-Browser Support: Reads bookmarks from Chrome, Edge, Firefox, Opera, ChatGPT Atlas, and Perplexity Comet
📄 Content Extraction: Fetches HTML content from URLs and extracts text for semantic search
🏷️ Metadata Extraction: Extracts descriptions from HTML metadata tags (Open Graph, meta description, title)
📊 Vector Storage: Stores bookmark embeddings in ChromaDB using sentence transformer model (all-MiniLM-L6-v2)
🔎 RAG Search: Query bookmarks using natural language with metadata filtering
📦 Portability: Export and import embeddings to/from pickle files for easy transfer
⚡ Performance: Batch processing with concurrency and caching
Installation
Install dependencies:
pip install -r requirements.txtConfigure the server by editing
config.yaml(optional - defaults are provided)Make start script executable:
chmod +x scripts/start_mcp_server.sh
Usage
Once the server is started, it can be used with any MCP client. To index all browser bookmarks and generate metadata, run the following command:
Once all bookmarks are indexed, you can query them using the following command:
Standalone MCP Server
The server can be used independently with any MCP client by referencing mcp.json:
With Gemini CLI
Connect the server to the Gemini CLI using the following command:
With Calude Desktop
Connect the server to the Calude Desktop by adding the following to the Calude Desktop settings:
Note: Replace /path/to/bookmark_geni_mcp with the actual path to this repository and /path/to/your/python3 with your Python interpreter path.
Configuration
The server reads configuration from config.yaml in the MCP server root directory. This includes:
Browser enable/disable settings
ChromaDB path (relative to MCP server root or absolute path)
Metadata JSONL path (relative to MCP server root or absolute path)
URL processing limit (default: -1, meaning process all URLs)
Debug mode
Example config.yaml:
The server is now completely independent and does not require the Gemini CLI extension folder.
Browser Support
The server supports the following browsers:
Chrome: Windows, macOS, Linux
Edge: Windows, macOS, Linux
Firefox: Windows, macOS, Linux
Opera: Windows, macOS, Linux
ChatGPT Atlas: macOS (Chromium-based)
Perplexity Comet: Windows, macOS, Linux (Chromium-based)
Note: Safari is not supported because reading Bookmarks.plist requires special macOS permissions that are not granted by default. To use Safari bookmarks, you would need to grant Full Disk Access permissions to the Python interpreter, which is not recommended for security reasons.
Tools
The server provides the following MCP tools:
generate_bookmarks_metadataScans selected browsers for bookmarks
Fetches HTML content and generates metadata
Creates embeddings and stores them in ChromaDB
Parameters:
browsers(e.g., "Chrome,Safari" or "All")
query_bookmarksPerforms semantic search on stored bookmarks
Supports metadata filtering
Parameters:
query: Search textlimit: Max results (default 10)where: Filter dict (e.g.,{"folder": "Work"})
list_browsersLists installed browsers and their detected bookmark file paths
Parameters: None
get_statsReturns database statistics (total count, collection info)
Parameters: None
export_embeddingsExports all data to a pickle file for backup or transfer
Parameters:
pickle_path(optional)
import_embeddingsImports data from a pickle file
Parameters:
pickle_path(required)
See mcp.json for detailed schema definitions.
Workflow
Structure
This server cannot be installed