A side-by-side look at the SnoopScan and Unblink MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose SnoopScan for search & data extraction work as a local process; choose Unblink for search & data extraction over a hosted endpoint. You can also run both side by side in one mcpServers block.
scrape, fetchMore, search.read, browse, links.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Search & Data Extraction | Search & Data Extraction |
| Quality signal | 52/100 · Good | 52/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 8 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 22 | 18 |
| Full listing | View SnoopScan | View Unblink |
scrapefetchMoresearchparseextractcheckChangesmapcrawlcrawlStatuscrawlPageslistProductslistPostsreadMain content (`mode=article`, default) or whole page (`full`) as Markdown, paginated via cursor. `format=raw_html` returns the unreduced source (optionally scoped by a CSS `selector`) — the escape hatch for scripts/forms/SSR-embedded JSON that reduction strips; `format=text` returns visible plain t…browseCheap orientation: title, description, lang, heading outline, link/form/image counts, excerpt, semantic region map, plus `llms_txt`/`robots` presence hints. Also returns a `collections` inventory — auto-detected repeating record-sets (product lists, search results, table-like rows), each with a rea…linksThe page's links (text + absolute href), optionally filtered. `limit` defaults to 200 (cap 1000); `total`/`truncated` report the rest.formsThe page's forms and their fields (name, type, required, options).findMatching text snippets with the heading path locating each.siteA host's agent-facing metadata: robots.txt summary (allow/disallow for a browser agent, crawl-delay, sitemaps) + llms.txt content + whether llms-full.txt exists. Context only — never blocks a fetch.clickmatch?, render? }submit_formSubmits a form from the current page (cookies carried); returns a summary. Forms declaring `enctype=multipart/form-data` are encoded as multipart automatically; `files` attaches uploads (`{field, filename?, mime?, content \controlsNon-link interactive controls (buttons, `role=button`, `onclick`/`tabindex`, submit/reset inputs, tabs, summaries), each with a stable CSS selector for `interact`.interactDispatches an interaction at a selector and runs the page's JS so its handlers fire, then returns the updated page. `event` defaults to `click`, which emulates a **full primary-button press** (`pointerdown`→`mousedown`→focus→`pointerup`→`mouseup`→`click`) so press/pointer-based widgets (react-aria/…dataMachine-readable structured data embedded in a page: JSON-LD (schema.org), HTML data tables (caption/headers/rows), and microdata (itemscope/itemprop). `kind` selects `jsonld`, `tables`, `microdata`, or `all` (default). HTML only. *(Tables: colspan and rowspan are expanded onto the real grid; micro…extractCaller-directed structured extraction with a CSS-selector schema: `fields` maps each output name to a selector (a string takes the element's collapsed text; `{selector, attr}` takes an attribute value instead). An optional `root` selector emits one record per matching container (e.g. `root="li.prod…Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"snoopscan": {
"command": "uvx",
"args": [
"snoopscan"
]
}
}
}
{
"mcpServers": {
"unblink": {
"url": "https://api.example.com"
}
}
}