Atlas / MCP servers / mysleekdesigns / crawlforge-mcp

crawlforge-mcpBLOCK

mcp/mysleekdesigns/crawlforge-mcp

31 MCP tools that give Claude, Cursor and any MCP client the live web — scrape, crawl, search, real Google rank, change tracking, document parsing, plus an autonomous agent that researches from a plain-English prompt with no URLs. Clean Markdown and schema-validated JSON, not raw HTML. Local-Ollama

Verdict
BLOCK
Grade
F
Trust score
40 /100
Exposed tools
37 36r · 1w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

31 web scraping, crawling, deep-research & autonomous-extraction tools for Claude, Cursor & any MCP client. Clean Markdown & structured JSON from any site. Get started with 1,000 free credits — no credit card required.

⭐ Star us on GitHub to follow along — it genuinely helps others discover the project.

Table of Contents

  • Why CrawlForge?
  • CrawlForge vs. alternatives
  • Quick Start (2 Minutes)
  • Available Tools
  • Pricing
  • Advanced Configuration
  • Usage Examples
  • Security & Privacy
  • Support
  • Contributing

🎯 Why CrawlForge?

  • **31 MCP
Read from source at commit a6f6b02b5f75OBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add crawlforge-mcp-server --env CRAWLFORGE_API_KEY=${CRAWLFORGE_API_KEY} --env DATAFORSEO_LOGIN=${DATAFORSEO_LOGIN} --env DATAFORSEO_PASSWORD=${DATAFORSEO_PASSWORD} -- npx -y [email protected]
03

Exposed tools (37)

36 read · 1 write · 0 destructive.

ToolRiskDescription
DocumentationreadAPI references and docs pages — daily, structure tracked so a new parameter or removed endpoint shows up.
analyze_contentreadPerform comprehensive content analysis including language detection, topic extraction, entity recognition, sentiment analysis, keyword extraction, and readability assessment.
apple_toolread
competitive-analysisreadAnalyze competitor websites against your own to surface positioning, feature gaps, and SEO differences.
competitor_urlsreadComma-separated list of competitor URLs to analyze
depthreadResearch depth: shallow | medium | deep (default: medium)
extract_contentreadExtract and analyze main content from web pages with enhanced readability detection, structured data extraction, and content quality assessment.
extract_datareadReturn the extracted data conforming to the provided schema.
extract_structuredreadExtract structured data from a webpage using LLM-powered analysis and a JSON Schema. Falls back to CSS selector extraction when no LLM provider is configured.
extract_textreadd
fetch_urlread
gated_toolread
internal-nacl-pluginreadNative Client Executable
internal-pdf-viewerreadPortable Document Format
intervalreadCheck interval in seconds (default: 3600)
mhjfbmdgcfjbbpaeojofohoefgiehjaireadPortable Document Format
monitor-changeswriteSet up continuous monitoring for content changes on a URL with webhook notifications.
nameread
our_urlreadYour website URL for comparison
output_formatreadOutput format: markdown (default) or text
process_documentreadProcess documents from multiple sources and formats including PDFs, web pages, and local files with comprehensive content extraction and analysis.
rag-ingestreadScrape and convert one or more URLs into clean markdown suitable for RAG ingestion pipelines.
report_contextread
report_ownerread
report_servingread
research-deep-divereadConduct exhaustive multi-source research on a topic with synthesis, conflict detection, and citations.
site-auditreadComprehensive site audit: discovers all pages, extracts metadata, and generates an llms.txt summary.
slow_echoread
summarize_contentreadGenerate intelligent summaries of text content with configurable length, type, and additional analysis including key points and keywords.
treadd
test_toolread
topicreadResearch topic or question
track_changesread
urlreadURL to monitor for changes
urlsreadComma-separated list of URLs to ingest
webhookreadWebhook URL for change notifications
zebra_toolread
04

Trust audit

BLOCKgrade F · trust 40/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)WARN
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (10 observation(s))
Network
declared (16 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.claude/skills/security-auditor/scripts/security-scan.sh:90
EVAL_COUNT=$(grep -rn "eval(" --include="*.js" src/ 2>/dev/null | wc -l | tr -d ' ')
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.claude/skills/security-auditor/scripts/security-scan.sh:92
echo "  Found $EVAL_COUNT use(s) of eval() - potential security risk"
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.claude/skills/security-auditor/scripts/security-scan.sh:97
EXEC_COUNT=$(grep -rn "exec(" --include="*.js" src/ 2>/dev/null | grep -v "ActionExecutor" | wc -l | tr -d ' ')
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.claude/skills/security-auditor/scripts/security-scan.sh:99
echo "  Found $EXEC_COUNT use(s) of exec() - verify input validation"
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/core/ActionExecutor.js:1577
page.evaluate(new Function('...args', script), ...args),
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:41
"metadata.google.internal",  # Cloud metadata
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:42
"169.254.169.254",  # AWS/GCP metadata
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:56
("http://169.254.169.254/", True, "AWS metadata"),
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:57
("http://metadata.google.internal/", True, "GCP metadata"),
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
setup.js:271
console.log(`           "CRAWLFORGE_API_KEY": "${apiKey.trim()}"`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/utils/secretMask.js:9
*   logger.error('fetch failed', maskSecrets({ apiKey, url, error }));
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:50
("http://127.0.0.1/", True, "IPv4 loopback"),
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:51
("http://127.0.0.1:8080/admin", True, "IPv4 loopback with port"),
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:53
("http://192.168.1.1/", True, "Private network"),
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:54
("http://10.0.0.1/", True, "Private network"),
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/security-auditor/scripts/check-ssrf.py:55
("http://172.16.0.1/", True, "Private network"),
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/oauth.test.js:21
const API_KEY = 'cf-test-api-key-1234';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/phase1-oauth.test.js:28
const API_KEY = 'cf-test-api-key-1234';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/webhookDispatcher.test.js:362
const secret = 'delivery-test-secret';
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
tests/unit/webhookDispatcher.test.js:55
const TEST_TLS_KEY = `-----BEGIN PRIVATE KEY-----
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
docs/CHANGELOG.md:1511
one `style="display:none"` element became a rule hiding every element small enough to pass
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcpbignore
.mcpbignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/core/StealthBrowserManager.js:1452
const hash = crypto.createHash('md5').update(seed).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
tests/fixtures/pdfBuilder.js:12
* (Revision 2, 40-bit RC4 — ISO 32000-1 Algorithms 3.1-3.4) by hand, since
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
tests/fixtures/pdfBuilder.js:13
* Node's OpenSSL 3 build has no RC4 cipher (`crypto.getCiphers()` excludes

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha a6f6b02b5f75full audit observations/trust-audit/mcp-server/mysleekdesigns__crawlforge-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11a6f6b02b5f75BLOCKF40first audit
06

Questions

What is the crawlforge-mcp MCP server?

31 MCP tools that give Claude, Cursor and any MCP client the live web — scrape, crawl, search, real Google rank, change tracking, document parsing, plus an autonomous agent that researches from a plain-English prompt with no URLs. Clean Markdown and schema-validated JSON, not raw HTML. Local-Ollama

What tools does crawlforge-mcp expose?

37 in total: 36 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is crawlforge-mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (40/100) and found 9 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does crawlforge-mcp need?

It reads ANTHROPIC_API_KEY, API_KEY, API_KEY_HEADER, BROWSERBASE_API_KEY, CRAWLFORGE_API_KEY, CRAWLFORGE_CREATOR_SECRET, CRAWLFORGE_OAUTH_ENABLED, CRAWLFORGE_OAUTH_ISSUER, CRAWLFORGE_SIGNING_KEY, DATAFORSEO_LOGIN, DATAFORSEO_PASSWORD and FIXTURE_TEMPLATE_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does crawlforge-mcp run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as crawlforge-mcp-server at 6.20.0.

How current is this page?

The grade is for one exact copy of the source (a6f6b02b5f75), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement