Technical SEO + GEO (AI-search) site audits: hosted crawls, prioritized fixes, report diffs.
MCPpedia last refreshed this data
app.crawlie/crawlie is an MCP server that technical SEO + GEO (AI-search) site audits: hosted crawls, prioritized fixes, report diffs. Its tool list has not been published yet over http, requires no API key, and scores 84/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"app-crawlie-crawlie": {
"args": [
"-y",
"pnpm"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Technical SEO + GEO (AI-search) site audits: hosted crawls, prioritized fixes, report diffs.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
pnpm: Virtual store linker path traversal via unvalidated depPath name in lockfileToDepGraph
## Summary The virtual store linker constructs package installation directories using `path.join(modules, pkgName)` where `pkgName` is extracted from lockfile `packages` keys via `dp.parse(depPath).name` without validation. A crafted `pnpm-lock.yaml` with traversal sequences in depPath keys (e.g., `../../../tmp/pwned@1.0.0`) causes package content to be written to arbitrary filesystem paths during `pnpm install`. This is an incomplete fix of GHSA-fr4h-3cph-29xv — the `safeJoinModulesDir` conta
pnpm: A tarball dependency's manifest `name` escapes node_modules → arbitrary file write/overwrite on install
## Summary When resolving a package, pnpm uses the resolved **manifest `name`** as a raw path segment for the isolated-linker import target. A tarball dependency whose `package.json` `name` is a scoped path traversal (`@x/../../…/<abs path>`) is therefore extracted **outside `node_modules`**, to an attacker-chosen absolute path, and can **overwrite existing files** there. Attacker controls the destination, filenames, and contents → arbitrary file write → **code execution** (e.g. `~/.zshrc`, `.gi
pnpm: Environment secrets exfiltrated via env-placeholder expansion in proxy settings read from an untrusted pnpm-workspace.yaml
## Summary pnpm expands `${VAR}` environment placeholders in the `httpProxy` / `httpsProxy` / `noProxy` settings read from a project's `pnpm-workspace.yaml`. Because a project manifest is repository-controlled, a malicious repository that a victim merely clones and runs `pnpm install` in can route all install traffic through an attacker proxy whose hostname or userinfo embeds — and thereby exfiltrates — an environment secret such as `NPM_TOKEN` or `GITHUB_TOKEN`. This bypasses a trust boundary
pnpm: Environment secrets exfiltrated via env-placeholder expansion in proxy settings read from an untrusted pnpm-workspace.yaml
## Summary pnpm expands `${VAR}` environment placeholders in the `httpProxy` / `httpsProxy` / `noProxy` settings read from a project's `pnpm-workspace.yaml`. Because a project manifest is repository-controlled, a malicious repository that a victim merely clones and runs `pnpm install` in can route all install traffic through an attacker proxy whose hostname or userinfo embeds — and thereby exfiltrates — an environment secret such as `NPM_TOKEN` or `GITHUB_TOKEN`. This bypasses a trust boundary
pnpm: pacquet trust-lockfile install can create dependency symlinks outside the project
## Summary A crafted lockfile alias could reach several install-time filesystem joins. With `--trust-lockfile` or a frozen lockfile, traversal segments could create links outside the intended project or `node_modules` boundary. This patch validates dependency names and every virtual-store slot before creating directories, links, bins, or hoisted entries. ## Security boundary - A shared safe-join helper rejects traversal, absolute, platform-specific, and reserved dependency names before filesy
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in browser
Open-source web scraper for AI agents with scrape, crawl, and map tools
Firecrawl, the context API for AI agents: search, scrape, interact with the web, plus paper search.
Search-first MCP server for JavaScript reverse engineering: 735 tools across 36 domains.
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
MCP Security Weekly
Get CVE alerts and security updates for app.crawlie/crawlie and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
The fast, free, open-source technical SEO + GEO crawler — built for humans and agents.
Crawl any site for broken links, redirects, missing metadata, and 40+ SEO & Generative-Engine checks — with plain-English guidance on every fix. Runs locally, ships a CLI and an MCP server, and costs nothing.
Setup · CLI · MCP & agents · Changelog · Use cases · Why I built this · Desktop app · Checks · Compare · Architecture
.png)
Crawlie helps you audit whether your content can be discovered. Spronta helps visitors find it once they reach your website: Search, Answers and Content Analytics for your existing blog, docs or resource library.
Try free site search on your content → Connect a public website and test the demo. Search includes 10,000 requests per workspace each month, with no credit card required. Answers and Analytics are separate paid products.
Crawlie runs locally under the MIT license. Spronta is an optional hosted service.
The easy way — npm (installs the crawlie CLI and the crawlie-mcp server):
npm i -g crawlie
The macOS app — grab the signed .dmg from Releases.
From source — needs Rust (engine/CLI/MCP) and, for the desktop app, pnpm + Node:
git clone https://github.com/spronta/crawlie
cd crawlie
cargo build --release
# → target/release/crawlie and target/release/crawlie-mcp
# or install onto your PATH:
cargo install --path crates/crawlie-cli # installs `crawlie`
cargo install --path crates/crawlie-mcp # installs `crawlie-mcp`
How it ships: the CLI + MCP come only through npm — the right native binary installs automatically as a platform package (nothing to download or unblock). The desktop app is the only direct download: a signed, notarized
.dmgon Releases.
# Crawl a whole site (respects robots.txt, seeds from sitemap.xml)
crawlie crawl https://example.com --format pretty
# Audit a single page, or a specific set of pages
crawlie audit https://example.com/pricing
crawlie audit https://example.com/a https://example.com/b
# Save a shareable, self-contained HTML report
crawlie crawl https://example.com --format html -o report.html
# Clean JSON on stdout (perfect for piping / scripting / agents)
crawlie crawl https://example.com --format json -o report.json
# Learn why any finding matters and how to fix it
crawlie explain geo-not-answerable
Output formats: pretty (terminal), json (machine-readable, the default), csv (issues), html (shareable file).
Common flags:
| Flag | What it does |
|---|---|
--max-pages <n> | Cap pages fetched (default 500) |
--max-depth <n> | Max click depth from the seed |