Fetch MCP
페처 MCP
Playwright 헤드리스 브라우저를 사용하여 웹 페이지 콘텐츠를 가져오기 위한 MCP 서버입니다.
장점
JavaScript 지원 : 기존 웹 스크래퍼와 달리 Fetcher MCP는 Playwright를 사용하여 JavaScript를 실행하므로 동적 웹 콘텐츠와 최신 웹 애플리케이션을 처리할 수 있습니다.
지능형 콘텐츠 추출 : 내장된 가독성 알고리즘이 웹 페이지에서 주요 콘텐츠를 자동으로 추출하여 광고, 탐색 기능 및 기타 필수적이지 않은 요소를 제거합니다.
유연한 출력 형식 : HTML과 마크다운 출력 형식을 모두 지원하므로 다양한 다운스트림 애플리케이션과 쉽게 통합할 수 있습니다.
병렬 처리 :
fetch_urls도구를 사용하면 여러 URL을 동시에 가져올 수 있어 일괄 작업의 효율성이 크게 향상됩니다.리소스 최적화 : 불필요한 리소스(이미지, 스타일시트, 글꼴, 미디어)를 자동으로 차단하여 대역폭 사용량을 줄이고 성능을 향상시킵니다.
강력한 오류 처리 : 포괄적인 오류 처리 및 로깅을 통해 문제가 있는 웹 페이지를 처리할 때에도 안정적인 운영을 보장합니다.
구성 가능한 매개변수 : 다양한 사용 사례에 맞게 시간 초과, 콘텐츠 추출 및 출력 형식에 대한 세부적인 제어가 가능합니다.
Related MCP server: mcp-playwright-scraper
빠른 시작
npx로 직접 실행:
지엑스피1
최초 설정 - 터미널에서 다음 명령을 실행하여 필요한 브라우저를 설치하세요.
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를 구문 분석합니다.
주요 콘텐츠의 지능적 추출 및 마크다운으로의 변환을 지원합니다.
다음 매개변수를 지원합니다.
url: 가져올 웹 페이지의 URL(필수 매개변수)timeout: 페이지 로딩 시간 초과(밀리초), 기본값은 30000(30초)입니다.waitUntil: 탐색이 완료된 것으로 간주되는 시점을 지정합니다. 옵션: 'load', 'domcontentloaded', 'networkidle', 'commit', 기본값은 'load'입니다.extractContent: 주요 콘텐츠를 지능적으로 추출할지 여부, 기본값은 true입니다.maxLength: 반환되는 콘텐츠의 최대 길이(문자), 기본값은 제한 없음returnHtml: Markdown 대신 HTML 콘텐츠를 반환할지 여부, 기본값은 false입니다.waitForNavigation: 초기 페이지 로드 후 추가 탐색을 기다릴지 여부(봇 방지 검증이 있는 사이트에 유용함), 기본값은 false입니다.navigationTimeout: 추가 탐색을 기다리는 최대 시간(밀리초), 기본값은 10000(10초)입니다.disableMedia: 미디어 리소스(이미지, 스타일시트, 글꼴, 미디어)를 비활성화할지 여부, 기본값은 true입니다.debug: 디버그 모드(브라우저 창 표시)를 활성화할지 여부, 지정된 경우 --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 contentextractContent: false및returnHtml: true설정합니다.전체 페이지 콘텐츠 가져오기 : 추출된 콘텐츠가 너무 제한적인 경우:
Please fetch the complete webpage content instead of just the main contentextractContent: false설정합니다.HTML로 콘텐츠 반환 : 기본 마크다운 대신 HTML 형식이 필요한 경우:
Please return the content in HTML formatreturnHtml: true설정합니다.
디버깅 및 인증
디버그 모드 활성화
동적 디버그 활성화 : 특정 가져오기 작업 중에 브라우저 창을 표시하려면 다음을 수행합니다.
Please enable debug mode for this fetch operation--debug플래그 없이 서버를 시작한 경우에도debug: true로 설정됩니다.
인증을 위한 사용자 지정 쿠키 사용
수동 로그인 : 본인의 자격 증명을 사용하여 로그인하려면:
Please run in debug mode so I can manually log in to the websitedebug: true설정하거나--debug플래그를 사용하여 수동 로그인을 위해 브라우저 창을 열어 둡니다.디버그 브라우저와 상호 작용 : 디버그 모드가 활성화된 경우:
브라우저 창은 계속 열려 있습니다
귀하의 자격 증명을 사용하여 수동으로 웹사이트에 로그인할 수 있습니다.
로그인이 완료되면 인증된 세션을 통해 콘텐츠가 가져옵니다.
특정 요청에 대한 디버그 활성화 : 서버가 이미 실행 중이더라도 특정 요청에 대해 디버그 모드를 활성화할 수 있습니다.
Please enable debug mode for this authentication step이 특정 요청에 대해서만
debug: true설정하고, 수동 로그인을 위해 브라우저 창을 엽니다.
개발
종속성 설치
npm installPlaywright Browser 설치
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