Skip to main content
Glama

Docs Fetch MCP Server

by wolfyy970
browser-manager.ts2.15 kB
import puppeteer, { Browser, PuppeteerLaunchOptions } from 'puppeteer'; import { DEFAULT_BROWSER_CONFIG } from '../types/index.js'; /** * Manages browser instances and operations */ export class BrowserManager { private browser: Browser | null = null; /** * Initialize a browser instance with default configuration */ async initBrowser(): Promise<Browser> { if (this.browser) { return this.browser; } try { console.error('Initializing browser...'); // Check Puppeteer version and set appropriate headless option let puppeteerVersion; try { puppeteerVersion = require('puppeteer/package.json').version; console.error(`Puppeteer version: ${puppeteerVersion}`); } catch (e) { console.error('Could not determine Puppeteer version, using fallback options'); } // Configure browser options const options: PuppeteerLaunchOptions = { args: [...DEFAULT_BROWSER_CONFIG.args, '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage'], }; // Handle headless mode based on Puppeteer version if (puppeteerVersion && parseInt(puppeteerVersion.split('.')[0]) >= 19) { // For Puppeteer v19+, use 'new' for headless mode options.headless = DEFAULT_BROWSER_CONFIG.headless ? 'new' : false; } else { // For older versions, use boolean options.headless = DEFAULT_BROWSER_CONFIG.headless; } console.error('Launching browser with options:', options); this.browser = await puppeteer.launch(options); console.error('Browser launched successfully'); return this.browser; } catch (error) { console.error('Browser initialization error:', error); throw error; } } /** * Check if a URL is valid */ isValidUrl(url: string): boolean { try { new URL(url); return true; } catch (e) { return false; } } /** * Close the browser instance */ async close(): Promise<void> { if (this.browser) { await this.browser.close(); this.browser = null; } } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wolfyy970/docs-fetch-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server