mcp-scraper 0.73.6 → 0.74.0
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 +31 -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-install.js +2 -2
- package/dist/bin/mcp-stdio-server.js +3 -3
- package/dist/{chunk-Q2J23DHY.js → chunk-BCA2OU5G.js} +1 -1
- package/dist/{chunk-HCBQHUON.js → chunk-IBJAMD4I.js} +1 -1
- package/dist/{chunk-4W4TIA3A.js → chunk-O5IRADYV.js} +1 -1
- package/dist/{server-6JEC3JHU.js → server-PMHKIZU7.js} +6 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,32 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.74.0] - 2026-08-28
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Added a consent-safe visual event picker to the X-Ray Pixel: an authenticated dashboard user can open an approved website, select a page, button, link, phone link, or form, and return a bounded editable event draft without exposing API keys, form values, or page copy to the website.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Reframed X-Ray setup around the four persisted-evidence milestones required for a first attributed conversion and made recipe customization preserve the currently selected Site.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Registered the chart component required by X-Ray Summary visual options, preventing a rendered runtime failure during responsive reporting.
|
|
20
|
+
|
|
21
|
+
## [0.73.8] - 2026-08-28
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Aligned the packaged MCP server version and generated public manifests with the 0.73.8 release so npm verification, MCPB metadata, and runtime version reporting cannot inherit the prior release number.
|
|
26
|
+
|
|
27
|
+
## [0.73.7] - 2026-08-28
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- Recorded successful native MCP Scraper login and signup outcomes as consent-governed X-Ray events without sending credentials or contact fields, allowing the subsequent authenticated identity handoff to attach those outcomes to the complete retained journey.
|
|
32
|
+
|
|
7
33
|
## [0.73.6] - 2026-08-28
|
|
8
34
|
|
|
9
35
|
### Fixed
|
|
@@ -1346,7 +1372,11 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
1346
1372
|
- Write actions remain unavailable until the account owner explicitly enables them.
|
|
1347
1373
|
- Provider-specific connection data is normalized into one agent-facing contract.
|
|
1348
1374
|
|
|
1349
|
-
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.
|
|
1375
|
+
[Unreleased]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.74.0...HEAD
|
|
1376
|
+
[0.74.0]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.8...v0.74.0
|
|
1377
|
+
[0.73.8]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.7...v0.73.8
|
|
1378
|
+
[0.73.7]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.6...v0.73.7
|
|
1379
|
+
[0.73.6]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.5...v0.73.6
|
|
1350
1380
|
[0.73.5]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.4...v0.73.5
|
|
1351
1381
|
[0.73.4]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.3...v0.73.4
|
|
1352
1382
|
[0.73.3]: https://github.com/VilovietaSEO/mcp-scraper/compare/v0.73.2...v0.73.3
|
package/README.md
CHANGED
|
@@ -173,7 +173,7 @@ Build the branded one-click bundle:
|
|
|
173
173
|
npm run build:mcpb
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
-
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.
|
|
176
|
+
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.74.0`, SHA-256 `36ad707d2e5ba87b12ef755baa9dcc16105d3548f9a9d904e6059ad6a3d89665`). 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.
|
|
177
177
|
|
|
178
178
|
The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
|
|
179
179
|
|
package/dist/bin/api-server.js
CHANGED
|
@@ -17,7 +17,7 @@ loadDotEnv();
|
|
|
17
17
|
async function main() {
|
|
18
18
|
const [{ serve }, { app }, { startWorker }, { migrate }] = await Promise.all([
|
|
19
19
|
import("@hono/node-server"),
|
|
20
|
-
import("../server-
|
|
20
|
+
import("../server-PMHKIZU7.js"),
|
|
21
21
|
import("../worker-CBK5DWEE.js"),
|
|
22
22
|
import("../db-566MOHHD.js")
|
|
23
23
|
]);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
renderInstallTerminal
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-BCA2OU5G.js";
|
|
5
5
|
import {
|
|
6
6
|
PACKAGE_VERSION
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-O5IRADYV.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;
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
registerScheduledResultsMcpTools,
|
|
14
14
|
registerSerpIntelligenceCaptureTools,
|
|
15
15
|
resolveDeploymentProfile
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-IBJAMD4I.js";
|
|
17
17
|
import "../chunk-PGJQDMC2.js";
|
|
18
18
|
import "../chunk-T3MZISOF.js";
|
|
19
19
|
import "../chunk-7RQULQF3.js";
|
|
@@ -21,12 +21,12 @@ import "../chunk-OM7HVEJ3.js";
|
|
|
21
21
|
import "../chunk-CXY5WV45.js";
|
|
22
22
|
import {
|
|
23
23
|
renderInstallTerminal
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-BCA2OU5G.js";
|
|
25
25
|
import "../chunk-VXLU74YZ.js";
|
|
26
26
|
import "../chunk-GGZEC22A.js";
|
|
27
27
|
import {
|
|
28
28
|
PACKAGE_VERSION
|
|
29
|
-
} from "../chunk-
|
|
29
|
+
} from "../chunk-O5IRADYV.js";
|
|
30
30
|
import "../chunk-DNM65UCK.js";
|
|
31
31
|
import "../chunk-EQJRPDUS.js";
|
|
32
32
|
import "../chunk-WEFPBAAG.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// release-message.json
|
|
2
2
|
var release_message_default = {
|
|
3
|
-
message: "
|
|
3
|
+
message: "X-Ray now lets an authorized dashboard user open an approved website, select a page, button, link, phone link, or form visually, and review the resulting event draft before saving it."
|
|
4
4
|
};
|
|
5
5
|
|
|
6
6
|
// src/install-terminal.ts
|
|
@@ -280,7 +280,7 @@ import {
|
|
|
280
280
|
resolveDeploymentProfile,
|
|
281
281
|
resolveLocalSourcebookSchemaType,
|
|
282
282
|
transcribeMediaUrl
|
|
283
|
-
} from "./chunk-
|
|
283
|
+
} from "./chunk-IBJAMD4I.js";
|
|
284
284
|
import {
|
|
285
285
|
auditImageUrls,
|
|
286
286
|
auditImages,
|
|
@@ -345,7 +345,7 @@ import {
|
|
|
345
345
|
} from "./chunk-GGZEC22A.js";
|
|
346
346
|
import {
|
|
347
347
|
PACKAGE_VERSION
|
|
348
|
-
} from "./chunk-
|
|
348
|
+
} from "./chunk-O5IRADYV.js";
|
|
349
349
|
import {
|
|
350
350
|
SITE_EXTRACT_ARTIFACT_PREFIX,
|
|
351
351
|
abandonExtractSettlement,
|
|
@@ -50281,6 +50281,9 @@ function analyticsLinkerSdk() {
|
|
|
50281
50281
|
function analyticsIdentityBridgeSdk() {
|
|
50282
50282
|
return `;(()=>{const s=document.currentScript||document.querySelector('script[src*="/analytics/v1/pixel.js"][data-pixel]'),api=window.mcpAnalytics;if(!s||!api)return;const pixel=String(s.dataset.pixel||''),suffix=pixel.replace(/[^a-z0-9]/gi,'_'),keys=['mcp_xray_vid_'+suffix,'mcp_xray_session_'+suffix,'mcp_xray_touches_'+suffix],cookies=['mcp_xray_vid_'+suffix,'mcp_xray_sid_'+suffix],emit=(name,detail)=>{try{window.dispatchEvent(new CustomEvent(name,{detail}))}catch{}},remove=k=>{try{localStorage.removeItem(k)}catch{}},clearCookie=n=>{try{document.cookie=n+'=; Path=/; Max-Age=0; SameSite=Lax'+(location.protocol==='https:'?'; Secure':'')}catch{}},clearSessionRules=()=>{try{for(let i=sessionStorage.length-1;i>=0;i--){const key=sessionStorage.key(i);if(key&&key.startsWith('mcp_xray_rule_'))sessionStorage.removeItem(key)}}catch{}};api.resetIdentity=()=>{const prior=api.debug();for(const key of keys)remove(key);for(const name of cookies)clearCookie(name);clearSessionRules();if(prior.consent.purposes.site_analytics!=='granted'||prior.consent.globalPrivacyControl||navigator.globalPrivacyControl)return false;const sent=api.page();const next=api.debug();return Boolean(sent&&next.visitorId&&next.sessionId&&next.visitorId!==prior.visitorId&&next.sessionId!==prior.sessionId)};const originalConsent=api.consent;api.consent=state=>{const result=originalConsent(state);emit('mcpAnalytics:consent-change',{pixel,consent:api.debug().consent});return result};queueMicrotask(()=>emit('mcpAnalytics:ready',{pixel,api:window.mcpAnalytics}))})();`;
|
|
50283
50283
|
}
|
|
50284
|
+
function analyticsVisualPickerSdk() {
|
|
50285
|
+
return `;(()=>{const s=document.currentScript||document.querySelector('script[src*="/analytics/v1/pixel.js"][data-pixel]');if(!s||typeof window.name!=='string'||!window.name.startsWith('mcp-xray-picker:')||!window.opener)return;const raw=window.name.slice(16);window.name='';let config;try{const base64=raw.replace(/-/g,'+').replace(/_/g,'/')+'==='.slice((raw.length+3)%4),binary=atob(base64),bytes=Uint8Array.from(binary,c=>c.charCodeAt(0));config=JSON.parse(new TextDecoder().decode(bytes))}catch{return}const pixel=String(s.dataset.pixel||''),scriptOrigin=new URL(s.src,location.href).origin;if(!config||config.version!==1||config.pixelId!==pixel||config.dashboardOrigin!==scriptOrigin||typeof config.nonce!=='string'||!/^[a-z0-9-]{16,80}$/i.test(config.nonce))return;const send=(type,extra={})=>{try{window.opener.postMessage({type,nonce:config.nonce,pixelId:pixel,...extra},config.dashboardOrigin)}catch{}},safeValue=value=>typeof value==='string'&&/^[a-zA-Z][a-zA-Z0-9_:-]{0,79}$/.test(value)?value:null,escape=value=>window.CSS&&typeof CSS.escape==='function'?CSS.escape(value):value.replace(/[^a-zA-Z0-9_-]/g,c=>'\\\\'+c),unique=selector=>{try{return document.querySelectorAll(selector).length===1}catch{return false}},nth=element=>{const tag=element.tagName.toLowerCase(),parent=element.parentElement;if(!parent)return tag;const peers=[...parent.children].filter(child=>child.tagName===element.tagName);return peers.length===1?tag:tag+':nth-of-type('+(peers.indexOf(element)+1)+')'},selectorFor=element=>{const tag=element.tagName.toLowerCase(),eventName=safeValue(element.getAttribute('data-xray-event'));if(eventName)return{selector:'[data-xray-event="'+escape(eventName)+'"]',quality:'portable',eventName,triggerKind:'semantic'};if(tag==='a'&&String(element.getAttribute('href')||'').toLowerCase().startsWith('tel:'))return{selector:'a[href^="tel:"]',quality:'stable',eventName:'phone_click',triggerKind:'click'};const id=safeValue(element.id);if(id&&unique('#'+escape(id)))return{selector:'#'+escape(id),quality:'stable',eventName:tag==='form'?'form_submit':tag==='a'?'link_click':'button_click',triggerKind:tag==='form'?'form':'click'};for(const attribute of ['data-testid','data-booking','data-action']){if(element.hasAttribute(attribute)){const selector=tag+'['+attribute+']';if(unique(selector))return{selector,quality:'stable',eventName:tag==='form'?'form_submit':tag==='a'?'link_click':'button_click',triggerKind:tag==='form'?'form':'click'}}}let current=element,parts=[];for(let depth=0;current&¤t!==document.body&&depth<4;depth++,current=current.parentElement){parts.unshift(nth(current));const selector=parts.join(' > ');if(unique(selector))return{selector,quality:'fragile',eventName:tag==='form'?'form_submit':tag==='a'?'link_click':'button_click',triggerKind:tag==='form'?'form':'click'}}return{selector:tag,quality:'fragile',eventName:tag==='form'?'form_submit':tag==='a'?'link_click':'button_click',triggerKind:tag==='form'?'form':'click'}};const interactive=target=>target instanceof Element?target.closest('a,button,form,input[type="button"],input[type="submit"],[role="button"],[data-xray-event]'):null,description=element=>{const tag=element.tagName.toLowerCase(),role=safeValue(element.getAttribute('role')),type=safeValue(element.getAttribute('type'));return [tag,role&&'role '+role,type&&'type '+type].filter(Boolean).join(' \xB7 ')},style=document.createElement('style');style.textContent='#mcp-xray-picker-toolbar{position:fixed!important;z-index:2147483647!important;top:12px!important;left:50%!important;transform:translateX(-50%)!important;width:min(720px,calc(100vw - 24px))!important;display:flex!important;align-items:center!important;gap:10px!important;padding:10px 12px!important;border:1px solid #b8c3cd!important;border-radius:12px!important;background:#fff!important;color:#172033!important;box-shadow:0 14px 40px rgba(15,23,42,.24)!important;font:600 13px/1.35 ui-sans-serif,system-ui,sans-serif!important}#mcp-xray-picker-toolbar strong{font-weight:800!important}#mcp-xray-picker-toolbar span{min-width:0!important;flex:1!important;color:#526071!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}#mcp-xray-picker-toolbar button{min-height:36px!important;padding:7px 11px!important;border:1px solid #aebbc8!important;border-radius:8px!important;background:#fff!important;color:#263241!important;font:700 12px ui-sans-serif,system-ui,sans-serif!important;cursor:pointer!important}#mcp-xray-picker-toolbar button[data-primary]{border-color:#087f8c!important;background:#087f8c!important;color:#fff!important}#mcp-xray-picker-outline{position:fixed!important;z-index:2147483646!important;pointer-events:none!important;border:3px solid #087f8c!important;border-radius:7px!important;background:rgba(8,127,140,.09)!important;box-shadow:0 0 0 2px #fff!important}';document.documentElement.appendChild(style);const toolbar=document.createElement('div');toolbar.id='mcp-xray-picker-toolbar';const title=document.createElement('strong');title.textContent='X-Ray picker';const status=document.createElement('span');status.textContent='Hover and click an element, or track this page.';const pageButton=document.createElement('button');pageButton.type='button';pageButton.textContent='Track this page';const addButton=document.createElement('button');addButton.type='button';addButton.dataset.primary='true';addButton.textContent='Add to X-Ray';addButton.disabled=true;const cancelButton=document.createElement('button');cancelButton.type='button';cancelButton.textContent='Cancel';toolbar.append(title,status,pageButton,addButton,cancelButton);document.documentElement.appendChild(toolbar);const outline=document.createElement('div');outline.id='mcp-xray-picker-outline';outline.hidden=true;document.documentElement.appendChild(outline);let selected=null,hovered=null;const place=element=>{const rect=element.getBoundingClientRect();outline.hidden=false;outline.style.left=rect.left+'px';outline.style.top=rect.top+'px';outline.style.width=rect.width+'px';outline.style.height=rect.height+'px'},choose=element=>{const rule=selectorFor(element);selected={hostname:location.hostname.toLowerCase().replace(/\\.$/,''),path:location.pathname,triggerKind:rule.triggerKind,eventName:rule.eventName,selector:rule.selector,description:description(element),selectorQuality:rule.quality};status.textContent=selected.description+' \xB7 '+selected.selector;addButton.disabled=false;place(element)};document.addEventListener('pointerover',event=>{const element=interactive(event.target);if(!element||toolbar.contains(element)){hovered=null;outline.hidden=true;return}hovered=element;place(element)},{capture:true,passive:true});document.addEventListener('click',event=>{if(toolbar.contains(event.target))return;const element=interactive(event.target);if(!element)return;event.preventDefault();event.stopImmediatePropagation();choose(element)},{capture:true});pageButton.addEventListener('click',()=>{selected={hostname:location.hostname.toLowerCase().replace(/\\.$/,''),path:location.pathname,triggerKind:'page',eventName:'page_reached',description:'page \xB7 '+location.pathname,selectorQuality:'portable'};status.textContent='Current page \xB7 '+location.pathname;addButton.disabled=false;outline.hidden=true});addButton.addEventListener('click',()=>{if(selected)send('mcp-xray-picker-selection',{candidate:selected})});cancelButton.addEventListener('click',()=>{send('mcp-xray-picker-cancelled');toolbar.remove();outline.remove();style.remove()});addEventListener('keydown',event=>{if(event.key==='Escape')cancelButton.click()},{capture:true});addEventListener('scroll',()=>{if(hovered)place(hovered)},{passive:true});send('mcp-xray-picker-ready')})();`;
|
|
50286
|
+
}
|
|
50284
50287
|
function pagePathFilter(value) {
|
|
50285
50288
|
return value && value.startsWith("/") ? value : void 0;
|
|
50286
50289
|
}
|
|
@@ -50408,7 +50411,7 @@ analyticsApp.get("/health/ready", async (c) => {
|
|
|
50408
50411
|
analyticsApp.get("/v1/pixel.js", (c) => {
|
|
50409
50412
|
c.header("Content-Type", "application/javascript; charset=utf-8");
|
|
50410
50413
|
c.header("Cache-Control", "public, max-age=300");
|
|
50411
|
-
return c.body(`${analyticsPixelSdk()}${analyticsIdentityBridgeSdk()}${analyticsLegacyConsentSdk()}${analyticsDefinitionLoaderSdk()}${analyticsLinkerSdk()}`);
|
|
50414
|
+
return c.body(`${analyticsPixelSdk()}${analyticsIdentityBridgeSdk()}${analyticsLegacyConsentSdk()}${analyticsDefinitionLoaderSdk()}${analyticsLinkerSdk()}${analyticsVisualPickerSdk()}`);
|
|
50412
50415
|
});
|
|
50413
50416
|
analyticsApp.get("/v1/pixels/:publicPixelId/event-definitions", async (c) => {
|
|
50414
50417
|
const publicPixelId = c.req.param("publicPixelId");
|