Skip to main content
Glama
dev55acc-ai

Website Content Crawler MCP Server

by dev55acc-ai

Website Content Crawler MCP Server

MCP wrapper that runs the apify/website-content-crawler actor for real via apify-client and returns its pages as JSON. Every call either returns crawled content or a structured error — it never reports a fake success.

What it costs

Runs bill your Apify account at the rate listed for apify/website-content-crawler — this server adds nothing on top. No token, no charge: calls return missing_token before any run starts.

Live output demo (same crawl logic, rendered): https://website-content-crawler.vercel.app

Related MCP server: Crawl4AI MCP Server

Setup

npm install
export APIFY_TOKEN=apify_api_...   # https://console.apify.com/settings/integrations
npm start                          # stdio MCP server

Tool: crawl_website

Input:

field

type

default

notes

url

string

required

http/https URL to crawl

maxPages

number

10

capped at 50

crawlerType

string

cheerio

or playwright:chrome for JS-rendered

Output envelope (same shape every call):

{
  "status": "ok",
  "run": { "id": "<apify run id>", "status": "SUCCEEDED" },
  "page_count": 3,
  "total_in_dataset": 3,
  "pages": [{ "url": "...", "title": "...", "text": "...(≤5000 chars)" }]
}

Error codes: invalid_url, missing_token, apify_auth_failed, actor_run_failed, run_not_succeeded, dataset_fetch_failed.

Smoke test

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.js

With no APIFY_TOKEN set, request id 3 must return {"status":"error","error":{"code":"missing_token",...}} — proof the handler reaches the real Apify boundary instead of inventing a result.

Available Tools

1 tool
crawl_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to crawl (http/https)
maxPagesNoMaximum pages to crawl, capped at 50 (default 10)
crawlerTypeNocheerio = fast/static and cheaper; playwright:chrome = JS-rendered sites (default cheerio)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. Dates show when Glama detected each change.

  1. 1 tool updatev1.0.0
    • First observedcrawl_website

TDQS

A4.1/5.0
Disambiguation5/5

Only one tool is exposed, so there is no chance of confusing it with another. Its purpose is clear and unambiguous.

Naming Consistency5/5

The single tool name 'crawl_website' uses a consistent verb_noun structure. With no other tools, there are no conflicting naming conventions.

Tool Count3/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables advanced web crawling and content extraction with JavaScript support, AI-powered analysis, PDF/Office document processing, YouTube transcript extraction, Google search integration, and multi-format data export capabilities.
    2
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables web scraping, structured data extraction, and screenshot capture with automatic anti-bot bypass, supporting JavaScript rendering, proxy rotation, and tiered pricing.
    25
    218
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dev55acc-ai/website-content-crawler-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server