Website Content Crawler MCP Server
Website Content Crawler MCP Server
apify/website-content-crawler 액터를 apify-client를 통해 실제로 실행하고 해당 페이지들을 JSON으로 반환하는 MCP 래퍼입니다. 모든 호출은 크롤링된 콘텐츠 또는 구조화된 오류를 반환하며, 가짜 성공을 보고하지 않습니다.
비용
실행은 apify/website-content-crawler에 명시된 요율로 사용자의 Apify 계정에 청구됩니다. 이 서버는 그 위에 아무것도 추가하지 않습니다. 토큰이 없으면 비용도 없습니다. 호출은 어떤 실행이든 시작되기 전에 missing_token을 반환합니다.
라이브 출력 데모(동일한 크롤링 로직, 렌더링됨): https://website-content-crawler.vercel.app
Related MCP server: Dev Tool MCP
설정
npm install
export APIFY_TOKEN=apify_api_... # https://console.apify.com/settings/integrations
npm start # stdio MCP server도구: crawl_website
입력:
필드 | 유형 | 기본값 | 설명 |
| string | 필수 | 크롤링할 http/https URL |
| number | 10 | 최대 50 |
| string |
| 또는 JS 렌더링용 |
출력 형식(모든 호출에서 동일한 형태):
{
"status": "ok",
"run": { "id": "<apify run id>", "status": "SUCCEEDED" },
"page_count": 3,
"total_in_dataset": 3,
"pages": [{ "url": "...", "title": "...", "text": "...(≤5000 chars)" }]
}오류 코드: invalid_url, missing_token, apify_auth_failed, actor_run_failed, run_not_succeeded, dataset_fetch_failed.
스모크 테스트
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
'{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"crawl_website","arguments":{"url":"https://example.com"}}}' \
| node index.jsAPIFY_TOKEN이 설정되지 않은 상태에서 요청 id 3은 {"status":"error","error":{"code":"missing_token",...}}를 반환해야 합니다. 이는 핸들러가 결과를 지어내는 것이 아니라 실제 Apify 경계에 도달한다는 증거입니다.
Available Tools
1 toolcrawl_websiteA
Crawl a website and extract page content by running the apify/website-content-crawler actor. Returns a fixed-shape envelope: {status, run:{id,status}, page_count, pages:[{url,title,text}]}. Requires APIFY_TOKEN in the environment.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to crawl (http/https) | |
| maxPages | No | Maximum pages to crawl, capped at 50 (default 10) | |
| crawlerType | No | cheerio = fast/static and cheaper; playwright:chrome = JS-rendered sites (default cheerio) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It reveals that this is an external actor invocation, requires APIFY_TOKEN, and returns a fixed envelope, which gives the agent an honest model of what happens. It does not detail cost/time/side effects, but the core execution model is disclosed.
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?
Three compact sentences deliver purpose, mechanism, return shape, and a prerequisite without wasted words. The key purpose is front-loaded.
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?
The hard-coded return envelope compensate for the absent output schema, and the auth requirement is noted. It doesn't cover failure modes or performance expectations, but the essentials for calling and understanding the result are present.
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 coverage is 100%, so the schema already documents all three parameters. The description adds no parameter-level meaning, but the baseline 3 is appropriate because it does not need to compensate.
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 states a precise action ('Crawl a website and extract page content') plus the underlying mechanism (running the apify/website-content-crawler actor), so its purpose is clear even without siblings. It also states the return shape to help the tool be disambiguated.
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 conveys when the tool is appropriate: when a website needs to be crawled and page text extracted. It names the required environment token and return envelope, but does not explicitly state when not to use or what alternatives might apply.
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- First observed
crawl_website
TDQS
Scored across 1 tool
Only one tool is exposed, so there is no chance of confusing it with another. Its purpose is clear and unambiguous.
The single tool name 'crawl_website' uses a consistent verb_noun structure. With no other tools, there are no conflicting naming conventions.
A one-tool server is borderline. The tool covers the core need, but the server feels thin and could reasonably expose additional operations like crawl status or history.
The server offers a direct crawl-and-extract action, but lacks supporting operations such as configurable crawling options, job inspection, or the ability to cancel or list previous runs. The surface is functional but minimal.
Maintenance
Related MCP Connectors
Fetch and extract data from any public web page, even JS-rendered or anti-bot protected
Fetch any public web page through managed proxies, with optional JS rendering and extraction rules.
Turn any website into structured JSON data matching your custom schema.
Fetch, crawl, and browse protected pages with anti-bot handling - renders in a real browser and
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables web scraping and document processing with JavaScript execution, anti-detection measures, batch processing, and structured data extraction. Supports multiple formats including markdown, HTML, screenshots, and handles PDFs with OCR capabilities.4MIT
- FlicenseNot gradedqualityDmaintenanceProvides web crawling and browser automation capabilities with support for multiple content formats (HTML, JSON, PDF, screenshots, Markdown), page content extraction, console message monitoring, and network request tracking.-
- AlicenseAqualityAmaintenanceEnables web scraping, structured data extraction, and screenshot capture with automatic anti-bot bypass, supporting JavaScript rendering, proxy rotation, and tiered pricing.25198 npmMIT
- AlicenseAqualityAmaintenanceEnables fetching any public web page through managed proxies, with optional JavaScript rendering, returning markdown, text, HTML, or structured JSON.1192 npm32 PyPI11MIT