History Sync
БесплатноНе проверенChrome extension + MCP server: ask Claude, Cursor, or any MCP-capable agent what you've been reading. Hosted or self-host.
Описание
Chrome extension + MCP server: ask Claude, Cursor, or any MCP-capable agent what you've been reading. Hosted or self-host.
README
A Chrome extension + small server that turns your browsing history into something your AI agents can query.
You install the extension. It captures pages you dwell on for 10+ seconds. Captured pages land on a server you trust (hosted or your own). Then you point Claude, Cursor, Claude Desktop, or any other MCP-capable client at that server and ask what you've been reading.
Status: friends-and-family alpha. Submitted to the Chrome Web Store; review pending. Until it's approved, install in developer mode (below).
Two ways to run it
| Hosted | Self-host | |
|---|---|---|
| Where data lives | history-sync.vercel.app (single operator's Vercel + Neon Postgres) |
Your machine or your server |
| Sign in | Google OAuth | Google OAuth (your own client) |
| MCP auth | OAuth via Stytch — the client does a consent screen | A long-lived bearer token you paste into your client |
| Setup time | < 1 min — install extension, sign in | ~30 min — see docs/SELF_HOSTING.md |
| Best for | Trying it out; you trust the operator with the same data Chrome already has | Anything you wouldn't put in someone else's database |
⚠ Data is stored in plaintext at rest. No end-to-end encryption yet (v2 territory). On the hosted version, the operator can see your captures the same way they can see anything on their own Postgres. If your browsing includes things you wouldn't share with a single trusted operator, self-host. Even self-hosted, data is plaintext in your Postgres — keep that server private.
What never gets captured, in either mode: incognito tabs, chrome:// pages, extension internals, form contents, passwords, cookies, page-body text beyond title + meta tags, sites matching your disallow list.
The full privacy policy is at history-sync.vercel.app/privacy.
Install the extension (developer mode)
Until the Web Store approval lands, install from source:
git clone https://github.com/bradthebeeble/history-sync
cd history-sync
pnpm install
pnpm --filter @history-sync/extension build
Then in Chrome (or any Chromium browser — Comet, Brave, etc.):
- Open
chrome://extensions - Toggle Developer mode on (top-right)
- Click Load unpacked
- Pick
apps/extension/.output/chrome-mv3/ - The History Sync icon appears in your toolbar — pin it for convenience
Note for self-hosters: if you also want the extension to talk to your own Google OAuth client (instead of the bake-time hosted one), rebuild with your client ID:
VITE_GOOGLE_CLIENT_ID=<your-client-id>.apps.googleusercontent.com \ VITE_SERVER_URL=https://<your-server> \ pnpm --filter @history-sync/extension buildThen add
https://<extension-id>.chromiumapp.org/as an authorized redirect URI on that Google OAuth client (the extension shows you the exact ID and URL on first sign-in attempt).
Connect the extension
Open the popup, click Sign in with Google, finish the consent flow.
- Hosted users: that's it — the extension is now syncing to
history-sync.vercel.app. - Self-hosters: expand the Server chip at the top of the popup, paste your server URL (e.g.
http://localhost:3000), save (the popup will sign you out), then sign in again — this time against your server.
The popup shows queue depth and last-sync timestamp so you can see capture working.
Connect your AI agent
The extension is the data pipe in. The MCP server is the data pipe out — for any agent that speaks Model Context Protocol over Streamable HTTP. Five tools are exposed:
| Tool | What it does |
|---|---|
ping |
Liveness check + identity echo |
search_history |
Full-text search by title + URL |
list_visits_by_date |
List visits in a date range, paginated |
count_by_domain |
Group visits by host, return top N |
get_page_metadata |
Look up the most recent visit for a specific URL |
Endpoint URLs
| Mode | URL |
|---|---|
| Hosted | https://history-sync.vercel.app/api/mcp/mcp |
| Self-host | https://<your-server>/api/mcp/mcp (or http://localhost:3000/api/mcp/mcp in dev) |
Authentication
Hosted (Stytch OAuth): the MCP client does the dance for you — it'll register itself via Dynamic Client Registration, open a consent screen in your browser, and store the resulting OAuth tokens. Most modern clients (Claude.ai, Claude Desktop, Cursor, MCP Inspector) handle this transparently when you just give them the URL.
Self-host (static token): sign in to your /grants page, click Generate token, give it a label like "Claude Desktop", copy the raw value (shown once). Then configure your client to send it as Authorization: Bearer <token>.
Client-specific setup
Claude.ai / Claude Desktop
In Claude's settings → Connectors (or MCP servers, depending on version):
- Name:
history-sync - URL: the endpoint URL above
- Auth: for hosted, leave on OAuth — Claude will prompt for sign-in. For self-host, choose Bearer / API key and paste your token.
Cursor
Settings → MCP → Add new MCP server → HTTP.
- Name:
history-sync - URL: the endpoint URL above
- Headers (self-host only):
Authorization: Bearer <your token>
Cursor handles OAuth in the hosted case the same way Claude does.
MCP Inspector (visual debugger)
npx -y @modelcontextprotocol/inspector
Opens a UI at http://localhost:6274.
- Transport Type: Streamable HTTP
- URL: the endpoint URL above
- Authentication (self-host): Bearer Token + paste your token
Connect, then explore the tools list and try calls interactively.
Anything else (raw curl)
The endpoint speaks MCP 2024-11-05 JSON-RPC over Streamable HTTP:
curl -s "$URL" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Responses are SSE-framed when they cross transport-buffering boundaries; parse data: … lines.
Try it
Once your client is connected, just ask:
What blog posts did I read about Rust this week?
Top 10 domains I visited yesterday?
What was that LangChain GitHub issue I had open on Tuesday?
Disallow rules
Anything you don't want captured or stored — add a pattern:
- Web app:
/disallow—*.bank.com,mail.google.com,secret-project.notion.so - Extension popup: same — and a one-click "Block this site" button for the current tab
Pattern matches are retroactive: adding *.bank.com deletes any prior matching entries from the server, not just future ones.
Build it yourself / contribute
pnpm install
pnpm db:up # Postgres 16 in Docker
pnpm -r typecheck # workspace-wide tsc
| Path | What's there |
|---|---|
apps/server/ |
Next.js 15 app — /api/sync (extension), /api/mcp/mcp (agents), web dashboard (/grants, /history, /disallow, /privacy), Auth.js v5 + Prisma |
apps/extension/ |
Chrome MV3 extension — service worker, dwell tracker, sync queue, popup UI, content script for page metadata |
packages/shared-types/ |
Wire-format types shared between extension and server |
Useful scripts:
| Command | What |
|---|---|
pnpm db:up / db:down / db:logs |
Local Postgres lifecycle |
pnpm --filter @history-sync/server dev |
Run the server on :3000 |
pnpm --filter @history-sync/server prisma:migrate:deploy |
Apply migrations |
pnpm --filter @history-sync/extension dev |
Live-reload extension build |
pnpm --filter @history-sync/extension test |
Vitest |
pnpm typecheck |
Workspace-wide type check |
Default local Postgres URL (matches docker-compose.yml):
postgresql://history_sync:history_sync_dev@localhost:5432/history_sync
Docs
- Self-hosting guide — docs/SELF_HOSTING.md
- Privacy policy — history-sync.vercel.app/privacy
- Deployment notes (Vercel + Neon) — docs/deployment.md
License
MIT.
Установка History Sync
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/bradthebeeble/history-syncFAQ
History Sync MCP бесплатный?
Да, History Sync MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для History Sync?
Нет, History Sync работает без API-ключей и переменных окружения.
History Sync — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить History Sync в Claude Desktop, Claude Code или Cursor?
Открой History Sync на 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
автор: robhunterhlydecker/ucsc-genome-mcp
MCP server to interact with the UCSC Genome Browser API, letting you find genomes, chromosomes, and more.
автор: hlydecker34892002/bilibili-mcp-js
A MCP server that supports searching for Bilibili content. Provides LangChain integration examples and test scripts.
автор: 34892002achiya-automation/safari-mcp
Native Safari browser automation for AI agents with 80+ tools. No Chrome dependency, optimized for Apple Silicon with 60% less CPU overhead.
автор: achiya-automationagent-infra/mcp-server-browser
Browser automation capabilities using Puppeteer, both support local and remote browser connection.
автор: bytedanceaparajithn/agent-scraper-mcp
Web scraping MCP server for AI agents. 6 tools: clean content extraction, structured scraping with CSS selectors, full-page screenshots via Playwright, link ext
автор: aparajithnapireno/DOMShell
Browse the web using filesystem commands (ls, cd, grep, click). 38 MCP tools map Chrome's Accessibility Tree to a virtual filesystem via a Chrome Extension.
автор: apirenoCompare History Sync with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории browse
