@thestarware/chrome-console-mcp
Version:
MCP Server for Chrome/Edge console logs and network requests via browser extension
70 lines • 2.72 kB
JavaScript
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