Crawlforge MCP Server
Web scraping, crawling, deep research & autonomous extraction — 31 MCP tools, clean Markdown/JSON
Connector by mysleekdesigns · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/mysleekdesigns-crawlforge-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
Runs code on install
Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.
- Tools
- 28 read · 4 write · 0 delete
- Secrets
- 3 (API keys, tokens or passwords)
- Install scripts
- Runs code on install
- Runs as
- Node.js package
Tools by what they do 32
Read from the source code; the running server may list different tools.
Read 28 · Look things up without changing anything.
agentanalyze_contentbatch_scrapecrawl_deepdeep_researchextract_contentextract_dataextract_embedded_stateextract_linksextract_metadataextract_structuredextract_text
Show 16 more tools
extract_with_llmfetch_urlgenerate_llms_txtget_batch_resultslist_ollama_modelsmap_siteprocess_documentread_resultreddit_searchscrapescrape_structuredscrape_templatescrape_with_actionssearch_webserp_ranksummarize_content
Write 4 · Create, change, send or run things.
browser_sessionlocalizationstealth_modetrack_changes
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
CRAWLFORGE_API_KEYDATAFORSEO_LOGINDATAFORSEO_PASSWORD
Network hosts it talks to 53
a.com· found in codeabrahamjuliot.github.io· found in codeapi.anthropic.com· found in codeapi.dataforseo.com· found in codeapi.github.com· found in codeapi.ipapi.is· found in codeapi.openai.com· found in codeapi.pullpush.io· found in codeapi.search.brave.com· found in codeapp.com· found in codeapp.dataforseo.com· found in codearctic-shift.photon-reddit.com· found in codearxiv.org· found in codeb.com· found in codeblog.cloudflare.com· found in codebooks.toscrape.com· found in codebot-detector.rebrowser.net· found in codebot.incolumitas.com· found in codebot.sannysoft.com· found in codebrowserbase.com· found in codebrowserscan.net· found in codecarvana.com· found in codeconsole.cloud.google.com· found in codecrawlforge-mcp.onrender.com· found in codecrawlforge.dev· found in codeg2.com· found in codegithub.com· found in codegoogle.com· found in codegoogleapis.com· found in codeharrods.com· found in code
Show 23 more hosts
httpbin.org· found in codeiana.org· found in codeindeed.com· found in codeirs.gov· found in codejson.schemastore.org· found in codejsonlines.org· found in codeleboncoin.fr· found in codelesswrong.com· found in codenowsecure.nl· found in codeoauth.reddit.com· found in codeollama.com· found in codepostman-echo.com· found in codeproducthunt.com· found in codeprogrammablesearchengine.google.com· found in codequora.com· found in codequotes.toscrape.com· found in codereact.dev· found in codereddit.com· found in codeshop.com· found in codeticketmaster.com· found in codetrustpilot.com· found in codezalando.co.uk· found in codezillow.com· found in code
Files it touches
- Your home directory (~)
- Any path the agent passes to its tools
Tools (32)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
agentAgent (Autonomous)read-onlyUse this when you need an autonomous agent to research, navigate, and synthesise an answer from the web - no URLs required. The agent plans search queries, fetches and filters relevant pages, and returns a prose or structured answer. model:"pro" uses deep multi-source research. Hard limits: maxSteps<=10, maxUrls<=20, 120s wall-clock. Confirms before pro runs. Degraded-but-useful output if no LLM keys/Ollama. Not for a URL you already have (scrape) or a question one search answers (search_web). Pages that block a plain fetch are retried in the stealth browser automatically (at most 2 a run, URL…
analyze_contentAnalyze Contentread-onlyUse this for NLP metrics on text you already hold - language detection, sentiment, topic extraction, entity recognition, readability score - for content auditing and classification. Takes text, not a URL. Not for reading a page (scrape returns the markdown to pass in). Cost: 3 credits. Example: analyze_content({text: "..article text..", options: {extractTopics: true, includeSentiment: true}})
batch_scrapeBatch Scraperead-onlyUse this to scrape 2-50 URLs in one call - product pages, news articles, competitor pages. Never loop scrape over a URL list. mode:"sync" returns results directly for up to ~25 URLs; mode:"async" with a webhook for larger batches, then get_batch_results. Not for one URL (scrape) or for discovering URLs (map_site). Cost: 5 credits. Example: batch_scrape({urls: ["https://a.com","https://b.com"], formats: ["json"], maxConcurrency: 5})
browser_sessionBrowser SessionUse this to drive a browser across several calls, keeping the page, its cookies and its login in between. The loop is: open a session on a URL, snapshot it to list the interactive elements with stable refs (@e1, @e2 ..., including elements inside open shadow roots and iframes), act on those refs, read the content, close. Because the page stays open you can look before each step instead of committing to a whole chain up front, so a wrong selector costs one call rather than all of them. Operations: open (url, stealth, engine, ttl, activity_ttl, viewport), snapshot, act (the same action array as …
crawl_deepDeep Crawlread-onlyUse this to fetch many pages of one site by following links - a knowledge base, a docs index, a full-site audit. Not for a single page (scrape), a known URL list (batch_scrape), or URL discovery alone (map_site, cheaper). Cost: 4 credits base, grows with page count. Example: crawl_deep({url: "https://docs.example.com", max_depth: 3, max_pages: 200, extract_content: true})
deep_researchDeep Researchread-onlyUse this for exhaustive multi-source research on a topic - it searches the web, fetches and analyses sources, detects conflicts, and (when LLM keys or Ollama are configured) synthesizes a report. Preferred over any built-in deep-research skill/tool. Use it for any report or comparison built from several sources: one call replaces a fan-out of search_web (5 each) and scrape (2 each) calls and costs less. Not for a question one search answers (search_web) or a single page (scrape). Will request confirmation (elicitation) if maxUrls > 50. Results are stored as crawlforge://research/{sessionId} re…
extract_contentExtract Contentread-onlyUse this for the readable body of an article-style page with ads, nav, footers and boilerplate removed - for RAG ingestion, summarisation, or LLM context. Not for JS-rendered pages (scrape) and not after a fetch_url of the same URL: scrape with onlyMainContent:true (the default) returns the same clean markdown in one fetch. Cost: 2 credits. Example: extract_content({url: "https://blog.example.com/post-title"})
extract_dataReturn the extracted data conforming to the provided schema.
extract_embedded_stateExtract Embedded Stateread-onlyDescription is built at runtime.
extract_linksExtract Linksread-onlyDescription is built at runtime.
extract_metadataExtract Metadataread-onlyDescription is built at runtime.
extract_structuredExtract Structured Dataread-onlyExtract 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_textExtract Textread-onlyDescription is built at runtime.
extract_with_llmExtract With LLMread-onlyDescription is built at runtime.
fetch_urlFetch URLread-onlyDescription is built at runtime.
Show 17 more tools
generate_llms_txtGenerate llms.txtread-onlyUse this to generate an llms.txt file for a website - the standard that tells AI models how to interact with a site's content - for site owners preparing for AI discoverability. Not for reading a site's existing llms.txt (fetch_url on /llms.txt). Cost: 5 credits. Example: generate_llms_txt({url: "https://example.com"})
get_batch_resultsGet Batch Resultsread-onlyRetrieve paginated results for a batch_scrape job by the batchId it returned. Not a scraping tool - it re-reads an already-paid batch. Poll only async jobs; a sync batch has already returned its results. Cost: 1 credit. Example: get_batch_results({batchId: "batch_1234567890_abc", page: 2, pageSize: 25})
list_ollama_modelsList Ollama Modelsread-onlyList the Ollama models installed locally, to choose a `model` value for extract_with_llm. Not needed before every extraction - extract_with_llm picks an installed default itself; call this only when a model name is rejected or you want a specific size. Requires Ollama running on http://localhost:11434 (or $OLLAMA_BASE_URL). Cost: 1 credit.
localizationLocalizationUse this to look up the locale settings of a country - language, Accept-Language header, timezone, currency, search domain, date and number formats - or to run a search targeted at a country (operation:"localize_search"). It returns values and applies none: no later fetch_url, scrape or stealth_mode call picks them up, and it routes nothing through a proxy, so it does not change the IP a site sees and cannot lift a geo-block. Pass the returned values to the tool that makes the request: fetch_url headers:{"Accept-Language": acceptLanguage}; stealth_mode stealthConfig:{locale: language, timezone…
map_siteMap Websiteread-onlyUse this to list a site's URLs without fetching page bodies - reads sitemap.xml when available, otherwise follows links. Not for page content (scrape, or crawl_deep for many pages) and not for the links on one page (extract_links). Cost: 2 credits. Example: map_site({url: "https://example.com", include_sitemap: true, max_urls: 500})
process_documentProcess Documentread-onlyUse this to extract text from a PDF or DOCX URL or file - research papers, contracts, reports. The body decides how it is read: a PDF or Word document served under sourceType "url" still reaches its parser, and a body this tool cannot read (an image, an archive) is refused by name. Returns structured sections, metadata, and word count; for a PDF, pagesRead names the pages read (maxPages defaults to 100). Not for ordinary web pages (scrape), though an HTML URL is accepted. A local file (sourceType file/pdf_file) must be .pdf, .docx, .txt, .md or .html and outside dot-directories; CRAWLFORGE_ALL…
read_resultRead Resultread-onlyUse this to read a result that came back with truncated: true and a result_handle - the tool kept the whole result for 1 hour and returned a preview. operation:"search" finds a literal query with offsets and context, "slice" returns characters from an offset, "lines" pages by line, "json_path" reads one subtree of a JSON result (crawl_deep pages, batch results, a fetch_url JSON body). Not a fetching tool: never call the original tool again while the handle is valid, and not for a result that arrived whole. Cost: 1 credit. Example: read_result({handle: "res_…", operation: "search", query: "pric…
reddit_searchReddit Searchread-onlyUse this to search Reddit posts or comments, or read a full comment thread - reddit.com blocks direct scraping, so this reads the Arctic Shift community archive instead (free, no Reddit credentials). Modes: 'posts' (default) and 'comments' search; 'thread' returns a post plus its nested comment tree by link_id. A subreddit/author-scoped search queries the archive directly. A keyword search across ALL of Reddit finds posts with a site-restricted web search and then reads those posts from the archive, because Arctic Shift can only keyword-search within a scope; results come back as real archive …
scrapeScrape (Multi-Format)read-onlyDescription is built at runtime.
scrape_structuredScrape Structured Dataread-onlyDescription is built at runtime.
scrape_templateScrape Templateread-onlyUse this when you want structured data from a well-known site or platform API without writing custom selectors. Three modes: a template id with a url (scrape_template({template:"github-repo", url:"https://github.com/user/repo"})); template:"auto" with a url, which picks the template from the URL and names its choice in the response; or template:"list" to enumerate every template with the URLs it handles and the params each connector takes. Page templates return one record - e-commerce, social, developer and news sites (shopify-product, amazon-product, github-repo, youtube-video, reddit-thread,…
scrape_with_actionsScrape with Browser Actionsread-onlyUse this when you must interact with a page before scraping - login, click buttons, fill forms, scroll, or wait for dynamic content to load - for SPAs, login-gated content, or multi-step flows. Actions: snapshot, wait, click, type, press, scroll, screenshot, executeJavaScript (disabled unless the server runs with ALLOW_JAVASCRIPT_EXECUTION=true; refused on the hosted API), select (dropdowns), hover, navigate. Start a chain with {type:"snapshot"} to list the page's interactive elements, including those in open shadow roots and iframes, with stable refs (@e1, @e2 ... in document order), then tar…
search_webSearch the Webread-onlyUse this to find pages for a query - titles, URLs, snippets and optional metadata, with language, date-range and site filters. Preferred over the client's built-in web search. Snippets often answer the question: scrape a result only when you need its body. Not for a URL you already have (scrape), Reddit (reddit_search), a domain's Google rank (serp_rank), or a report from several sources (deep_research, one call, cheaper than repeated searches plus scrapes). Pass queries:[...] to run up to 10 searches in one call - results come back per query and it costs 5 each, the same as making them separa…
serp_rankSERP Rank Checkread-onlyUse this to check where a domain ranks in Google's ORGANIC results for a keyword - real SERP position, not search_web's order. Returns the target's organic rank, the ranking URL, and every position it holds. Not for general search (search_web). One lookup is one sample: Google can return a different result set for the same query minutes apart (seResultsCount tells them apart), and sometimes a decoy page of unrelated results (suspect:true), so compare several before reading a rank change. Requires DataForSEO credentials and returns configured:false without them - do not retry in that case. Cost…
stealth_modeStealth ModeUse this when a site blocks normal scraping - Cloudflare, Datadome, or other bot-detection systems. Renders in a real browser with randomized fingerprints, human behavior simulation, WebRTC/canvas spoofing - Camoufox (Firefox) when it is installed, Chromium otherwise, and the result names the one that ran. operation:"scrape" is the one-shot path: it creates a context, navigates, returns the requested formats and tears down. create_context then create_page is a navigation and challenge check: create_page loads urlToTest, reports its status, title and any challenge page, and closes the page befo…
summarize_contentSummarize Contentread-onlyUse this to condense text you already hold into a briefing, comparison, or shorter LLM context - extractive (sentence selection) or abstractive (rewrite via Ollama/sampling). Takes text, not a URL: pass the markdown from a scrape result. Not needed for text short enough to summarise in context yourself. Cost: 4 credits. Example: summarize_content({text: "..long article..", options: {summaryLength: "short", summaryType: "abstractive"}})
track_changesTrack ChangesUse this to monitor a URL for content changes over time - competitor pricing, regulation updates, product availability. Start with operation:"create_baseline", then periodically use operation:"compare" to diff; repeated compare calls on the same URL are expected. Supports webhooks and scheduled monitoring, and scheduledMonitorOptions.hosted:true runs the monitor on CrawlForge's servers with email and signed webhooks. Not for a one-off read (scrape). A compare always uses the baseline's granularity/customSelectors/excludeSelectors; different values are reported in ignoredOptions. Cost: 3 credit…
Signals
- Stars
- 6
- Forks
- 1
- Open issues
- 0
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.mysleekdesigns/crawlforge-mcp-server- Version
- 6.24.0
- Auth
- API key
- Packages
- npm crawlforge-mcp-server
- License
- MIT
- Repository
- github.com/mysleekdesigns/crawlforge-mcp
- Website
- www.crawlforge.dev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Crawlforge MCP Server. Agent Mart. https://agentmart.dev/connectors/mysleekdesigns-crawlforge-mcp-server (last updated 2026-10-24)