mcp-scraper 0.33.2 → 0.33.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -88,7 +88,7 @@ Build the branded one-click bundle:
88
88
  npm run build:mcpb
89
89
  ```
90
90
 
91
- The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.33.2`, SHA-256 `3b754cbebacb52749e41a141f6b94e8082861586b60e81f0433ca30cb676949e`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, and API-key configuration field from the bundle manifest.
91
+ The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.33.4`, SHA-256 `9444edeec9e9bde429936ed0f9953a84569e17ad37ebbc1b66f7ac05fb40eb96`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, and API-key configuration field from the bundle manifest.
92
92
 
93
93
  The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
94
94
 
@@ -29815,7 +29815,7 @@ var PACKAGE_VERSION;
29815
29815
  var init_version = __esm({
29816
29816
  "src/version.ts"() {
29817
29817
  "use strict";
29818
- PACKAGE_VERSION = "0.33.2";
29818
+ PACKAGE_VERSION = "0.33.4";
29819
29819
  }
29820
29820
  });
29821
29821
 
@@ -30279,9 +30279,9 @@ var init_mcp_tool_schemas = __esm({
30279
30279
  gl: import_zod35.z.string().length(2).default("us").describe("Google country code inferred from location or user language."),
30280
30280
  hl: import_zod35.z.string().default("en").describe("Google interface/content language inferred from the user request."),
30281
30281
  device: import_zod35.z.enum(["desktop", "mobile"]).default("desktop").describe("SERP device context. Use mobile only for mobile rankings."),
30282
- proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_PROXY_MODE).describe("Leave unset for clean egress (the default). Country/region localization comes from gl/hl plus the city or region in the query \u2014 not from a proxy."),
30283
- proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe('US ZIP for residential geo-IP targeting. Only meaningful with proxyMode "location".'),
30284
- debug: import_zod35.z.boolean().default(false).describe("Include sanitized diagnostics for debugging localization, CAPTCHA, or proxy behavior.")
30282
+ proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_PROXY_MODE).describe("Leave unset for the default route. Country/region localization comes from gl/hl plus the city or region in the query."),
30283
+ proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe("Optional US ZIP override."),
30284
+ debug: import_zod35.z.boolean().default(false).describe("Include sanitized diagnostics for debugging.")
30285
30285
  };
30286
30286
  ExtractUrlInputSchema = {
30287
30287
  url: import_zod35.z.string().url().describe("Public http/https URL to extract."),
@@ -30306,7 +30306,7 @@ var init_mcp_tool_schemas = __esm({
30306
30306
  ExtractSiteInputSchema = {
30307
30307
  url: import_zod35.z.string().url().describe("Public website URL or domain to crawl for page CONTENT (map + scrape). For a technical SEO audit use audit_site instead \u2014 this returns content only, not analysis."),
30308
30308
  maxPages: import_zod35.z.number().int().min(1).max(1e4).optional().describe("Maximum pages to extract. Bulk crawls (over 25 pages) switch to folder mode: each page saved as its own Markdown file, with a summary plus folder path returned instead of inlining content."),
30309
- rotateProxies: import_zod35.z.boolean().optional().describe("Route page fetches through rotating residential proxies to defeat rate-limiting and bot blocks (403/429). Slower and pricier \u2014 use only when a site blocks normal crawling."),
30309
+ rotateProxies: import_zod35.z.boolean().optional().describe("Use extra measures to get past sites that block normal crawling (403/429). Slower and pricier \u2014 use only when a site blocks normal crawling."),
30310
30310
  rotateProxyEvery: import_zod35.z.number().int().min(1).max(100).optional().describe("When rotateProxies is on, pages fetched per proxy before rotating. Default 30."),
30311
30311
  formats: import_zod35.z.array(import_zod35.z.enum(["markdown", "links", "json", "images", "branding"])).optional().describe("Per-page output formats: markdown, links, json, images are captured cheaply from HTML; branding (site-level logo/colors/fonts) requires a browser and adds time. Defaults to markdown+links."),
30312
30312
  background: import_zod35.z.boolean().default(false).describe("Run the crawl as a background job instead of blocking this call, returning a jobId immediately \u2014 poll it with check_site_export to get a downloadable zip (all page content, plus real image files if downloadImages is set) once ready. Use for large sites where a synchronous call would be slow."),
@@ -30315,7 +30315,7 @@ var init_mcp_tool_schemas = __esm({
30315
30315
  AuditSiteInputSchema = {
30316
30316
  url: import_zod35.z.string().url().describe("Public website URL or domain for a full technical SEO audit (issues, link graph, indexability, headings, images). For plain content use extract_site instead."),
30317
30317
  maxPages: import_zod35.z.number().int().min(1).max(1e4).optional().describe("Maximum pages to crawl and audit. Always writes a folder of analysis files plus per-page content, returning a summary plus the folder path."),
30318
- rotateProxies: import_zod35.z.boolean().optional().describe("Route page fetches through rotating residential proxies to defeat rate-limiting and bot blocks. Slower/pricier \u2014 use only when a site blocks normal crawling."),
30318
+ rotateProxies: import_zod35.z.boolean().optional().describe("Use extra measures to get past sites that block normal crawling. Slower/pricier \u2014 use only when a site blocks normal crawling."),
30319
30319
  rotateProxyEvery: import_zod35.z.number().int().min(1).max(100).optional().describe("When rotateProxies is on, pages fetched per proxy before rotating. Default 30."),
30320
30320
  background: import_zod35.z.boolean().default(false).describe("Run the audit as a background job instead of blocking this call, returning a jobId immediately \u2014 poll it with check_site_export to get a downloadable zip (full audit report, all page content, plus real image files if downloadImages is set) once ready. Use for large sites where a synchronous call would be slow."),
30321
30321
  downloadImages: import_zod35.z.boolean().default(false).describe("Download every discovered image as a real file into the export bundle (not just image URLs/stats). OFF by default \u2014 must be explicitly set true. Implies background regardless of the background flag, since downloading a whole site's images is too slow to run synchronously. Capped at 20 images/page and 500 images/site.")
@@ -30448,8 +30448,8 @@ var init_mcp_tool_schemas = __esm({
30448
30448
  hl: import_zod35.z.string().length(2).default("en").describe("Language inferred from user request."),
30449
30449
  maxResults: import_zod35.z.number().int().min(1).max(50).default(10).describe("Number of candidates to return. Default 10, maximum 50."),
30450
30450
  includeServices: import_zod35.z.boolean().default(false).describe("Open each returned business profile to include its configured services and areas served when available. Adds a page visit per business; does not collect review cards."),
30451
- proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_MAPS_PROXY_MODE).describe("Leave unset for the default route (stealth browser on the managed ISP proxy, retried on a fresh session when Google blocks). Country/region localization comes from the city or region in the query plus gl/hl \u2014 not from a proxy."),
30452
- proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe("Optional US ZIP override, only used when proxyMode is location."),
30451
+ proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_MAPS_PROXY_MODE).describe("Leave unset for the default route. Country/region localization comes from the city or region in the query plus gl/hl."),
30452
+ proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe("Optional US ZIP override."),
30453
30453
  debug: import_zod35.z.boolean().default(false).describe("Include sanitized browser/proxy diagnostics.")
30454
30454
  };
30455
30455
  DirectoryWorkflowInputSchema = {
@@ -30463,8 +30463,8 @@ var init_mcp_tool_schemas = __esm({
30463
30463
  includeZipGroups: import_zod35.z.boolean().default(true).describe("Attach ZIP groups from a configured US ZIPS CSV when available (MCP_SCRAPER_USZIPS_CSV_PATH or usZipsCsvPath)."),
30464
30464
  usZipsCsvPath: import_zod35.z.string().optional().describe("Local/test-only path to a US ZIPS CSV (state_abbr, zipcode, county, city columns). Deployed APIs should use MCP_SCRAPER_USZIPS_CSV_PATH instead. For ZIP enrichment, set MCP_SCRAPER_USZIPS_CSV_PATH on the server, or pass this in local/test mode."),
30465
30465
  saveCsv: import_zod35.z.boolean().default(true).describe("Save a directory-ready CSV of results to the MCP Scraper output directory and return its path."),
30466
- proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_MAPS_PROXY_MODE).describe("Proxy behavior per city search. Leave unset for the default route (stealth browser on the managed ISP proxy, retried fresh on a Google block). Country/region localization comes from the city or region in the query plus gl/hl \u2014 not from a proxy."),
30467
- proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe("Optional ZIP override for proxy targeting; normally omitted."),
30466
+ proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_MAPS_PROXY_MODE).describe("Proxy behavior per city search. Leave unset for the default route. Country/region localization comes from the city or region in the query plus gl/hl."),
30467
+ proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe("Optional US ZIP override."),
30468
30468
  debug: import_zod35.z.boolean().default(false).describe("Include sanitized browser/proxy diagnostics.")
30469
30469
  };
30470
30470
  ArtifactPointerOutputSchema = import_zod35.z.object({
@@ -31303,9 +31303,9 @@ var init_mcp_tool_schemas = __esm({
31303
31303
  gl: import_zod35.z.string().length(2).default("us").describe("Google country code inferred from location or user language."),
31304
31304
  hl: import_zod35.z.string().default("en").describe("Google interface/content language inferred from user request."),
31305
31305
  device: import_zod35.z.enum(["desktop", "mobile"]).default("desktop").describe("SERP device context. Use mobile only for mobile rankings."),
31306
- proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_PROXY_MODE).describe("Leave unset for clean egress (the default). Country/region localization comes from gl/hl plus the city or region in the query \u2014 not from a proxy."),
31307
- proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe('US ZIP for residential geo-IP targeting. Only meaningful with proxyMode "location".'),
31308
- debug: import_zod35.z.boolean().default(false).describe("Include sanitized diagnostics for debugging localization, CAPTCHA, or proxy behavior."),
31306
+ proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_PROXY_MODE).describe("Leave unset for the default route. Country/region localization comes from gl/hl plus the city or region in the query."),
31307
+ proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe("Optional US ZIP override."),
31308
+ debug: import_zod35.z.boolean().default(false).describe("Include sanitized diagnostics for debugging."),
31309
31309
  pages: import_zod35.z.number().int().min(1).max(2).default(1).describe("Number of result pages to fetch (1\u20132).")
31310
31310
  };
31311
31311
  CaptureSerpSnapshotInputSchema = {
@@ -31314,8 +31314,8 @@ var init_mcp_tool_schemas = __esm({
31314
31314
  gl: import_zod35.z.string().length(2).default("us").describe("Google country code inferred from the requested market."),
31315
31315
  hl: import_zod35.z.string().default("en").describe("Google interface/content language inferred from the user request."),
31316
31316
  device: import_zod35.z.enum(["desktop", "mobile"]).default("desktop").describe("SERP device context. Use mobile only for mobile rankings/evidence."),
31317
- proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_PROXY_MODE).describe("Leave unset for clean egress (the default). Country/region localization comes from gl/hl plus the city or region in the query \u2014 not from a proxy."),
31318
- proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe('US ZIP for residential geo-IP targeting. Only meaningful with proxyMode "location".'),
31317
+ proxyMode: import_zod35.z.enum(["configured", "none"]).default(DEFAULT_PROXY_MODE).describe("Leave unset for the default route. Country/region localization comes from gl/hl plus the city or region in the query."),
31318
+ proxyZip: import_zod35.z.string().regex(/^\d{5}$/).optional().describe("Optional US ZIP override."),
31319
31319
  pages: import_zod35.z.number().int().min(1).max(2).default(1).describe("Google result pages to capture. Use 2 only for deeper ranking evidence."),
31320
31320
  debug: import_zod35.z.boolean().default(false).describe("Include sanitized browser/proxy/location diagnostics."),
31321
31321
  includePageSnapshots: import_zod35.z.boolean().default(false).describe("Also capture ranking-page snapshots for selected SERP URLs. Each attempted snapshot adds 1 Credit."),