mcp-scraper 0.83.0 → 0.83.1
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/CHANGELOG.md +8 -1
- package/README.md +1 -1
- package/dist/bin/api-server.js +1 -1
- package/dist/bin/mcp-scraper-cli.js +1 -1
- package/dist/bin/mcp-scraper-core.js +3 -3
- package/dist/bin/mcp-scraper-install.js +1 -1
- package/dist/bin/mcp-stdio-server.js +3 -3
- package/dist/{chunk-FUG2IRKP.js → chunk-62ROBG4P.js} +1 -1
- package/dist/{chunk-AIVNZZO3.js → chunk-J2CRSYL3.js} +2 -2
- package/dist/{chunk-QSZXAA5F.js → chunk-W54QRM7I.js} +1 -1
- package/dist/{server-ICMRDYI4.js → server-XBUOLGZ3.js} +10 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.83.1] - 2026-09-01
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Allowed the X-Ray Pixel to authenticate normal same-origin runtime-manifest and health requests from their approved `Referer` hostname when browsers omit the `Origin` header, while preserving approved-domain enforcement and failing closed when neither header identifies an HTTP origin.
|
|
12
|
+
|
|
7
13
|
## [0.83.0] - 2026-09-01
|
|
8
14
|
|
|
9
15
|
### Added
|
|
@@ -1579,7 +1585,8 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
1579
1585
|
- Write actions remain unavailable until the account owner explicitly enables them.
|
|
1580
1586
|
- Provider-specific connection data is normalized into one agent-facing contract.
|
|
1581
1587
|
|
|
1582
|
-
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.
|
|
1588
|
+
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.1...HEAD
|
|
1589
|
+
[0.83.1]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.83.0...v0.83.1
|
|
1583
1590
|
[0.83.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.82.0...v0.83.0
|
|
1584
1591
|
[0.82.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.81.0...v0.82.0
|
|
1585
1592
|
[0.81.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.80.0...v0.81.0
|
package/README.md
CHANGED
|
@@ -175,7 +175,7 @@ Build the branded one-click bundle:
|
|
|
175
175
|
npm run build:mcpb
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
-
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.83.
|
|
178
|
+
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.83.1`, SHA-256 `57e9dfb6d83aa729cf90ca4654f72a4c8b16f219cbdbde737f72f23f36f3b46c`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, API-key configuration field, and manually curated current-release message from the bundle manifest.
|
|
179
179
|
|
|
180
180
|
The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
|
|
181
181
|
|
package/dist/bin/api-server.js
CHANGED
|
@@ -17,7 +17,7 @@ loadDotEnv();
|
|
|
17
17
|
async function main() {
|
|
18
18
|
const [{ serve }, { app, personalAssistantProductionStartup }, { startWorker }, { migrate }] = await Promise.all([
|
|
19
19
|
import("@hono/node-server"),
|
|
20
|
-
import("../server-
|
|
20
|
+
import("../server-XBUOLGZ3.js"),
|
|
21
21
|
import("../worker-FM3ZRDY4.js"),
|
|
22
22
|
import("../db-Z34LPZNR.js")
|
|
23
23
|
]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runMcpScraperStdio
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-J2CRSYL3.js";
|
|
5
|
+
import "../chunk-W54QRM7I.js";
|
|
6
6
|
import "../chunk-PGJQDMC2.js";
|
|
7
7
|
import "../chunk-DNM65UCK.js";
|
|
8
8
|
import "../chunk-T3MZISOF.js";
|
|
@@ -13,7 +13,7 @@ import "../chunk-OPQIGAFB.js";
|
|
|
13
13
|
import "../chunk-UXVT7FWW.js";
|
|
14
14
|
import "../chunk-BGD7U3AE.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-62ROBG4P.js";
|
|
17
17
|
import "../chunk-YXNDOQXN.js";
|
|
18
18
|
|
|
19
19
|
// src/mcp/thorbit-restricted-tool-surface.ts
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "../chunk-UXVT7FWW.js";
|
|
5
5
|
import {
|
|
6
6
|
PACKAGE_VERSION
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-62ROBG4P.js";
|
|
8
8
|
|
|
9
9
|
// bin/mcp-scraper-install.ts
|
|
10
10
|
var noColor = process.argv.includes("--no-color") || process.env.NO_COLOR !== void 0 || process.env.FORCE_COLOR === "0" || !process.stdout.isTTY;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runMcpScraperStdio
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-J2CRSYL3.js";
|
|
5
|
+
import "../chunk-W54QRM7I.js";
|
|
6
6
|
import "../chunk-PGJQDMC2.js";
|
|
7
7
|
import "../chunk-DNM65UCK.js";
|
|
8
8
|
import "../chunk-T3MZISOF.js";
|
|
@@ -13,7 +13,7 @@ import "../chunk-OPQIGAFB.js";
|
|
|
13
13
|
import "../chunk-UXVT7FWW.js";
|
|
14
14
|
import "../chunk-BGD7U3AE.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-62ROBG4P.js";
|
|
17
17
|
import "../chunk-YXNDOQXN.js";
|
|
18
18
|
|
|
19
19
|
// bin/mcp-stdio-server.ts
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
registerScheduledResultsMcpTools,
|
|
13
13
|
registerSerpIntelligenceCaptureTools,
|
|
14
14
|
resolveDeploymentProfile
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-W54QRM7I.js";
|
|
16
16
|
import {
|
|
17
17
|
renderInstallTerminal
|
|
18
18
|
} from "./chunk-UXVT7FWW.js";
|
|
19
19
|
import {
|
|
20
20
|
PACKAGE_VERSION
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-62ROBG4P.js";
|
|
22
22
|
|
|
23
23
|
// src/mcp/stdio-runtime.ts
|
|
24
24
|
import { readFileSync } from "fs";
|
|
@@ -373,7 +373,7 @@ import {
|
|
|
373
373
|
resolveLocalSourcebookSchemaType,
|
|
374
374
|
transcribeMediaUrl,
|
|
375
375
|
transitionAnalyticsExperiment
|
|
376
|
-
} from "./chunk-
|
|
376
|
+
} from "./chunk-W54QRM7I.js";
|
|
377
377
|
import {
|
|
378
378
|
auditImageUrls,
|
|
379
379
|
auditImages,
|
|
@@ -494,7 +494,7 @@ import {
|
|
|
494
494
|
} from "./chunk-GGZEC22A.js";
|
|
495
495
|
import {
|
|
496
496
|
PACKAGE_VERSION
|
|
497
|
-
} from "./chunk-
|
|
497
|
+
} from "./chunk-62ROBG4P.js";
|
|
498
498
|
import {
|
|
499
499
|
CaptchaError,
|
|
500
500
|
MapsSearchIncompletePageError,
|
|
@@ -53841,6 +53841,9 @@ function safeOrigin(origin) {
|
|
|
53841
53841
|
return null;
|
|
53842
53842
|
}
|
|
53843
53843
|
}
|
|
53844
|
+
function resolveAnalyticsPublicRequestOrigin(input) {
|
|
53845
|
+
return safeOrigin(input.origin) ?? safeOrigin(input.referer);
|
|
53846
|
+
}
|
|
53844
53847
|
function dashboardOriginAllowed(origin) {
|
|
53845
53848
|
if (origin === "https://mcpscraper.dev" || origin === "https://www.mcpscraper.dev")
|
|
53846
53849
|
return true;
|
|
@@ -54198,7 +54201,10 @@ async function publicRuntimeContext(c) {
|
|
|
54198
54201
|
const result3 = await getPublicAnalyticsEventDefinitions(publicPixelId);
|
|
54199
54202
|
if (!result3.ownerUserId || !result3.siteId) return { error: c.json({ ok: false, error: "Pixel not found." }, 404) };
|
|
54200
54203
|
if (!await analyticsOwnerHasCurrentEntitlement(result3.ownerUserId)) return { error: c.json({ ok: false, error: "X-Ray subscription required." }, 402) };
|
|
54201
|
-
const origin =
|
|
54204
|
+
const origin = resolveAnalyticsPublicRequestOrigin({
|
|
54205
|
+
origin: c.req.header("origin"),
|
|
54206
|
+
referer: c.req.header("referer")
|
|
54207
|
+
});
|
|
54202
54208
|
const hostname = origin ? normalizeAnalyticsHostname(new URL(origin).hostname) : "";
|
|
54203
54209
|
if (!hostname) return { error: c.json({ ok: false, error: "Approved Pixel hostname required." }, 403) };
|
|
54204
54210
|
const approved = await getAnalyticsPool().query(
|
|
@@ -54238,7 +54244,7 @@ analyticsApp.get("/v1/pixels/:publicPixelId/runtime-manifest", async (c) => {
|
|
|
54238
54244
|
});
|
|
54239
54245
|
return c.json({ ok: true, hostname: context.hostname, manifest }, 200, {
|
|
54240
54246
|
"Cache-Control": "public, max-age=60, stale-while-revalidate=300",
|
|
54241
|
-
"Vary": "Origin"
|
|
54247
|
+
"Vary": "Origin, Referer"
|
|
54242
54248
|
});
|
|
54243
54249
|
});
|
|
54244
54250
|
var AnalyticsRuntimeHealthSchema = z44.object({
|