Fetch MCP
取指器 MCP
MCP 服务器使用 Playwright 无头浏览器获取网页内容。
优势
JavaScript 支持:与传统的网络抓取工具不同,Fetcher MCP 使用 Playwright 执行 JavaScript,使其能够处理动态网络内容和现代网络应用程序。
智能内容提取:内置可读性算法自动从网页中提取主要内容,删除广告、导航和其他非必要元素。
灵活的输出格式:支持HTML和Markdown输出格式,轻松与各种下游应用程序集成。
并行处理:
fetch_urls工具可以并发获取多个URL,显著提高批量操作的效率。资源优化:自动阻止不必要的资源(图像、样式表、字体、媒体)以减少带宽使用并提高性能。
强大的错误处理:全面的错误处理和日志记录确保即使在处理有问题的网页时也能可靠运行。
可配置参数:对超时、内容提取和输出格式进行细粒度控制,以适应不同的用例。
Related MCP server: mcp-playwright-scraper
快速入门
直接用npx运行:
npx -y fetcher-mcp首次设置 - 通过在终端中运行以下命令来安装所需的浏览器:
npx playwright install chromium调试模式
使用--debug选项运行以显示用于调试的浏览器窗口:
npx -y fetcher-mcp --debug配置 MCP
在 Claude Desktop 中配置此 MCP 服务器:
在 MacOS 上: ~/Library/Application Support/Claude/claude_desktop_config.json
在 Windows 上: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"fetcher": {
"command": "npx",
"args": ["-y", "fetcher-mcp"]
}
}
}特征
fetch_url- 从指定的 URL 检索网页内容使用 Playwright 无头浏览器解析 JavaScript
支持智能提取主要内容并转换为Markdown
支持以下参数:
url:要获取的网页的 URL(必需参数)timeout:页面加载超时时间(毫秒),默认为 30000(30 秒)waitUntil:指定导航何时被视为完成,选项:'load'、'domcontentloaded'、'networkidle'、'commit',默认为'load'extractContent:是否智能提取主要内容,默认为 truemaxLength:返回内容的最大长度(以字符为单位),默认无限制returnHtml:是否返回 HTML 内容而不是 Markdown,默认为 falsewaitForNavigation:是否在初始页面加载后等待额外的导航(对于具有反机器人验证的网站很有用),默认值为 falsenavigationTimeout:等待额外导航的最长时间(以毫秒为单位),默认值为 10000(10 秒)disableMedia:是否禁用媒体资源(图片、样式表、字体、媒体),默认为 truedebug:是否启用调试模式(显示浏览器窗口),如果指定,则覆盖 --debug 命令行标志
fetch_urls- 并行从多个 URL 批量检索网页内容使用多标签并行获取来提高性能
返回网页之间有明显区分的组合结果
支持以下参数:
urls:要获取的 URL 数组(必需参数)其他参数与
fetch_url相同
尖端
处理特殊网站场景
应对反爬虫机制
等待完成加载:对于使用 CAPTCHA、重定向或其他验证机制的网站,请在提示中包含:
Please wait for the page to fully load这将使用
waitForNavigation: true参数。增加超时时间:对于加载缓慢的网站:
Please set the page loading timeout to 60 seconds这会相应地调整
timeout和navigationTimeout参数。
内容检索调整
保留原始 HTML 结构:当内容提取可能失败时:
Please preserve the original HTML content设置
extractContent: false和returnHtml: true。获取完整的页面内容:当提取的内容太有限时:
Please fetch the complete webpage content instead of just the main content设置
extractContent: false。以 HTML 格式返回内容:当需要 HTML 格式而不是默认的 Markdown 格式时:
Please return the content in HTML format设置
returnHtml: true。
调试和身份验证
启用调试模式
动态调试激活:在特定的获取操作期间显示浏览器窗口:
Please enable debug mode for this fetch operation即使服务器启动时没有使用
--debug标志,也会设置debug: true。
使用自定义 Cookie 进行身份验证
手动登录:使用您自己的凭据登录:
Please run in debug mode so I can manually log in to the website设置
debug: true或使用--debug标志,保持浏览器窗口打开以进行手动登录。与调试浏览器交互:启用调试模式后:
浏览器窗口保持打开状态
您可以使用您的凭证手动登录网站
登录完成后,将通过您的身份验证会话获取内容
为特定请求启用调试:即使服务器已经在运行,您也可以为特定请求启用调试模式:
Please enable debug mode for this authentication step仅为此特定请求设置
debug: true,打开浏览器窗口进行手动登录。
发展
安装依赖项
npm install安装 Playwright 浏览器
安装 Playwright 所需的浏览器:
npm run install-browser构建服务器
npm run build调试
使用 MCP Inspector 进行调试:
npm run inspector您还可以启用可见浏览器模式进行调试:
node build/index.js --debug相关项目
g-search-mcp :一款强大的 Google 搜索 MCP 服务器,支持同时使用多个关键词进行并行搜索。非常适合批量搜索和数据收集。
执照
根据MIT 许可证授权
Available Tools
3 toolsbrowser_installA
Install Playwright Chromium browser binary. Call this if you get an error about the browser not being installed.
| Name | Required | Description | Default |
|---|---|---|---|
| withDeps | No | Install system dependencies required by Chromium browser. Default is false | |
| force | No | Force installation even if Chromium is already installed. Default is false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the tool's purpose and trigger condition but doesn't describe what happens during installation (e.g., download size, time, network requirements), potential side effects, or what constitutes successful completion. It provides basic context but lacks richer behavioral details needed for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each serve a distinct purpose: the first states what the tool does, and the second provides usage guidance. There's zero wasted language, and the information is front-loaded with the core functionality stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool (installation) with no annotations and no output schema, the description provides good context about when to use it and what it does. However, it doesn't explain what happens after installation completes or what the agent should expect, leaving some gaps in completeness for a tool that modifies system state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (withDeps, force) well-documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema, so it meets the baseline of 3 where the schema does the heavy lifting without additional value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Install Playwright Chromium browser binary') and resource ('Chromium browser binary'), distinguishing it from sibling tools like fetch_url and fetch_urls which perform different operations. It provides a concrete use case ('if you get an error about the browser not being installed') that makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('if you get an error about the browser not being installed'), providing clear contextual guidance. While it doesn't mention alternatives or exclusions, the specific error-based trigger makes usage guidelines comprehensive and actionable for the stated purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_urlC
Retrieve web page content from a specified URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to fetch. Make sure to include the schema (http:// or https:// if not defined, preferring https for most cases) | |
| timeout | No | Page loading timeout in milliseconds, default is 30000 (30 seconds) | |
| waitUntil | No | Specifies when navigation is considered complete, options: 'load', 'domcontentloaded', 'networkidle', 'commit', default is 'load' | |
| extractContent | No | Whether to intelligently extract the main content, default is true | |
| maxLength | No | Maximum length of returned content (in characters), default is no limit | |
| returnHtml | No | Whether to return HTML content instead of Markdown, default is false | |
| waitForNavigation | No | Whether to wait for additional navigation after initial page load (useful for sites with anti-bot verification), default is false | |
| navigationTimeout | No | Maximum time to wait for additional navigation in milliseconds, default is 10000 (10 seconds) | |
| disableMedia | No | Whether to disable media resources (images, stylesheets, fonts, media), default is true | |
| debug | No | Whether to enable debug mode (showing browser window), overrides the --debug command line flag if specified |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action ('Retrieve web page content'). It doesn't mention potential side effects (e.g., network requests, rate limits), authentication needs, error handling, or what the return content looks like (structure or format). This is inadequate for a tool with 10 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It earns its place by clearly stating what the tool does, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 10 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain behavioral traits, return values, or usage context, leaving significant gaps that could hinder correct tool selection and invocation by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing detailed documentation for all 10 parameters. The description adds no additional parameter semantics beyond implying a 'URL' input, which is already covered in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Retrieve') and resource ('web page content from a specified URL'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'fetch_urls' (plural) or 'browser_install', but the singular 'URL' suggests this is for single-page retrieval versus batch operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'fetch_urls' or 'browser_install'. The description lacks context about prerequisites, typical use cases, or exclusions, leaving the agent to infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_urlsC
Retrieve web page content from multiple specified URLs
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Array of URLs to fetch | |
| timeout | No | Page loading timeout in milliseconds, default is 30000 (30 seconds) | |
| waitUntil | No | Specifies when navigation is considered complete, options: 'load', 'domcontentloaded', 'networkidle', 'commit', default is 'load' | |
| extractContent | No | Whether to intelligently extract the main content, default is true | |
| maxLength | No | Maximum length of returned content (in characters), default is no limit | |
| returnHtml | No | Whether to return HTML content instead of Markdown, default is false | |
| waitForNavigation | No | Whether to wait for additional navigation after initial page load (useful for sites with anti-bot verification), default is false | |
| navigationTimeout | No | Maximum time to wait for additional navigation in milliseconds, default is 10000 (10 seconds) | |
| disableMedia | No | Whether to disable media resources (images, stylesheets, fonts, media), default is true | |
| debug | No | Whether to enable debug mode (showing browser window), overrides the --debug command line flag if specified |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves content but lacks details on critical behaviors: it doesn't mention authentication needs, rate limits, error handling, or what the output looks like (e.g., format, structure). For a tool with 10 parameters and no output schema, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'Retrieve web page content from multiple specified URLs.' It's front-loaded with the core purpose, has zero wasted words, and is appropriately sized for the tool's complexity. Every part of the sentence earns its place by clearly stating the action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like how content is returned, error cases, or performance constraints. While the schema covers parameters well, the description fails to provide necessary context for effective use, especially without annotations or output schema to fill gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are well-documented in the input schema itself. The description doesn't add any semantic details beyond what's in the schema (e.g., it doesn't explain how 'urls' are processed or interactions between parameters). With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Retrieve web page content from multiple specified URLs.' It specifies the verb ('Retrieve'), resource ('web page content'), and scope ('multiple specified URLs'), which is specific and actionable. However, it doesn't explicitly distinguish this tool from its sibling 'fetch_url' (which presumably handles single URLs), missing full differentiation for a top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tool 'fetch_url' or explain scenarios where fetching multiple URLs is preferred over single ones. There's no context about prerequisites, limitations, or best practices, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- Added
browser_install
2 tool updates
- First observed
fetch_url - First observed
fetch_urls
TDQS
Scored across 3 tools
The tools are mostly distinct, with 'fetch_url' and 'fetch_urls' clearly differentiated by single vs. multiple URLs. However, an agent might initially confuse 'fetch_url' and 'fetch_urls' as similar operations, though the descriptions clarify the distinction. 'browser_install' is completely separate in purpose.
All tool names follow a consistent snake_case pattern with clear verb_noun structure: 'browser_install', 'fetch_url', and 'fetch_urls'. The naming is predictable and readable throughout the set.
With only 3 tools, the server feels thin for a web fetching domain, lacking operations like navigation, interaction, or content parsing. While the core fetching is covered, the scope seems limited compared to typical web automation needs.
For a web fetching server, there are significant gaps: no tools for interacting with pages (e.g., clicking, filling forms), extracting specific content, handling JavaScript, or managing sessions. The surface is severely incomplete for common web automation tasks beyond basic URL retrieval.
Maintenance
Related MCP Connectors
MCP server (stdio): fetch web pages as clean readable markdown via the AgentForge API
MCP server for Firecrawl — web search, scraping, and biomedical/arXiv paper search.
Turn any public website into an MCP server for agents to search, read and navigate.
MCP server for web extraction and rendering via AceDataCloud WebExtrator
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceAn MCP server for web content extraction that converts HTML pages into clean, LLM-optimized Markdown using Mozilla's Readability. It supports batch processing, intelligent multi-page crawling, and configurable caching while respecting robots.txt standards.69 npm-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that scrapes content from web pages, including JavaScript-heavy sites, and converts it into high-quality Markdown. It leverages Playwright for headless browser automation and Pypandoc for clean content conversion.Apache 2.0
- AlicenseBqualityCmaintenanceAn MCP server for deep research that extracts clean text from web pages using hybrid extraction strategies and compiles findings into structured markdown reports. It provides tools for single and batch URL content extraction with optional Playwright support for JavaScript-heavy sites.4MIT
- AlicenseAqualityDmaintenanceMCP server for fetching web content with browser fingerprint camouflage, converting HTML to clean Markdown to bypass bot detection.11MIT