UNPKG

@thestarware/chrome-console-mcp

Version:

MCP Server for Chrome/Edge console logs and network requests via browser extension

70 lines 2.72 kB
import { createServer } from 'http'; // Simple HTTP server to receive console logs from the extension export class HttpLogBridge { server; port; consoleManager; // Filter configuration removed - filtering now handled by the panel constructor(consoleManager, port = 8765) { this.consoleManager = consoleManager; this.port = port; this.setupServer(); } setupServer() { this.server = createServer((req, res) => { // Set CORS headers for Chrome extension res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); if (req.method === 'OPTIONS') { res.writeHead(200); res.end(); return; } if (req.method === 'POST' && (req.url === '/console-log' || req.url === '/network-request')) { let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { try { const logData = JSON.parse(body); // Filtering is now handled by the panel - just store the pre-filtered logs this.consoleManager.addLog(logData); console.error(`Added ${logData.type}`); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ success: true })); } catch (error) { res.writeHead(400, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: 'Invalid JSON' })); } }); } else if (req.method === 'POST' && req.url === '/clear-logs') { this.consoleManager.clearLogs(); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ success: true, message: 'Logs cleared' })); } else { res.writeHead(404); res.end('Not found'); } }); } start() { this.server.listen(this.port, () => { console.error(`HTTP server listening on port ${this.port}`); }); } // Filter methods removed - filtering now handled by the panel getPort() { return this.port; } stop() { if (this.server) { this.server.close(); } } } //# sourceMappingURL=http-bridge.js.map