UNPKG

@mseep/hyperbrowser-mcp

Version:

Hyperbrowser Model Context Protocol Server

82 lines (81 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.scrapeWebpageToolDescription = exports.scrapeWebpageToolName = exports.scrapeWebpageTool = void 0; const utils_1 = require("../utils"); async function scrapeWebpageTool({ url, sessionOptions, outputFormat, }) { try { const client = await (0, utils_1.getClient)(); const result = await client.scrape.startAndWait({ url, sessionOptions, scrapeOptions: { formats: outputFormat, }, }); if (result.error) { return { isError: true, content: [ { type: "text", text: result.error, }, ], }; } const response = { content: [], isError: false, }; if (result.data?.markdown) { response.content.push({ type: "text", text: result.data.markdown, }); } if (result.data?.html) { response.content.push({ type: "text", text: result.data.html, }); } if (result.data?.links) { result.data.links.forEach((link) => { response.content.push({ type: "resource", resource: { uri: link, text: link, }, }); }); } if (result.data?.screenshot) { const imageData = await (0, utils_1.downloadImageAsBase64)(result.data.screenshot); if (!imageData) { response.content.push({ type: "text", text: "Failed to get screenshot", }); response.isError = true; } else { response.content.push({ type: "image", data: imageData.data, mimeType: imageData.mimeType, }); } } return response; } catch (error) { return { content: [{ type: "text", text: `${error}` }], isError: true, }; } } exports.scrapeWebpageTool = scrapeWebpageTool; exports.scrapeWebpageToolName = "scrape_webpage"; exports.scrapeWebpageToolDescription = "Scrape a webpage and extract its content in various formats. This tool allows fetching content from a single URL with configurable browser behavior options. Use this for extracting text content, HTML structure, collecting links, or capturing screenshots of webpages.";