@mseep/hyperbrowser-mcp
Version:
Hyperbrowser Model Context Protocol Server
82 lines (81 loc) • 2.78 kB
JavaScript
;
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.";