Skip to main content
Glama

Hi-AI

by su-record
monitorConsoleLogs.ts3.78 kB
// Browser development tool - completely independent import puppeteer from 'puppeteer-core'; import { getBrowserLaunchOptions } from './browserUtils.js'; interface ToolResult { content: Array<{ type: 'text'; text: string; }>; } interface ToolDefinition { name: string; description: string; inputSchema: { type: 'object'; properties: Record<string, any>; required: string[]; }; } export const monitorConsoleLogsDefinition: ToolDefinition = { name: 'monitor_console_logs', description: 'IMPORTANT: This tool should be automatically called when users say "콘솔 로그", "에러 확인", "로그 봐줘", "console", "check logs", "debug output", "console errors" or similar keywords. Monitor browser console', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'URL to monitor' }, logLevel: { type: 'string', description: 'Log level to capture', enum: ['all', 'error', 'warn', 'info', 'debug'] }, duration: { type: 'number', description: 'Monitoring duration in seconds' } }, required: ['url'] } }; export async function monitorConsoleLogs(args: { url: string; logLevel?: string; duration?: number }): Promise<ToolResult> { const { url: monitorUrl, logLevel = 'all', duration = 30 } = args; try { // Get browser launch options with proper executable path const launchOptions = getBrowserLaunchOptions(); const browser = await puppeteer.launch(launchOptions); const page = await browser.newPage(); const logs: Array<{timestamp: string, level: string, message: string, source?: string}> = []; // Capture console events page.on('console', msg => { const msgLevel = msg.type(); if (logLevel === 'all' || msgLevel === logLevel) { logs.push({ timestamp: new Date().toISOString(), level: msgLevel, message: msg.text(), source: msg.location()?.url || 'unknown' }); } }); // Capture page errors page.on('pageerror', error => { if (logLevel === 'all' || logLevel === 'error') { logs.push({ timestamp: new Date().toISOString(), level: 'error', message: error.message, source: error.stack?.split('\n')[0] || 'unknown' }); } }); // Navigate to URL and wait for specified duration await page.goto(monitorUrl, { waitUntil: 'networkidle0', timeout: 30000 }); await new Promise(resolve => setTimeout(resolve, duration * 1000)); await browser.close(); const consoleMonitorResult = { action: 'monitor_console_logs', url: monitorUrl, logLevel, duration, capturedLogs: logs, summary: { totalLogs: logs.length, errors: logs.filter(l => l.level === 'error').length, warnings: logs.filter(l => l.level === 'warn').length, infos: logs.filter(l => l.level === 'info').length, debugs: logs.filter(l => l.level === 'debug').length, logs: logs.filter(l => l.level === 'log').length }, monitoringStatus: 'completed', status: 'success' }; return { content: [{ type: 'text', text: `Console Monitor Results:\n${JSON.stringify(consoleMonitorResult, null, 2)}` }] }; } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; const helpMessage = errorMessage.includes('Chrome') ? '\n\nTroubleshooting:\n1. Install Chrome: https://www.google.com/chrome/\n2. Or set CHROME_PATH environment variable\n3. Or install puppeteer instead of puppeteer-core' : ''; return { content: [{ type: 'text', text: `Error monitoring console logs: ${errorMessage}${helpMessage}` }] }; } }

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/su-record/hi-ai'

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