alterlab-mcp-server 1.0.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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +384 -0
  3. package/dist/client.d.ts +14 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +84 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +6 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +17 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/errors.d.ts +10 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +136 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/format.d.ts +19 -0
  16. package/dist/format.d.ts.map +1 -0
  17. package/dist/format.js +122 -0
  18. package/dist/format.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +34 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/tools/balance.d.ts +7 -0
  24. package/dist/tools/balance.d.ts.map +1 -0
  25. package/dist/tools/balance.js +32 -0
  26. package/dist/tools/balance.js.map +1 -0
  27. package/dist/tools/estimate.d.ts +22 -0
  28. package/dist/tools/estimate.d.ts.map +1 -0
  29. package/dist/tools/estimate.js +53 -0
  30. package/dist/tools/estimate.js.map +1 -0
  31. package/dist/tools/extract.d.ts +28 -0
  32. package/dist/tools/extract.d.ts.map +1 -0
  33. package/dist/tools/extract.js +68 -0
  34. package/dist/tools/extract.js.map +1 -0
  35. package/dist/tools/scrape.d.ts +37 -0
  36. package/dist/tools/scrape.d.ts.map +1 -0
  37. package/dist/tools/scrape.js +84 -0
  38. package/dist/tools/scrape.js.map +1 -0
  39. package/dist/tools/screenshot.d.ts +19 -0
  40. package/dist/tools/screenshot.d.ts.map +1 -0
  41. package/dist/tools/screenshot.js +84 -0
  42. package/dist/tools/screenshot.js.map +1 -0
  43. package/dist/types.d.ts +79 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +26 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +43 -0
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scrapeDescription = exports.scrapeSchema = void 0;
4
+ exports.handleScrape = handleScrape;
5
+ const zod_1 = require("zod");
6
+ const errors_js_1 = require("../errors.js");
7
+ const format_js_1 = require("../format.js");
8
+ exports.scrapeSchema = zod_1.z.object({
9
+ url: zod_1.z.string().url().describe("URL to scrape"),
10
+ mode: zod_1.z
11
+ .enum(["auto", "html", "js", "pdf", "ocr"])
12
+ .default("auto")
13
+ .describe("Scraping mode: auto (recommended), html, js (headless browser), pdf, or ocr"),
14
+ formats: zod_1.z
15
+ .array(zod_1.z.enum(["text", "json", "html", "markdown"]))
16
+ .default(["markdown"])
17
+ .describe("Output formats. 'markdown' is best for LLM consumption"),
18
+ render_js: zod_1.z
19
+ .boolean()
20
+ .default(false)
21
+ .describe("Render JavaScript using headless browser (+3 credits). Required for JS-heavy sites"),
22
+ use_proxy: zod_1.z
23
+ .boolean()
24
+ .default(false)
25
+ .describe("Route through premium proxy (+1 credit). Helps bypass geo-restrictions and anti-bot"),
26
+ proxy_country: zod_1.z
27
+ .string()
28
+ .optional()
29
+ .describe("ISO country code for geo-targeting (e.g., 'US', 'DE'). Requires use_proxy=true"),
30
+ wait_for: zod_1.z
31
+ .string()
32
+ .optional()
33
+ .describe("CSS selector to wait for before extracting content (e.g., '#main-content')"),
34
+ timeout: zod_1.z
35
+ .number()
36
+ .min(1)
37
+ .max(300)
38
+ .default(90)
39
+ .describe("Request timeout in seconds (1-300)"),
40
+ include_raw_html: zod_1.z
41
+ .boolean()
42
+ .default(false)
43
+ .describe("Include raw HTML in the response alongside formatted content"),
44
+ });
45
+ exports.scrapeDescription = "Scrape a URL and return its content as markdown, text, HTML, or JSON. " +
46
+ "Automatically handles anti-bot protection with tier escalation. " +
47
+ "Returns markdown by default — optimized for LLM context. " +
48
+ "Use render_js=true for JavaScript-heavy sites (React, Angular, SPAs). " +
49
+ "Use use_proxy=true for geo-restricted or heavily protected sites.";
50
+ async function handleScrape(client, params) {
51
+ try {
52
+ const response = await client.scrape({
53
+ url: params.url,
54
+ mode: params.mode,
55
+ formats: params.formats,
56
+ sync: true,
57
+ timeout: params.timeout,
58
+ include_raw_html: params.include_raw_html,
59
+ wait_for: params.wait_for,
60
+ advanced: {
61
+ render_js: params.render_js,
62
+ use_proxy: params.use_proxy,
63
+ proxy_country: params.proxy_country,
64
+ markdown: params.formats.includes("markdown"),
65
+ },
66
+ });
67
+ return {
68
+ content: [{ type: "text", text: (0, format_js_1.formatScrapeResponse)(response) }],
69
+ };
70
+ }
71
+ catch (error) {
72
+ if (isApiError(error)) {
73
+ return (0, errors_js_1.formatErrorResult)(error, { url: params.url });
74
+ }
75
+ return (0, errors_js_1.formatErrorResult)(error, { url: params.url });
76
+ }
77
+ }
78
+ function isApiError(error) {
79
+ return (typeof error === "object" &&
80
+ error !== null &&
81
+ "status" in error &&
82
+ typeof error.status === "number");
83
+ }
84
+ //# sourceMappingURL=scrape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
3
+ import type { AlterLabClient } from "../client.js";
4
+ export declare const screenshotSchema: z.ZodObject<{
5
+ url: z.ZodString;
6
+ wait_for: z.ZodOptional<z.ZodString>;
7
+ wait_until: z.ZodDefault<z.ZodEnum<["networkidle", "domcontentloaded", "load"]>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ url: string;
10
+ wait_until: "networkidle" | "domcontentloaded" | "load";
11
+ wait_for?: string | undefined;
12
+ }, {
13
+ url: string;
14
+ wait_for?: string | undefined;
15
+ wait_until?: "networkidle" | "domcontentloaded" | "load" | undefined;
16
+ }>;
17
+ export declare const screenshotDescription: string;
18
+ export declare function handleScreenshot(client: AlterLabClient, params: z.infer<typeof screenshotSchema>): Promise<CallToolResult>;
19
+ //# sourceMappingURL=screenshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAU3B,CAAC;AAEH,eAAO,MAAM,qBAAqB,QAG+B,CAAC;AAElE,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GACvC,OAAO,CAAC,cAAc,CAAC,CA8DzB"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.screenshotDescription = exports.screenshotSchema = void 0;
4
+ exports.handleScreenshot = handleScreenshot;
5
+ const zod_1 = require("zod");
6
+ const errors_js_1 = require("../errors.js");
7
+ const types_js_1 = require("../types.js");
8
+ exports.screenshotSchema = zod_1.z.object({
9
+ url: zod_1.z.string().url().describe("URL to take a screenshot of"),
10
+ wait_for: zod_1.z
11
+ .string()
12
+ .optional()
13
+ .describe("CSS selector to wait for before taking screenshot"),
14
+ wait_until: zod_1.z
15
+ .enum(["networkidle", "domcontentloaded", "load"])
16
+ .default("networkidle")
17
+ .describe("Page load event to wait for before screenshot"),
18
+ });
19
+ exports.screenshotDescription = "Take a full-page screenshot of a URL. Returns the screenshot as a PNG image. " +
20
+ "Uses headless browser rendering. " +
21
+ "Use wait_for to wait for a specific element before capturing.";
22
+ async function handleScreenshot(client, params) {
23
+ try {
24
+ // Screenshot requires render_js=true and screenshot=true
25
+ const response = await client.scrape({
26
+ url: params.url,
27
+ mode: "js",
28
+ sync: true,
29
+ screenshot: true,
30
+ wait_for: params.wait_for,
31
+ wait_until: params.wait_until,
32
+ advanced: {
33
+ render_js: true,
34
+ screenshot: true,
35
+ },
36
+ });
37
+ if (!response.screenshot_url) {
38
+ return {
39
+ isError: true,
40
+ content: [
41
+ {
42
+ type: "text",
43
+ text: `Screenshot was not generated for ${params.url}.\n\n` +
44
+ "The page may have failed to render. Try:\n" +
45
+ "- Increasing timeout\n" +
46
+ "- Using wait_for to target a specific element\n" +
47
+ "- Checking that the URL is accessible",
48
+ },
49
+ ],
50
+ };
51
+ }
52
+ // Fetch the screenshot image and return as base64
53
+ const base64 = await client.fetchScreenshotAsBase64(response.screenshot_url);
54
+ const tier = response.billing.tier_used;
55
+ const tierName = types_js_1.TIER_NAMES[tier] || tier;
56
+ return {
57
+ content: [
58
+ {
59
+ type: "image",
60
+ data: base64,
61
+ mimeType: "image/png",
62
+ },
63
+ {
64
+ type: "text",
65
+ text: `Screenshot of ${response.url}\n` +
66
+ `Tier: ${tierName} | Time: ${response.response_time_ms}ms`,
67
+ },
68
+ ],
69
+ };
70
+ }
71
+ catch (error) {
72
+ if (isApiError(error)) {
73
+ return (0, errors_js_1.formatErrorResult)(error, { url: params.url });
74
+ }
75
+ return (0, errors_js_1.formatErrorResult)(error, { url: params.url });
76
+ }
77
+ }
78
+ function isApiError(error) {
79
+ return (typeof error === "object" &&
80
+ error !== null &&
81
+ "status" in error &&
82
+ typeof error.status === "number");
83
+ }
84
+ //# sourceMappingURL=screenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":";;;AAuBA,4CAiEC;AAxFD,6BAAwB;AAGxB,4CAAgE;AAChE,0CAAyC;AAE5B,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC7D,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,UAAU,EAAE,OAAC;SACV,IAAI,CAAC,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;SACjD,OAAO,CAAC,aAAa,CAAC;SACtB,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAChC,+EAA+E;IAC/E,mCAAmC;IACnC,+DAA+D,CAAC;AAE3D,KAAK,UAAU,gBAAgB,CACpC,MAAsB,EACtB,MAAwC;IAExC,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;aACjB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,oCAAoC,MAAM,CAAC,GAAG,OAAO;4BACrD,4CAA4C;4BAC5C,wBAAwB;4BACxB,iDAAiD;4BACjD,uCAAuC;qBAC1C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CACjD,QAAQ,CAAC,cAAc,CACxB,CAAC;QAEF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QACxC,MAAM,QAAQ,GAAG,qBAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAE1C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,OAAgB;oBACtB,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,WAAW;iBACtB;gBACD;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EACF,iBAAiB,QAAQ,CAAC,GAAG,IAAI;wBACjC,SAAS,QAAQ,YAAY,QAAQ,CAAC,gBAAgB,IAAI;iBAC7D;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAA,6BAAiB,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAA,6BAAiB,EAAC,KAAc,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,QAAQ,IAAI,KAAK;QACjB,OAAQ,KAAkB,CAAC,MAAM,KAAK,QAAQ,CAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,79 @@
1
+ export interface AdvancedOptions {
2
+ render_js?: boolean;
3
+ screenshot?: boolean;
4
+ markdown?: boolean;
5
+ use_proxy?: boolean;
6
+ proxy_country?: string;
7
+ wait_condition?: string;
8
+ remove_cookie_banners?: boolean;
9
+ }
10
+ export interface UnifiedScrapeRequest {
11
+ url: string;
12
+ mode?: "auto" | "html" | "js" | "pdf" | "ocr";
13
+ sync?: boolean;
14
+ advanced?: AdvancedOptions;
15
+ formats?: ("text" | "json" | "html" | "markdown")[];
16
+ include_raw_html?: boolean;
17
+ timeout?: number;
18
+ extraction_schema?: Record<string, unknown>;
19
+ extraction_prompt?: string;
20
+ extraction_profile?: "auto" | "product" | "article" | "job_posting" | "faq" | "recipe" | "event";
21
+ wait_for?: string;
22
+ screenshot?: boolean;
23
+ wait_until?: string;
24
+ }
25
+ export interface TierEscalationDetail {
26
+ tier: string;
27
+ result: "success" | "failed" | "skipped";
28
+ credits: number;
29
+ duration_ms?: number;
30
+ error?: string;
31
+ }
32
+ export interface BillingDetails {
33
+ total_credits: number;
34
+ tier_used: string;
35
+ escalations: TierEscalationDetail[];
36
+ savings: number;
37
+ optimization_suggestion?: string;
38
+ byop_applied?: boolean;
39
+ final_cost_microcents?: number;
40
+ }
41
+ export interface UnifiedScrapeResponse {
42
+ job_id?: string;
43
+ url: string;
44
+ status_code: number;
45
+ content: string | Record<string, unknown>;
46
+ title?: string;
47
+ published_at?: string;
48
+ author?: string;
49
+ metadata?: Record<string, unknown>;
50
+ headers: Record<string, string>;
51
+ cached: boolean;
52
+ response_time_ms: number;
53
+ size_bytes: number;
54
+ structured_content?: Record<string, unknown>[];
55
+ raw_html?: string;
56
+ screenshot_url?: string;
57
+ pdf_url?: string;
58
+ filtered_content?: Record<string, unknown>;
59
+ billing: BillingDetails;
60
+ extraction_method?: string;
61
+ version?: string;
62
+ }
63
+ export interface CostEstimate {
64
+ url: string;
65
+ estimated_tier: string;
66
+ estimated_credits: number;
67
+ confidence: "low" | "medium" | "high";
68
+ max_possible_credits: number;
69
+ reasoning: string;
70
+ }
71
+ export interface BalanceResponse {
72
+ balance_microcents: number;
73
+ balance_display: string;
74
+ total_deposited_cents: number;
75
+ total_spent_cents: number;
76
+ }
77
+ export declare const TIER_NAMES: Record<string, string>;
78
+ export declare const TIER_PRICES: Record<string, string>;
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // API Request Types
4
+ // ============================================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TIER_PRICES = exports.TIER_NAMES = void 0;
7
+ // ============================================================================
8
+ // Tier Info
9
+ // ============================================================================
10
+ exports.TIER_NAMES = {
11
+ "1": "curl",
12
+ "2": "http",
13
+ "3": "stealth",
14
+ "3.5": "lightjs",
15
+ "4": "browser",
16
+ "5": "captcha",
17
+ };
18
+ exports.TIER_PRICES = {
19
+ "1": "$0.0002",
20
+ "2": "$0.0003",
21
+ "3": "$0.0005",
22
+ "3.5": "$0.0007",
23
+ "4": "$0.001",
24
+ "5": "$0.02",
25
+ };
26
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;;;AAgG/E,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAElE,QAAA,UAAU,GAA2B;IAChD,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;CACf,CAAC;AAEW,QAAA,WAAW,GAA2B;IACjD,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;CACb,CAAC"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "alterlab-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for AlterLab web scraping API — scrape, extract, screenshot any webpage",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "alterlab-mcp-server": "dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "start": "node dist/index.js",
13
+ "dev": "tsc --watch"
14
+ },
15
+ "keywords": [
16
+ "mcp",
17
+ "scraping",
18
+ "web-scraping",
19
+ "alterlab",
20
+ "model-context-protocol",
21
+ "claude",
22
+ "cursor",
23
+ "windsurf"
24
+ ],
25
+ "author": "AlterLab",
26
+ "license": "MIT",
27
+ "dependencies": {
28
+ "@modelcontextprotocol/sdk": "^1.12.1",
29
+ "zod": "^3.24.2"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^22.13.4",
33
+ "typescript": "^5.7.3"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "files": [
39
+ "dist",
40
+ "README.md",
41
+ "LICENSE"
42
+ ]
43
+ }