WebWatch MCP

Website change monitoring with URL watching, snapshot comparison, and intelligent content extraction for AI assistants

Documentation

πŸ” WebWatch MCP

A Model Context Protocol (MCP) server for monitoring website changes. Track URLs, detect content changes, compare snapshots, and extract content with CSS selectors β€” all from your AI assistant.

Features

  • Watch URLs β€” Monitor any webpage for content changes
  • CSS Selectors β€” Track specific elements (prices, headlines, stock info)
  • Snapshot History β€” SQLite-backed storage of every page state
  • Diff Detection β€” See exactly what changed, line by line
  • Content Extraction β€” Pull structured data from any page on demand

Tools

ToolDescription
watch_urlAdd a URL to the watch list with optional CSS selector and label
list_watchesList all monitored URLs with status and statistics
check_nowFetch a URL now, compare to previous snapshot, return diff
get_changesBrowse change history for one or all watched URLs
compare_snapshotsCompare any two snapshots side-by-side
extract_contentOne-off content extraction with CSS selectors

Installation

# Clone and build
git clone https://github.com/leviai-tools/webwatch-mcp.git
cd webwatch-mcp
npm install
npm run build

# Or install globally
npm install -g @leviai/webwatch-mcp

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "webwatch": {
      "command": "node",
      "args": ["/path/to/webwatch-mcp/build/index.js"],
      "env": {
        "WEBWATCH_DATA_DIR": "/path/to/data/dir"
      }
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "webwatch": {
      "command": "webwatch-mcp"
    }
  }
}

Environment Variables

VariableDefaultDescription
WEBWATCH_DATA_DIR~/.webwatch-mcpDirectory for SQLite database

Example Workflows

Monitor a pricing page

You: "Watch https://example.com/pricing β€” track the .pricing-table element"
β†’ watch_url(url, selector=".pricing-table", label="Example pricing")

You: "Check if pricing changed"
β†’ check_now("https://example.com/pricing")

Track competitor changes

You: "Add these competitor pages to my watchlist"
β†’ watch_url for each URL

You: "Show me all recent changes"
β†’ get_changes(limit=20)

Extract data on demand

You: "What are the headlines on HN right now?"
β†’ extract_content("https://news.ycombinator.com", ".titleline > a")

Data Storage

All data is stored locally in SQLite at ~/.webwatch-mcp/webwatch.db (configurable via WEBWATCH_DATA_DIR).

Tables:

  • watches β€” Monitored URLs with selectors and labels
  • snapshots β€” Page content captured at each check
  • changes β€” Detected diffs between consecutive snapshots

Requirements

  • Node.js β‰₯ 18.0.0

License

MIT