x-bookmarks-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@x-bookmarks-mcpsearch my bookmarks for 'rust programming'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
x-bookmarks-mcp
Fully local, privacy-first MCP server that turns exported X/Twitter bookmarks into a searchable, enriched knowledge base for Claude Desktop and Claude Code.
This project explores how personal knowledge, local-first data, and MCP tooling can make AI assistants more useful without sending private bookmark data to third-party services.
Why I Built This
I save a lot of useful posts, threads, tools, and ideas on X, but bookmarks quickly become a black hole: easy to save, hard to find, and almost impossible to turn into something useful later.
I wanted a local system that could import my exported bookmarks, enrich linked content, tag topics automatically, and expose everything to Claude through MCP — while keeping the data private and under my control.
This project helped me practice MCP server design, local-first tooling, SQLite full-text search, Docker workflows, async enrichment, private data handling, and AI-assisted knowledge management.
Related MCP server: BraveMCP
Portfolio Highlights
Local-first AI tooling: no X API keys, no telemetry, no third-party bookmark database.
MCP integration: exposes 8 tools for Claude Desktop / Claude Code to search, browse, tag, and summarize bookmarks.
Searchable knowledge base: SQLite + FTS5 full-text search across bookmark text, thread text, notes, tags, and enriched URLs.
Async enrichment: fetches linked pages and extracts readable content for better search and summarization.
Docker support: can run locally or through Docker/Docker Compose.
Quality checks: tests, coverage target, formatting/linting commands, and private data scanner.
What it does
100% offline — no X API keys, no third-party services, no telemetry
Full-text search across tweet text, threads, linked page content, notes, and tags
Auto-enrichment — fetches and extracts content from URLs in your bookmarks
MCP integration — 8 tools available to Claude for searching, browsing, tagging, and summarizing
Quick Start
1. Export your bookmarks
Use a browser extension like twitter-web-exporter to export your X bookmarks as JSON.
Save the export to data/exports/bookmarks.json.
2. Install
git clone https://github.com/p0ki/x-bookmarks-mcp.git
cd x-bookmarks-mcp
pip install -r requirements.txt3. Import and enrich
python -m src import data/exports/bookmarks.json
python -m src enrich4. Connect to Claude
Add to your claude_desktop_config.json:
{
"mcpServers": {
"xbookmarks": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/absolute/path/to/x-bookmarks-mcp"
}
}
}Replace /absolute/path/to/x-bookmarks-mcp with the full path to your clone.
Installation
git clone https://github.com/p0ki/x-bookmarks-mcp.git
cd x-bookmarks-mcp
pip install -r requirements.txtRequires Python 3.11 or higher. All dependencies are listed in requirements.txt.
Usage
CLI Commands
# Import bookmarks from JSON export
python -m src import data/exports/bookmarks.json
# Fetch and extract content from URLs in bookmarks
python -m src enrich
# Re-fetch already-enriched bookmarks
python -m src enrich --refresh
# Re-run auto-tagging on all bookmarks
python -m src retag
# Show collection statistics
python -m src stats
# Enable verbose logging
python -m src -v import data/exports/bookmarks.jsonMCP Server
python -m src.serverThe server runs over stdio and is designed to be launched by Claude Desktop or Claude Code.
Docker
Build the image
docker build -t xbookmarks-mcp .Run MCP server via Docker
Add to your claude_desktop_config.json:
{
"mcpServers": {
"xbookmarks": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "/absolute/path/to/xbookmarks/data:/app/data",
"-v", "/absolute/path/to/xbookmarks/config.yaml:/app/config.yaml:ro",
"xbookmarks-mcp"
]
}
}
}Replace /absolute/path/to/xbookmarks with the full path to your local clone. Relative paths do not work here because Claude Desktop launches the container from its own working directory.
CLI via Docker Compose
# Import bookmarks
docker compose run --rm xbookmarks-cli import data/exports/bookmarks.json
# Enrich bookmarks
docker compose run --rm xbookmarks-cli enrich
# Show stats
docker compose run --rm xbookmarks-cli statsHow it works
bookmarks.json ──▶ ingest ──▶ SQLite DB
│
enrich (async)
fetch URLs ──▶ extract content
│
auto-tag (keyword rules)
│
MCP server (stdio)
│
Claude Desktop / Claude CodeIngest — parses your JSON export, stores bookmarks in SQLite with FTS5 full-text search
Enrich — asynchronously fetches URLs from bookmarks, extracts readable content with trafilatura
Auto-tag — applies keyword-based rules from
config.yamlto categorize bookmarksMCP Server — exposes 8 tools over stdio for Claude to search, browse, and organize your bookmarks
MCP Tools
Tool | Description |
| Full-text search across all bookmark content |
| List all tags with bookmark counts |
| Get a single bookmark with full detail |
| Browse bookmarks by tag, newest first |
| Add or update a personal note on a bookmark |
| Add a tag to a bookmark (idempotent) |
| Collection overview — counts, tags, authors, enrichment status |
| Gather bookmarks on a topic for Claude to synthesize |
Configuration
Environment Variables
Variable | Default | Description |
|
| Path to SQLite database |
|
| Path to config file |
|
| Delay between URL fetches |
|
| Timeout for URL fetches |
|
| Maximum extracted content length |
Tag Rules (config.yaml)
tag_rules:
claude-code:
- "claude code"
- "claude-code"
mcp:
- "mcp"
- "model context protocol"Bookmarks are automatically tagged when any keyword is found in the tweet text, thread text, or enriched page content.
Development
# Clone
git clone https://github.com/p0ki/x-bookmarks-mcp.git
cd x-bookmarks-mcp
# Install dependencies
pip install -r requirements.txt
# Run tests
pytest -v
# Run tests with coverage
pytest --cov=src --cov-fail-under=80 -v
# Lint
ruff check src/ tests/
black --check src/ tests/
isort --check-only src/ tests/
# Run private data scanner
python scripts/check_private_data.pyLicense
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceA zero-config personal knowledge management MCP server that enables Claude Desktop to automatically classify, search, and organize local Markdown notes using hybrid search and Graph RAG.4MIT
- Alicense-qualityAmaintenanceA local-first browser extension and MCP server that captures your browsing history, bookmarks, highlights, and notes, making them searchable by Claude Desktop as a personal memory assistant.1MIT
- AlicenseAqualityAmaintenanceLocal-first knowledge graph MCP server — hybrid BM25 + vector + graph retrieval over your personal vault with provenance-grade extraction. 8 tools for Claude Desktop including search, archaeology, and graph write.143MIT
- AlicenseCqualityCmaintenanceA local-first MCP server that turns browser bookmark exports into a searchable knowledge base with classification, merging, full-text indexing, and Chrome integration.20MIT
Related MCP Connectors
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/p0ki/x-bookmarks-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server