Skip to content
Agentmart
Submit a tool

Librecrawl — Technical SEO Audit MCP Server

Self-hosted technical SEO audit MCP.

Connector by adityaarsharma · GitHub account verified by the MCP Registry

IndexedMIT★ 43
Write a review

Install

Pick your client. Read the repository before you give any tool access to your data.

No install instructions from the source yet. Check the repository for setup steps.

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.

We use your email only for this newsletter. Privacy

About

Self-hosted technical SEO audit MCP. 50+ checks, WAF detection, ephemeral. Built on LibreCrawl.

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

Tools
21 read · 5 write · 2 delete · 10 not yet classified
Secrets
None asked for
Install scripts
None found

Tools by what they do 38

Read from the source code; the running server may list different tools.

Read 21 · Look things up without changing anything.

  • librecrawl_audit
  • librecrawl_audit_artifacts
  • librecrawl_audit_cancel
  • librecrawl_audit_force_advance
  • librecrawl_audit_pause
  • librecrawl_audit_pdf
  • librecrawl_audit_resume
  • librecrawl_audit_status
  • librecrawl_external_links_audit
  • librecrawl_full_audit_strict
  • librecrawl_get_settings
  • librecrawl_get_status
Show 9 more tools
  • librecrawl_list_crawls
  • librecrawl_pagespeed_audit
  • librecrawl_pagespeed_audit_all_crawl_pages
  • librecrawl_report_content
  • librecrawl_schema_audit
  • librecrawl_schema_check
  • librecrawl_schema_validate
  • librecrawl_site_check
  • librecrawl_visualization_data

Write 5 · Create, change, send or run things.

  • librecrawl_append_gsc_section
  • librecrawl_merge_gsc_data
  • librecrawl_start_chunked_audit
  • librecrawl_start_crawl
  • librecrawl_stop_crawl

Delete 2 · Delete, drop, revoke or wipe things.

  • librecrawl_brain_purge_audit
  • librecrawl_wipe_everything

Not yet classified 10 · We could not tell from the name and description.

  • librecrawl_audit_confirm_saved
  • librecrawl_audit_zip
  • librecrawl_export_results
  • librecrawl_filter_issues
  • librecrawl_generate_report
  • librecrawl_internal_links_analysis
  • librecrawl_pagespeed
  • librecrawl_pause_crawl
  • librecrawl_resume_crawl
  • librecrawl_resume_from_crawl_id

Network hosts it talks to 14

  • adityaarsharma.com · found in code
  • agent-plugins.org · found in code
  • anthropic.com · found in code
  • astral.sh · found in code
  • audit.adityaarsharma.com · found in code
  • console.cloud.google.com · found in code
  • developers.google.com · found in code
  • docs.docker.com · found in code
  • github.com · found in code
  • glama.ai · found in code
  • googleapis.com · found in code
  • huge-site.com · found in code
  • raw.githubusercontent.com · found in code
  • yoursite.com · found in code

Files it touches

  • /tmp/x.pdf
  • Your home directory (~)

Tools (38)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • librecrawl_append_gsc_section

    Append a Google Search Console errors section to an existing MD audit report. Workflow: 1. librecrawl_audit(url) → get report_path 2. Use gsc-posi connector to pull GSC coverage/crawl errors for the domain 3. Pass both here — GSC section gets appended to the report gsc_data keys (any/all): coverage_errors — list of {url, type, last_crawled} crawl_errors — list of {url, response_code, last_crawled} search_issues — list of strings (manual actions, security issues) performance — dict {clicks, impressions, ctr, position} (or pass these keys flat at…

  • librecrawl_audit

    Full SEO / technical site audit in one call — the Screaming Frog alternative. Crawls the entire site, runs 30+ checks across 17 categories (broken links, duplicate titles, missing H1, thin content, canonical issues, redirect chains, orphan pages, image alt text, Open Graph, hreflang, analytics coverage, and more), then saves a structured Markdown report with a prioritised fix checklist. USE THIS when asked to: - "audit [site]", "run an SEO audit", "technical SEO check", "site health check" - "find broken links / 404s", "check title tags / meta descriptions" - "analyse internal linking", "fin…

  • librecrawl_audit_artifacts

    Return the file paths of artifacts produced for a finished session (MD report + per-page.csv + sitemap-recon.csv; PDF in v1.5+). Safe to call any time after status becomes 'done'. If called earlier returns success=False with a hint to wait. Args: session_id: From librecrawl_start_chunked_audit().

  • librecrawl_audit_cancel

    Terminal stop. Upstream crawl is stopped; partial artifacts are kept where written.

  • librecrawl_audit_confirm_saved

    Confirm the audit zip was saved locally, then wipe the server copy. Pass the sha256 of the file you saved. If it matches the zip the server built, the session rows, every artifact file, the zip and the upstream LibreCrawl crawl are deleted. A mismatch deletes nothing, so you can re-save and retry. Returns success True only when every cleanup step succeeded.

  • librecrawl_audit_force_advance

    Stuck-recovery escape hatch: force-finalise from whatever pages have been crawled so far. Stops the upstream, builds the report + sidecar CSVs from the current export, marks the session 'done'. Only use when status has been 'crawling'/'throttled' for an unusually long time and recent_events shows no progress.

  • librecrawl_audit_pause

    Pause a crawling session. Resume with librecrawl_audit_resume().

  • librecrawl_audit_pdf

    NEW IN v1.5 — convert a previously-generated Markdown audit report to a branded PDF. The PDF is rendered with WeasyPrint using the LibreCrawl MCP branded template (Aditya Sharma footer, accent #2563eb, sans-serif body) and written next to the input .md as <domain>-<ts>.pdf. USE THIS when: - You have an old .md report from a previous audit and want a PDF - You want to regenerate the PDF after edits to the .md - The audit's auto-PDF pass failed and you want to retry Args: report_path: Path to a .md report inside REPORTS_DIR. base_url: Optional. Audited site URL — improves the…

  • librecrawl_audit_resume

    Resume a paused or throttled session. Runner picks it back up on the next loop.

  • librecrawl_audit_status

    Poll progress on a chunked audit. Safe to call as often as you like — reads from local SQLite state, doesn't hit the upstream every time. Returns: status — queued/crawling/throttled/paused/done/cancelled/failed pages_done — pages crawled so far total_max_pages — the cap you set current_delay_ms — current crawlDelay the controller has tuned to eta_seconds — rough estimate based on current speed (None if unknown) last_chunks — last 3 polling-window metrics (p95, err_rate, delay) recent_events — last 5 state transitions au…

  • librecrawl_audit_zip

    Download the finished audit as a zip. v2.1. Flow for the calling agent: 1. base64-decode `content_base64` and write it to a LOCAL file named `filename`. Report the LOCAL path, never `zip_path` (that is on the remote server). 2. Compute sha256 of the saved file and call librecrawl_audit_confirm_saved(session_id, sha256). The server wipes the session, artifacts and upstream crawl only after that check passes, so a failed save never loses the only copy. Args: session_id: From librecrawl_start_chunked_audit() once status=done. auto_cleanup: False (default…

  • librecrawl_brain_purge_audit

    Delete a crawl's data from the upstream LibreCrawl database after the report has been consumed. Use this for post-audit cleanup so the DB doesn't accumulate stale crawl payloads. The Markdown report and sidecar CSV files in REPORTS_DIR are NOT touched — they live on disk independently of the DB record. `success` is True only when the crawl record is actually gone. Args: crawl_id: ID returned by librecrawl_audit / start_crawl / list_crawls.

  • librecrawl_export_results

    Export raw crawl JSON. For a formatted report use librecrawl_generate_report() instead. Args: crawl_id: ID from librecrawl_start_crawl (optional)

  • librecrawl_external_links_audit

    NEW IN v1.4.1 — validate every external (outbound) link from a crawl. Closes the gap LibreCrawl's upstream leaves open: the export captures every outbound URL but doesn't HEAD/GET them, so target_status sits at null. This tool fetches each unique external target with a concurrent HEAD pool (GET fallback when HEAD is blocked), follows redirects, and classifies the result Screaming-Frog-style. Output: writes <domain>-<ts>.external-links.csv next to the crawl's other artifacts. Columns: target_url, status_code, status_class, final_url, redirect_count, error_reason, content_type, response_time_m…

  • librecrawl_filter_issues

    Filter crawl issues by exclusion patterns — useful to suppress known false positives. Pass a list of URL patterns or issue types to exclude from results. Args: patterns: List of strings to exclude (e.g. ["/wp-admin/", "cdn.example.com"])

Show 23 more tools
  • librecrawl_full_audit_strict

    STRICT-MODE site audit — Screaming Frog parity. Same as librecrawl_audit but the response is annotated with an audit_complete flag and the run is marked incomplete if ANY of these happen: • crawl timed out before queue drained • max_pages cap was hit • upstream batch caps tripped • report file or sidecar CSV failed to write • sitemap reconciliation could not be computed Use this when you need a defensible audit certificate — every cap, sample, or partial result is surfaced loudly rather than hidden in summary counts. On success the run produces 3 files in REPORTS_DIR: • <domain>-…

  • librecrawl_generate_report

    Generate a full Markdown SEO audit report from a completed crawl. Runs 30+ checks (broken links, titles, metas, canonicals, images, orphan pages, redirect chains, analytics coverage, etc.) and saves as a .md file. USE THIS after librecrawl_start_crawl() finishes, or to re-generate a report from any past crawl_id via librecrawl_list_crawls(). Args: crawl_id: ID from librecrawl_start_crawl (optional — uses current crawl if omitted)

  • librecrawl_get_settings

    Get current crawler settings (maxUrls, maxDepth, crawlDelay, JS rendering, etc). Useful to confirm settings before starting a crawl. Returns the handful of settings that shape a crawl. Pass full=True for every setting, including the long default exclusion lists (about 2,500 tokens).

  • librecrawl_get_status

    Poll current crawl progress. Repeat until is_running=False. Returns: is_running, crawled, queued, issues, base_url

  • librecrawl_internal_links_analysis

    Deep internal linking analysis — maps internal authority distribution across the site. Answers: - Which pages get the most internal links? (= Google considers them most important) - Which pages are orphans? (zero inbound internal links — invisible to Googlebot) - Which pages have zero outgoing internal links? (dead ends — no crawl flow out) - Which pages are crawl budget hubs? (link out to the most others) - What anchor text patterns dominate? (keyword signal analysis) USE THIS when asked: - "internal linking audit", "orphan pages", "link equity distribution" - "which pages need more interna…

  • librecrawl_list_crawls

    List all saved crawls with URL, crawl_id, and timestamp.

  • librecrawl_merge_gsc_data

    NEW IN v1.5 — merge Google Search Console performance data into a crawl. Augments the .per-page.csv with 5 new columns (clicks_28d, impressions_28d, ctr_28d, position_28d, top_query) for every URL matched, and emits three new sidecar CSVs alongside the report: - <domain>-<ts>.gsc-winners.csv top 50 by clicks - <domain>-<ts>.gsc-losers.csv top 50 high-impressions + low CTR - <domain>-<ts>.gsc-quick-wins.csv position 11-20 + impressions > 100 GSC data shape (accepts what gsc-posi / aditya-gsc returns): { "rows": [ {"url": "https://...", "clicks": N, "impressions": …

  • librecrawl_pagespeed

    Core Web Vitals and Lighthouse scores via Google PageSpeed Insights API. Returns LCP, CLS, FCP, TBT, INP, performance/SEO/accessibility scores, and real-user CrUX field data where available. USE THIS when asked: - "Core Web Vitals", "page speed", "Lighthouse score", "CWV check" - "how fast is [page]", "LCP / CLS issues", "performance audit" Args: url: Full URL to test strategy: "mobile" (default) or "desktop"

  • librecrawl_pagespeed_audit

    Batch Core Web Vitals audit — runs PageSpeed Insights on multiple pages, ranked worst to best performance score. Identifies your slowest pages first. Throttled to 1 req/sec to stay within the free 25k/day PSI quota. USE THIS when asked: - "check CWV across all pages", "which pages are slowest", "batch page speed audit" - "performance audit for the whole site" (pass top URLs from librecrawl_audit export) Args: urls: List of URLs to test (recommend top 10–25 pages) strategy: "mobile" (default) or "desktop"

  • librecrawl_pagespeed_audit_all_crawl_pages

    Full PageSpeed Insights audit across EVERY crawled URL from a saved crawl. Makes the performance audit explicit — no sampling, no hidden caps. Each call to Google PSI counts against your daily 25k-call quota; budget accordingly (1 strategy = 1 call per URL). Use this when you need defensible CWV coverage for the entire site, not just the top N pages from librecrawl_pagespeed_audit. Args: crawl_id: The crawl ID to pull URLs from (librecrawl_list_crawls). strategy: "mobile" (default) or "desktop". limit: Hard ceiling on URLs to audit. 0 = no limit (recommended). …

  • librecrawl_pause_crawl

    Pause the currently running crawl. Resume with librecrawl_resume_crawl().

  • librecrawl_report_content

    Return the contents of a saved audit report file. The MCP wrapper runs on a remote VPS, so callers cannot read REPORTS_DIR over the filesystem — this tool serves the file back through MCP. Path-restricted to REPORTS_DIR for safety; anything outside returns an error. Args: report_path: Path returned by librecrawl_audit / generate_report / full_audit_strict. Accepts the .md report, the .per-page.csv, or .sitemap-recon.csv. max_chars: Max characters to return. Default 200k. Content beyond this is truncated; set higher only if your client can handle it…

  • librecrawl_resume_crawl

    Resume a paused crawl in the current session.

  • librecrawl_resume_from_crawl_id

    Resume a previously interrupted crawl from the database — even from a NEW MCP session, days later, after server restarts. Continues from where the crawl left off, re-using all already-crawled URLs (no duplicate work, no extra load on the target). This is the way to handle "however big, in chunks" without overloading the target: Day 1: librecrawl_audit("https://huge-site.com", max_pages=5000) — runs until time/limits or you pause it Day 2: librecrawl_list_crawls() → find your crawl_id librecrawl_resume_from_crawl_id(crawl_id) — picks up where it left off, polite…

  • librecrawl_schema_audit

    Schema.org / structured data coverage audit across multiple pages. No API key required. Identifies pages with no schema, shows schema type breakdown across the site, and flags missing rich result opportunities. NO SILENT CAPS: the whole list is processed. Internally batched in groups of `batch_size` with `batch_delay` seconds between requests to stay polite to the target server. Walks JSON-LD @graph containers (Yoast / RankMath / WPRM) so Recipe / Article / FAQPage types inside @graph are correctly extracted instead of being labelled "Unknown". USE THIS when asked: - "schema coverage across …

  • librecrawl_schema_check

    Extract and classify all Schema.org / JSON-LD structured data from a page. No API key required — fetches and parses the live page directly. Returns schema types found, which Google rich results they unlock (FAQ accordion, star ratings, breadcrumbs, product snippets, etc.), and which high-value schema types are missing. USE THIS when asked: - "does [page] have schema markup", "check structured data", "JSON-LD audit" - "what rich results is this page eligible for", "add FAQ schema" Args: url: Full URL to check

  • librecrawl_schema_validate

    NEW IN v1.5 — validate JSON-LD structured data against schema.org spec AND Google Rich Results required fields. The existing schema_check / _audit tools EXTRACT and classify schema types. This tool goes further: for the 7 most common rich-result types (Article, Product, Recipe, FAQPage, BreadcrumbList, Event, JobPosting, VideoObject, HowTo) it checks that ALL required fields are present and surfaces specific missing-field findings. Output: writes <domain>-<ts>.schema-validation.csv alongside the report with one row per finding (url, type, severity, check, detail). USE THIS when asked: - "…

  • librecrawl_site_check

    Instant technical SEO health check — no crawl needed, results in seconds. Checks robots.txt (rules, disallow, sitemap declaration, crawl-delay), sitemap.xml (existence, URL count, sitemap index), HTTPS redirect (http → https), and www/non-www canonicalisation. USE THIS when asked: - "check robots.txt", "is the sitemap set up", "quick site health" - "does [site] redirect http to https", "www vs non-www check" - Fast pre-audit sanity check before a full librecrawl_audit() Args: url: Site root URL (e.g. https://example.com)

  • librecrawl_start_chunked_audit

    NEW IN v1.4.0 — Start a chunked-progressive audit. Returns IMMEDIATELY with a session_id; the crawl runs in the background and survives PM2 restart. The runner polls upstream LibreCrawl every 20s, computes p95 latency + error rate per window, and re-tunes crawlDelay live (AIMD controller). Slow target → smaller per-second rate. Fast target → speeds up. Never overloads the site you're auditing. Returns: session_id — opaque id to poll librecrawl_audit_status() with status — initial state ("queued" → quickly becomes "crawling") url — echo of the input…

  • librecrawl_start_crawl

    Start an async site crawl. Returns crawl_id immediately — does NOT wait for completion. Poll librecrawl_get_status() until done, then librecrawl_generate_report(crawl_id). Prefer librecrawl_audit() for a one-call full SEO audit with auto-report. Use this tool when you need step-by-step control or want to crawl in the background. Args: url: Full URL to crawl (e.g. https://example.com) max_pages: Max pages to crawl. Default 500. 0 = unlimited, which also needs confirm_unbounded=True. confirm_unbounded: Required with max_pages=0.

  • librecrawl_stop_crawl

    Stop the currently running crawl.

  • librecrawl_visualization_data

    Get site link graph data from the current crawl — nodes (pages) and edges (links). Useful for understanding site architecture, identifying link clusters, and finding isolated sections of the site that Googlebot may not reach efficiently. Returns: nodes list (url, depth, status) and edges list (source → target links).

  • librecrawl_wipe_everything

    NEW IN v1.9.0 — Nuke ALL audit data: every session row, every artifact file in REPORTS_DIR, every LibreCrawl upstream crawl record. Use to return the MCP to a zero-memory baseline. REQUIRES confirm=True. Default refuses to fire. `success` is True only when every step succeeded; otherwise `wiped.errors` lists what is left.

Signals

Stars
43
Forks
7
Open issues
4
Last commit
Oct 22, 2026 (7 days ago)
Last release
Oct 22, 2026 (7 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.adityaarsharma/librecrawl-technical-seo-audit-mcp
Version
2.0.5
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026

More from adityaarsharma

Cite this page

Librecrawl — Technical SEO Audit MCP Server. Agent Mart. https://agentmart.dev/connectors/adityaarsharma-librecrawl-technical-seo-audit-mcp (last updated 2026-10-25)