Skip to main content

Local Browser History MCP

An MCP server that allows searching local browser history files through a unified interface. Works with MCP-compatible clients and as a tool for the llm CLI tool.

The tool currently supports Chrome, Firefox, and Safari browser histories.

Installation

MCP Server (Claude Desktop, Claude Code, etc.)

Install with MCP support:

pip install llm-tools-browser-history

Quick start for Claude Desktop - add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "browser-history": {
      "command": "uvx",
      "args": [
        "--from",
        "llm-tools-browser-history",
        "browser-history-mcp",
      ]
    }
  }
}

Once configured, you can use the browser_history tool in conversations with Claude.

Note that the CLI supports additional options as needed:

browser-history-mcp --help

Query Parameter Whitelist

By default, query parameters are stripped from URLs to protect sensitive data (session IDs, auth tokens, etc.). A built-in whitelist preserves useful parameters like search terms and video IDs for well-known domains (Google q, YouTube v, etc.).

To supply your own whitelist, create a YAML file mapping domains to allowed parameter keys:

# my-whitelist.yaml
google.com:
  - q
  - tbm
youtube.com:
  - v
  - t
amazon.com:
  - k
  - field-keywords
github.com:
  - q

Then pass it via --qp-whitelist:

browser-history-mcp --qp-whitelist my-whitelist.yaml

Domain matching walks up subdomains: a URL on images.google.com will match the google.com rule if no images.google.com rule exists. Domains not in the whitelist have all query parameters stripped (the previous default behaviour).

The database schema includes a stripped_qp column that records the names (never values) of removed parameters, and a domain column for the URL's domain.

Debugging with --query

Use --query to run a single SQL query, print results, and exit without starting the MCP server:

browser-history-mcp --query "SELECT url, title, domain, stripped_qp FROM browser_history LIMIT 5"

Note: Safari browser history is blocked by TCC - you would need to explicitly allow access to your Safari data (I don't yet have instructions for this, but welcome contributions!)

llm CLI tool

Install for use with llm:

# install the plugin:
llm install llm-tools-browser-history

# see available plugins:
llm plugins

...
  {
    "name": "llm-tools-browser-history",
    "hooks": [
      "register_tools"
    ],
    "version": "0.1.0"
  },
...

Examples:

# Search for pages mentioning yosemite in title or URL
llm -T llm_time -T BrowserHistory "what pages about yosemite did I look up recently?"

# Limit to Firefox and Safari sources
llm -T llm_time -T 'BrowserHistory(["firefox","safari"])' "what pages about yosemite did I look up recently?"

# Extend the number of rows returned, and whitelist query parameters for example.com:
llm -T 'BrowserHistory(None,1000,{"example.com": ["q"]}' "Show the query parameters for the last 1000 visits to example.com"

Security and Privacy

Warning: This tool has read-access to your entire browser history. You risk sending this highly sensitive personal data to third-party services (like OpenAI).

See the lethal trifecta article for more information about the risks of using tools like this with LLMs.

To mitigate the risks of data leakage:

  • Only runs queries against a copy of the target browser's history database (so any malicious modification has no effect).
  • Limits the number of results to no more than 100 records per tool use.
  • Does not return the entire browser history record. This tool will return a subset of fields (URL, title, visit date). Query parameters are filtered by a configurable whitelist (only safe keys like search terms are preserved; all others are stripped). Timestamps only include the date (not the time).

Dev setup

make setup
make test

pip install -e .

llm -T llm_time -T BrowserHistory --td "what pages about yosemite did I look up recently?"

Documentation

  • MCP Setup Guide - Setting up the MCP server for Claude Desktop, Claude Code, etc.

ADRs

Metadata

Release files for llm-tools-browser-history 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llm-tools-browser-history 0.7.0
File Size Uploaded Provenance Actions
llm_tools_browser_history-0.7.0.tar.gz 18.5 kB Without provenance Details for llm_tools_browser_history-0.7.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for llm-tools-browser-history 0.7.0
File Interpreter ABI Platform Actions
llm_tools_browser_history-0.7.0-py3-none-any.whl Python 3 none any Details for llm_tools_browser_history-0.7.0-py3-none-any.whl

Total release size: 34.4 kB

Release files / llm_tools_browser_history-0.7.0.tar.gz

Download URL llm_tools_browser_history-0.7.0.tar.gz
Size 18.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8a319bfc8755653f0c60f00bbd554ed6e8e4a94212ed135aff500cd71640bafd
BLAKE2b-256 checksum
How to use checksums
45104d6744be356624c2e7862f26ab80095e6b98a105de9ee29ab5857dd24049
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / llm_tools_browser_history-0.7.0-py3-none-any.whl

Download URL llm_tools_browser_history-0.7.0-py3-none-any.whl
Size 15.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4dff6885a2d858eb2bfc9a27d086892838d2086d5725b7007b585c7a7aa9c80
BLAKE2b-256 checksum
How to use checksums
398fbca09cc5a7d9546d14b2fa78d63c463612d36686fe582fe07f5218f68801
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for llm-tools-browser-history 0.7.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page