mcp-page-monitor
Enables AI assistants to monitor web pages for content changes and receive alerts when changes occur.
README
mcp-page-monitor
A Model Context Protocol (MCP) server that watches web pages and fires alerts when their content changes. Designed to be dropped into any MCP client (Claude Desktop, WorkBuddy, custom agents) so an AI assistant can "keep an eye on" pages without polling them itself.
┌────────────┐ add_target / check_target ┌──────────────────┐
│ MCP Client │ ───────────────────────────▶ │ page-monitor │
│ (assistant) │ ◀─────────────────────────── │ (FastMCP) │
└────────────┘ change status / alert └────────┬─────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────────┐ ┌────────────┐
│ fetcher │ │ differ │ │ alert sink │
│(requests)│ ───────▶ │(hash + LCS) │ ─────▶ │(console/..)│
└──────────┘ └──────────────┘ └────────────┘
Why this exists
LLMs are bad at polling — they can't sit and wait. But they're great at reacting
to a change notification. mcp-page-monitor bridges that gap: register URLs once,
and the server tells the assistant what changed in plain text whenever a page moves.
Features
| Feature | Notes |
|---|---|
| Multi-target watching | Register many URLs, each with its own sensitivity |
| Robust diffing | SHA-256 hashing + difflib LCS; whitespace/case-insensitive |
| Adjustable sensitivity | threshold (default 0.98) suppresses cosmetic noise |
| Pluggable alerts | ConsoleAlertSink built in; subclass AlertSink for Slack/email/webhook |
| Network-free core | Diff/monitor/alert logic is 100% testable without internet |
Install
pip install -r requirements.txt
Use as an MCP server
python -m mcp_page_monitor.server
Then in your MCP client config point to the module. Tools exposed:
add_target(url, name?, threshold?)— start watching a pagecheck_target(url)— fetch, diff vs baseline, return change status
Use the engine directly
from mcp_page_monitor.monitor import PageMonitor
from mcp_page_monitor.alerts import ConsoleAlertSink
from mcp_page_monitor.fetching import fetch_url
mon = PageMonitor(fetcher=fetch_url, alert_sink=ConsoleAlertSink())
mon.add("https://example.com", threshold=0.95)
mon.check("https://example.com") # baseline
mon.check("https://example.com") # alerts if content shifted
Architecture in one line
fetch ➜ normalize ➜ hash+diff ➜ (changed?) ➜ alert
The diff math (identities verified by tests):
- identical pages ⇒
similarity == 1.0,changed == False - one line changed in 100 ⇒
similarity ≈ 0.99,changed == Trueunder strict threshold - first observation is always a baseline and never alerts
Project layout
mcp-page-monitor/
├── mcp_page_monitor/
│ ├── __init__.py
│ ├── differ.py # hashing + diff (no deps)
│ ├── monitor.py # polling engine (fetcher injected)
│ ├── alerts.py # alert sinks
│ ├── fetching.py # requests-based fetcher (prod only)
│ └── server.py # MCP/FastMCP adapter (lazy import of mcp)
├── tests/
│ └── test_monitor.py
├── conftest.py
├── requirements.txt
├── README.md
├── LICENSE
└── .gitignore
License
MIT © wzx11223344
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.