Skip to main content
Glama

MCP Fetch Page

Browser-based web page fetching with automatic cookie support and CSS selector extraction.

Features

  • πŸ€– Browser Automation: Full JavaScript rendering with Puppeteer

  • πŸͺ Automatic Cookie Management: Loads all saved cookies automatically

  • 🎯 CSS Selector Support: Extract specific content with selectors

  • 🌐 Domain Presets: Built-in selectors for common websites

  • πŸ“± SPA Support: Fully supports dynamic content and AJAX

Related MCP server: Fetch MCP Server

Quick Start

1. Configure MCP Server

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "mcp-fetch-page": {
      "command": "npx",
      "args": ["-y", "mcp-fetch-page@latest"]
    }
  }
}

To customize runtime data directory (recommended on VPS), set MCP_FETCH_PAGE_DATA_DIR in MCP env:

{
  "mcpServers": {
    "mcp-fetch-page": {
      "command": "npx",
      "args": ["-y", "mcp-fetch-page@latest"],
      "env": {
        "MCP_FETCH_PAGE_DATA_DIR": "/data/mcp-fetch-page"
      }
    }
  }
}

Restart Claude Desktop.

2. Install Chrome Extension (Optional - for authenticated pages)

Download and install the Chrome extension to save cookies from authenticated sessions:

πŸ“₯ Download Extension from Releases

Installation steps:

  1. Download mcp-fetch-page-extension-vX.X.X.zip from the latest release

  2. Unzip the file

  3. Open Chrome and go to chrome://extensions/

  4. Enable "Developer mode" (top right)

  5. Click "Load unpacked" and select the unzipped folder

Usage

Basic Usage

  1. Login to a website in Chrome

  2. Click the "Fetch Page MCP Tools" extension icon

  3. Click "Save Cookies" button

  4. Use in Claude/Cursor: fetchpage(url="https://example.com")

Advanced Usage

// Basic fetching with automatic cookie loading
fetchpage(url="https://example.com")

// Extract specific content with CSS selector
fetchpage(url="https://example.com", waitFor="#main-content")

// WeChat articles (automatic selector)
fetchpage(url="https://mp.weixin.qq.com/s/xxxxx")

// Run in non-headless mode for debugging
fetchpage(url="https://example.com", headless=false)

Domain Presets

The system automatically uses optimized selectors for:

  • mp.weixin.qq.com β†’ .rich_media_wrp (WeChat articles)

  • wx.zsxq.com β†’ .content (Knowledge Planet)

  • cnblogs.com β†’ .post (Blog Garden)

  • Add more in mcp-server/domain-rules.json (domain-selectors.json remains supported for compatibility)

Debug Tools

# Standalone debug script (recommended for development)
cd mcp-server
node debug.js test-page "https://example.com"
node debug.js test-spa "https://example.com" "#content"

# MCP Inspector (for integration testing)
npx @modelcontextprotocol/inspector
# Then visit http://localhost:6274

Data Directory (Optional)

By default, runtime data is stored under ~/Downloads/mcp-fetch-page/:

  • Cookies: ~/Downloads/mcp-fetch-page/cookies

  • Pages: ~/Downloads/mcp-fetch-page/pages

For MCP usage, configure MCP_FETCH_PAGE_DATA_DIR in your MCP client config env field. The server will always use:

  • <MCP_FETCH_PAGE_DATA_DIR>/cookies

  • <MCP_FETCH_PAGE_DATA_DIR>/pages

  • <MCP_FETCH_PAGE_DATA_DIR>/domain-rules.json (optional user overrides merged with built-in rules)

node mcp-server/server.js is only for local development/debugging.

Parameters

  • url (required): The URL to fetch

  • waitFor (optional): CSS selector to extract specific content

  • headless (optional): Run browser in headless mode (default: true)

  • timeout (optional): Timeout in milliseconds (default: 30000)

File Structure

mcp-fetch-page/
β”œβ”€β”€ package.json              # npm package config
β”œβ”€β”€ package-lock.json         # npm lockfile
β”œβ”€β”€ node_modules/             # npm dependencies
β”œβ”€β”€ README.md                 # This file
β”œβ”€β”€ README-zh.md              # Chinese version
β”œβ”€β”€ CLAUDE.md                 # Claude Code usage guide
β”œβ”€β”€ chrome-extension/         # Chrome extension
β”‚   β”œβ”€β”€ manifest.json
β”‚   β”œβ”€β”€ popup.js
β”‚   β”œβ”€β”€ popup.html
β”‚   └── background.js
└── mcp-server/              # MCP server
    β”œβ”€β”€ server.js            # Main server
    β”œβ”€β”€ debug.js             # Debug tools
    β”œβ”€β”€ domain-rules.json     # Domain rules config (selector + blocked markers)
    └── domain-selectors.json # Legacy selector config (compatibility fallback)

Troubleshooting

  • Extension not working: Make sure you're on a normal website (not chrome:// pages)

  • No cookies found: Try logging in again and saving cookies

  • MCP not connecting: Check Node.js installation and restart your editor

  • Path error: Set MCP_FETCH_PAGE_DATA_DIR in MCP config env to a writable absolute path on your machine/VPS

  • CSS selector not working: Verify the selector exists on the page

That's it! πŸͺ

Available Tools

1 tool
fetchpageA

Fetch web pages using browser automation with full JavaScript rendering. Supports automatic cookie management, localStorage, CSS selectors, and dynamic content. Cookies are automatically loaded from local storage if available.

Inputs: url (required), timeout, waitFor, headless.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 1 tool

    Disambiguation5/5

    With only one tool, there is no ambiguity. The tool has a clear and distinct purpose.

    Naming Consistency5/5

    Single tool 'fetchpage' follows a clear verb_noun pattern (fetch + page), consistent with itself.

    Tool Count3/5

    One tool is borderline for a server; it serves a focused purpose but lacks any auxiliary tools, making it thin.

    Completeness4/5

    The tool covers the core functionality of fetching pages with JS rendering and cookie management; minor gaps like explicit session listing exist but are not critical.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Fetches content from authenticated web pages by driving your signed-in Chrome/Edge browser via DevTools Protocol, automatically handling login redirects and reusing sessions across domains.
      9
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.
      17
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Fetches web pages with JavaScript rendering, pierces Shadow DOM, and enables interactive actions like clicking and form filling using a real Chrome browser.
      2
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables headless-Chromium web automation, including rendering fully-executed HTML, extracting structured data with CSS selectors, capturing screenshots, and AI-assisted smart scraping of web pages.
      88 npm
      MIT