-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmcp-browser-setup.js
More file actions
146 lines (121 loc) · 4.1 KB
/
Copy pathmcp-browser-setup.js
File metadata and controls
146 lines (121 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/usr/bin/env node
const { spawn } = require('child_process')
const path = require('path')
console.log('🚀 Iniciando MCP Browser Tools...')
// Configuração do MCP Server
const mcpConfig = {
name: 'browser-tools',
version: '1.0.0',
description: 'MCP Server para capturar erros do browser',
capabilities: {
browser: {
captureConsoleErrors: true,
captureNetworkErrors: true,
captureUnhandledRejections: true,
captureResourceErrors: true,
},
},
}
// Função para capturar erros do console
function captureConsoleErrors() {
console.log('📊 Configurando captura de erros do console...')
// Interceptar console.error
const originalError = console.error
console.error = function (...args) {
const errorData = {
type: 'console_error',
timestamp: new Date().toISOString(),
message: args.join(' '),
stack: new Error().stack,
}
// Enviar para o MCP server
process.send && process.send({ type: 'error', data: errorData })
// Chamar o console.error original
originalError.apply(console, args)
}
}
// Função para capturar erros não tratados
function captureUnhandledErrors() {
console.log('⚠️ Configurando captura de erros não tratados...')
process.on('uncaughtException', (error) => {
const errorData = {
type: 'uncaught_exception',
timestamp: new Date().toISOString(),
message: error.message,
stack: error.stack,
}
console.error('Erro não capturado:', errorData)
process.send && process.send({ type: 'error', data: errorData })
})
process.on('unhandledRejection', (reason, promise) => {
const errorData = {
type: 'unhandled_rejection',
timestamp: new Date().toISOString(),
message: reason.toString(),
stack: reason.stack || 'No stack trace available',
}
console.error('Promise rejeitada:', errorData)
process.send && process.send({ type: 'error', data: errorData })
})
}
// Função para iniciar o servidor MCP
function startMCPServer() {
console.log('🌐 Iniciando servidor MCP na porta 3001...')
const server = require('http').createServer((req, res) => {
if (req.method === 'POST' && req.url === '/errors') {
let body = ''
req.on('data', (chunk) => {
body += chunk.toString()
})
req.on('end', () => {
try {
const errorData = JSON.parse(body)
console.log('📝 Erro recebido:', errorData)
// Aqui você pode processar o erro (salvar em arquivo, enviar para API, etc.)
processError(errorData)
res.writeHead(200, { 'Content-Type': 'application/json' })
res.end(JSON.stringify({ status: 'received' }))
} catch (error) {
console.error('Erro ao processar dados:', error)
res.writeHead(400, { 'Content-Type': 'application/json' })
res.end(JSON.stringify({ error: 'Invalid JSON' }))
}
})
} else {
res.writeHead(404, { 'Content-Type': 'application/json' })
res.end(JSON.stringify({ error: 'Not found' }))
}
})
server.listen(3001, () => {
console.log('✅ Servidor MCP rodando em http://localhost:3001')
console.log('📡 Endpoint para erros: POST http://localhost:3001/errors')
})
}
// Função para processar erros
function processError(errorData) {
const timestamp = new Date().toISOString()
const logEntry = `[${timestamp}] ${errorData.type}: ${errorData.message}\n`
// Aqui você pode implementar diferentes estratégias de processamento:
// - Salvar em arquivo de log
// - Enviar para serviço de monitoramento
// - Notificar via webhook
// - etc.
console.log('🔍 Processando erro:', logEntry.trim())
}
// Função principal
function main() {
console.log('🎯 MCP Browser Tools iniciado!')
console.log('📋 Configuração:', JSON.stringify(mcpConfig, null, 2))
// Configurar captura de erros
captureConsoleErrors()
captureUnhandledErrors()
// Iniciar servidor MCP
startMCPServer()
// Manter o processo vivo
process.on('SIGINT', () => {
console.log('\n👋 Encerrando MCP Browser Tools...')
process.exit(0)
})
}
// Iniciar aplicação
main()