@eddym06/custom-chrome-mcp 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -700
- package/dist/tools/capture.js +1 -1
- package/dist/tools/capture.js.map +1 -1
- package/dist/tools/interaction.js +1 -1
- package/dist/tools/interaction.js.map +1 -1
- package/dist/verify_schema.d.ts +2 -0
- package/dist/verify_schema.d.ts.map +1 -0
- package/dist/verify_schema.js +65 -0
- package/dist/verify_schema.js.map +1 -0
- package/package.json +1 -1
- /package/{.npmrc.backup → .npmrc-github-backup} +0 -0
package/README.md
CHANGED
|
@@ -1,700 +1,92 @@
|
|
|
1
|
-
# Custom Chrome MCP
|
|
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
|
-
1.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
npm install @eddym06/custom-chrome-mcp
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Desde el código fuente
|
|
98
|
-
```bash
|
|
99
|
-
git clone https://github.com/Eddym06/devTools-Advance-mcp.git
|
|
100
|
-
cd custom-chrome-mcp
|
|
101
|
-
npm install
|
|
102
|
-
npm run build
|
|
103
|
-
```
|
|
104
|
-
npm install -g custom-chrome-mcp
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Desarrollo local
|
|
108
|
-
```bash
|
|
109
|
-
cd custom-chrome-mcp
|
|
110
|
-
npm install
|
|
111
|
-
npm run build
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## 🚀 Uso Rápido
|
|
115
|
-
|
|
116
|
-
### 1. Lanza Chrome con debugging habilitado
|
|
117
|
-
|
|
118
|
-
**Windows:**
|
|
119
|
-
```powershell
|
|
120
|
-
start chrome --remote-debugging-port=9222
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
**macOS:**
|
|
124
|
-
```bash
|
|
125
|
-
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 &
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**Linux:**
|
|
129
|
-
```bash
|
|
130
|
-
google-chrome --remote-debugging-port=9222 &
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### 2. Configura el MCP en VS Code
|
|
134
|
-
|
|
135
|
-
Agrega en tu `mcp.json` o configuración de Cline/Claude:
|
|
136
|
-
|
|
137
|
-
```json
|
|
138
|
-
{
|
|
139
|
-
"mcpServers": {
|
|
140
|
-
"custom-chrome-mcp": {
|
|
141
|
-
"command": "npx",
|
|
142
|
-
"args": ["custom-chrome-mcp", "--port=9222"]
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### 3. ¡Empieza a usar!
|
|
149
|
-
|
|
150
|
-
El MCP se conectará automáticamente a tu Chrome y tendrás acceso a **84 herramientas** organizadas en **15 categorías**.
|
|
151
|
-
|
|
152
|
-
## 🛠️ Herramientas Disponibles
|
|
153
|
-
|
|
154
|
-
### Navegación & Tabs (8 herramientas)
|
|
155
|
-
- `navigate` - Navegar a URL
|
|
156
|
-
- `go_back` / `go_forward` - Historial
|
|
157
|
-
- `reload` - Recargar página
|
|
158
|
-
- `list_tabs` - Listar pestañas
|
|
159
|
-
- `create_tab` - Crear pestaña
|
|
160
|
-
- `close_tab` - Cerrar pestaña
|
|
161
|
-
- `switch_tab` - Cambiar de pestaña
|
|
162
|
-
- `get_url` - Obtener URL actual
|
|
163
|
-
|
|
164
|
-
### Interacción con Página (8 herramientas)
|
|
165
|
-
- `click` - Hacer click en elemento
|
|
166
|
-
- `type` - Escribir texto
|
|
167
|
-
- `get_text` - Obtener texto
|
|
168
|
-
- `get_attribute` - Obtener atributo
|
|
169
|
-
- `execute_script` - Ejecutar JavaScript
|
|
170
|
-
- `scroll` - Hacer scroll
|
|
171
|
-
- `wait_for_selector` - Esperar elemento
|
|
172
|
-
- `select_option` - Seleccionar opción
|
|
173
|
-
|
|
174
|
-
### Anti-Detección (5 herramientas)
|
|
175
|
-
- `enable_stealth_mode` - Activar modo stealth
|
|
176
|
-
- `set_user_agent` - Cambiar user agent
|
|
177
|
-
- `set_viewport` - Configurar viewport
|
|
178
|
-
- `set_geolocation` - Configurar ubicación
|
|
179
|
-
- `set_timezone` - Configurar zona horaria
|
|
180
|
-
|
|
181
|
-
### Service Workers (9 herramientas)
|
|
182
|
-
- `list_service_workers` - Listar workers
|
|
183
|
-
- `get_service_worker` - Obtener detalles
|
|
184
|
-
- `unregister_service_worker` - Desregistrar
|
|
185
|
-
- `update_service_worker` - Actualizar
|
|
186
|
-
- `start_service_worker` - Iniciar
|
|
187
|
-
- `stop_service_worker` - Detener
|
|
188
|
-
- `inspect_service_worker` - Inspeccionar
|
|
189
|
-
- `skip_waiting` - Skip waiting
|
|
190
|
-
- `get_sw_caches` - Obtener cachés
|
|
191
|
-
|
|
192
|
-
### Captura (7 herramientas)
|
|
193
|
-
- `screenshot` - Captura de pantalla
|
|
194
|
-
- `get_html` - Obtener HTML
|
|
195
|
-
- `print_to_pdf` - Exportar a PDF
|
|
196
|
-
- `get_page_metrics` - Métricas de página
|
|
197
|
-
- `get_accessibility_tree` - Árbol a11y completo
|
|
198
|
-
- `get_accessibility_snapshot` - Snapshot Playwright-style
|
|
199
|
-
|
|
200
|
-
### Network Interception (8 herramientas)
|
|
201
|
-
- `enable_network_interception` - Activar interceptación de requests
|
|
202
|
-
- `list_intercepted_requests` - Listar requests interceptados
|
|
203
|
-
- `modify_intercepted_request` - Modificar request (headers, URL, body)
|
|
204
|
-
- `fail_intercepted_request` - Bloquear request (ads, tracking)
|
|
205
|
-
- `continue_intercepted_request` - Continuar sin modificar
|
|
206
|
-
- `disable_network_interception` - Desactivar interceptación
|
|
207
|
-
|
|
208
|
-
### Network Response Interception (4 herramientas)
|
|
209
|
-
- `enable_response_interception` - Activar interceptación de respuestas
|
|
210
|
-
- `list_intercepted_responses` - Listar respuestas interceptadas
|
|
211
|
-
- `modify_intercepted_response` - Modificar respuesta (body, headers, status)
|
|
212
|
-
- `disable_response_interception` - Desactivar interceptación
|
|
213
|
-
|
|
214
|
-
### Request/Response Mocking (4 herramientas)
|
|
215
|
-
- `create_mock_endpoint` - Crear endpoint falso (mock API responses)
|
|
216
|
-
- `list_mock_endpoints` - Listar mocks activos
|
|
217
|
-
- `delete_mock_endpoint` - Eliminar mock específico
|
|
218
|
-
- `clear_all_mocks` - Limpiar todos los mocks
|
|
219
|
-
|
|
220
|
-
### WebSocket Interception (5 herramientas)
|
|
221
|
-
- `enable_websocket_interception` - Activar interceptación de WebSockets
|
|
222
|
-
- `list_websocket_connections` - Listar conexiones WS activas
|
|
223
|
-
- `list_websocket_messages` - Ver mensajes WS (sent/received)
|
|
224
|
-
- `send_websocket_message` - Inyectar mensaje en WebSocket
|
|
225
|
-
- `disable_websocket_interception` - Desactivar interceptación WS
|
|
226
|
-
|
|
227
|
-
### HAR Recording & Replay (3 herramientas)
|
|
228
|
-
- `start_har_recording` - Iniciar grabación HAR (HTTP Archive)
|
|
229
|
-
- `stop_har_recording` - Detener y obtener HAR data
|
|
230
|
-
- `export_har_file` - Exportar HAR a archivo .har
|
|
231
|
-
|
|
232
|
-
### Advanced Request Patterns (1 herramienta)
|
|
233
|
-
- `add_advanced_interception_pattern` - Patrón avanzado (status code, size, duration, content-type, action)
|
|
234
|
-
|
|
235
|
-
### CSS/JS Injection Pipeline (5 herramientas)
|
|
236
|
-
- `inject_css_global` - Inyectar CSS en todas las páginas
|
|
237
|
-
- `inject_js_global` - Inyectar JavaScript en todas las páginas
|
|
238
|
-
- `list_injected_scripts` - Listar inyecciones activas
|
|
239
|
-
- `remove_injection` - Remover inyección específica
|
|
240
|
-
- `clear_all_injections` - Limpiar todas las inyecciones
|
|
241
|
-
|
|
242
|
-
### Sesiones & Cookies (9 herramientas)
|
|
243
|
-
- `get_cookies` - Obtener cookies
|
|
244
|
-
- `set_cookie` - Establecer cookie
|
|
245
|
-
- `delete_cookie` - Eliminar cookie
|
|
246
|
-
- `clear_cookies` - Limpiar cookies
|
|
247
|
-
- `get_local_storage` - Obtener localStorage
|
|
248
|
-
- `set_local_storage` - Establecer item
|
|
249
|
-
- `clear_local_storage` - Limpiar storage
|
|
250
|
-
- `export_session` - Exportar sesión
|
|
251
|
-
- `import_session` - Importar sesión
|
|
252
|
-
|
|
253
|
-
## 💡 Ejemplos de Uso
|
|
254
|
-
|
|
255
|
-
### Ejemplo 1: Navegar y hacer screenshot
|
|
256
|
-
```typescript
|
|
257
|
-
// Navegar a una URL
|
|
258
|
-
await mcp.call('navigate', { url: 'https://example.com' });
|
|
259
|
-
|
|
260
|
-
// Esperar que cargue un elemento
|
|
261
|
-
await mcp.call('wait_for_selector', { selector: '#content' });
|
|
262
|
-
|
|
263
|
-
// Tomar screenshot full page
|
|
264
|
-
await mcp.call('screenshot', { fullPage: true, format: 'png' });
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
### Ejemplo 2: Activar modo stealth y navegar
|
|
268
|
-
```typescript
|
|
269
|
-
// Activar modo stealth
|
|
270
|
-
await mcp.call('enable_stealth_mode', {});
|
|
271
|
-
|
|
272
|
-
// Navegar a Google
|
|
273
|
-
await mcp.call('navigate', { url: 'https://google.com' });
|
|
274
|
-
|
|
275
|
-
// Escribir en el buscador
|
|
276
|
-
await mcp.call('type', {
|
|
277
|
-
selector: 'input[name="q"]',
|
|
278
|
-
text: 'model context protocol'
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
// Hacer click en buscar
|
|
282
|
-
await mcp.call('click', { selector: 'input[type="submit"]' });
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
### Ejemplo 3: Exportar sesión
|
|
286
|
-
```typescript
|
|
287
|
-
// Exportar sesión actual (cookies, localStorage, etc.)
|
|
288
|
-
const result = await mcp.call('export_session', {});
|
|
289
|
-
console.log(result.session);
|
|
290
|
-
|
|
291
|
-
// Guardar en archivo
|
|
292
|
-
fs.writeFileSync('session.json', JSON.stringify(result.session));
|
|
293
|
-
|
|
294
|
-
// Importar en otra sesión
|
|
295
|
-
const sessionData = fs.readFileSync('session.json', 'utf8');
|
|
296
|
-
await mcp.call('import_session', { sessionData });
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
### Ejemplo 4: Gestionar Service Workers
|
|
300
|
-
```typescript
|
|
301
|
-
// Listar todos los service workers
|
|
302
|
-
const workers = await mcp.call('list_service_workers', {});
|
|
303
|
-
console.log(workers);
|
|
304
|
-
|
|
305
|
-
// Actualizar un service worker
|
|
306
|
-
await mcp.call('update_service_worker', {
|
|
307
|
-
scopeURL: 'https://example.com/'
|
|
308
|
-
});
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### Ejemplo 5: Interceptar y modificar requests
|
|
312
|
-
```typescript
|
|
313
|
-
// Activar interceptación para archivos JS y CSS
|
|
314
|
-
await mcp.call('enable_network_interception', {
|
|
315
|
-
patterns: ['*.js', '*.css', '*analytics*']
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
// Listar requests interceptados
|
|
319
|
-
const intercepted = await mcp.call('list_intercepted_requests', {});
|
|
320
|
-
console.log('Intercepted:', intercepted.interceptedRequests);
|
|
321
|
-
|
|
322
|
-
// Bloquear un request de analytics
|
|
323
|
-
await mcp.call('fail_intercepted_request', {
|
|
324
|
-
requestId: 'some-request-id',
|
|
325
|
-
errorReason: 'BlockedByClient'
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
// Modificar headers de un request
|
|
329
|
-
await mcp.call('modify_intercepted_request', {
|
|
330
|
-
requestId: 'another-request-id',
|
|
331
|
-
modifiedHeaders: {
|
|
332
|
-
'User-Agent': 'Custom Agent',
|
|
333
|
-
'X-Custom-Header': 'Value'
|
|
334
|
-
}
|
|
335
|
-
});
|
|
336
|
-
|
|
337
|
-
// Desactivar cuando termines
|
|
338
|
-
await mcp.call('disable_network_interception', {});
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### Ejemplo 6: Obtener árbol de accesibilidad
|
|
342
|
-
```typescript
|
|
343
|
-
// Obtener snapshot estilo Playwright (fácil de leer)
|
|
344
|
-
const snapshot = await mcp.call('get_accessibility_snapshot', {
|
|
345
|
-
interestingOnly: true // Solo botones, links, inputs, etc.
|
|
346
|
-
});
|
|
347
|
-
console.log(snapshot.snapshot);
|
|
348
|
-
|
|
349
|
-
// Obtener árbol completo (más detallado)
|
|
350
|
-
const fullTree = await mcp.call('get_accessibility_tree', {
|
|
351
|
-
depth: 5, // Profundidad máxima
|
|
352
|
-
includeIgnored: false
|
|
353
|
-
});
|
|
354
|
-
console.log(`Total nodes: ${fullTree.totalNodes}`);
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
### Ejemplo 7: Interceptar y modificar respuestas
|
|
358
|
-
```typescript
|
|
359
|
-
// Activar interceptación de RESPUESTAS (no solo requests)
|
|
360
|
-
// timeoutMs: La IA puede aumentarlo si espera muchas requests
|
|
361
|
-
await mcp.call('enable_response_interception', {
|
|
362
|
-
patterns: ['*api.example.com/*'],
|
|
363
|
-
resourceTypes: ['XHR', 'Fetch'],
|
|
364
|
-
timeoutMs: 15000 // 15s para APIs lentas
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
// Esperar a que se intercepte una respuesta
|
|
368
|
-
const responses = await mcp.call('list_intercepted_responses', {});
|
|
369
|
-
console.log('Intercepted responses:', responses.interceptedResponses);
|
|
370
|
-
|
|
371
|
-
// Modificar el body de una respuesta JSON
|
|
372
|
-
await mcp.call('modify_intercepted_response', {
|
|
373
|
-
requestId: 'response-id',
|
|
374
|
-
modifiedBody: JSON.stringify({ modified: true, data: [1, 2, 3] }),
|
|
375
|
-
modifiedStatusCode: 200,
|
|
376
|
-
modifiedHeaders: {
|
|
377
|
-
'Content-Type': 'application/json',
|
|
378
|
-
'X-Modified': 'true'
|
|
379
|
-
},
|
|
380
|
-
timeoutMs: 20000 // 20s para respuestas grandes
|
|
381
|
-
});
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
### Ejemplo 8: Mock API endpoints
|
|
385
|
-
```typescript
|
|
386
|
-
// Crear un mock endpoint para API
|
|
387
|
-
// timeoutMs: Para endpoints complejos con lógica pesada
|
|
388
|
-
await mcp.call('create_mock_endpoint', {
|
|
389
|
-
urlPattern: '*api.example.com/users*',
|
|
390
|
-
responseBody: JSON.stringify([
|
|
391
|
-
{ id: 1, name: 'John Doe', email: 'john@example.com' },
|
|
392
|
-
{ id: 2, name: 'Jane Smith', email: 'jane@example.com' }
|
|
393
|
-
]),
|
|
394
|
-
statusCode: 200,
|
|
395
|
-
headers: {
|
|
396
|
-
'Content-Type': 'application/json',
|
|
397
|
-
'X-Mock': 'true'
|
|
398
|
-
},
|
|
399
|
-
latency: 500, // Simular 500ms de latencia
|
|
400
|
-
method: 'GET',
|
|
401
|
-
timeoutMs: 12000 // 12s para registrar el mock
|
|
402
|
-
});
|
|
403
|
-
|
|
404
|
-
// Navegar y la API será interceptada automáticamente
|
|
405
|
-
await mcp.call('navigate', { url: 'https://example.com' });
|
|
406
|
-
|
|
407
|
-
// Ver estadísticas de mocks
|
|
408
|
-
const mocks = await mcp.call('list_mock_endpoints', {});
|
|
409
|
-
console.log('Active mocks:', mocks.mocks);
|
|
410
|
-
|
|
411
|
-
// Limpiar cuando termines
|
|
412
|
-
await mcp.call('clear_all_mocks', {});
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
### Ejemplo 9: WebSocket interception
|
|
416
|
-
```typescript
|
|
417
|
-
// Activar interceptación de WebSockets
|
|
418
|
-
await mcp.call('enable_websocket_interception', {
|
|
419
|
-
urlPattern: 'wss://example.com/socket'
|
|
420
|
-
});
|
|
421
|
-
|
|
422
|
-
// Listar conexiones WebSocket activas
|
|
423
|
-
const connections = await mcp.call('list_websocket_connections', {});
|
|
424
|
-
console.log('Active WebSockets:', connections.connections);
|
|
425
|
-
|
|
426
|
-
// Ver mensajes enviados y recibidos
|
|
427
|
-
const messages = await mcp.call('list_websocket_messages', {
|
|
428
|
-
direction: 'all',
|
|
429
|
-
limit: 50
|
|
430
|
-
});
|
|
431
|
-
console.log('WS Messages:', messages.messages);
|
|
432
|
-
|
|
433
|
-
// Inyectar un mensaje falso
|
|
434
|
-
await mcp.call('send_websocket_message', {
|
|
435
|
-
requestId: 'ws-connection-id',
|
|
436
|
-
message: JSON.stringify({ type: 'ping', timestamp: Date.now() })
|
|
437
|
-
});
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
### Ejemplo 10: HAR recording
|
|
441
|
-
```typescript
|
|
442
|
-
// Iniciar grabación de tráfico de red en formato HAR
|
|
443
|
-
await mcp.call('start_har_recording', {});
|
|
444
|
-
|
|
445
|
-
// Navegar y realizar acciones
|
|
446
|
-
await mcp.call('navigate', { url: 'https://example.com' });
|
|
447
|
-
await mcp.call('click', { selector: 'button.load-data' });
|
|
448
|
-
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
449
|
-
|
|
450
|
-
// Detener y obtener HAR data
|
|
451
|
-
const harData = await mcp.call('stop_har_recording', {});
|
|
452
|
-
console.log(`Captured ${harData.entriesCount} requests`);
|
|
453
|
-
|
|
454
|
-
// Exportar a archivo
|
|
455
|
-
// timeoutMs: Importante aumentarlo si el HAR es muy grande (>50MB)
|
|
456
|
-
await mcp.call('export_har_file', {
|
|
457
|
-
filename: 'recording.har',
|
|
458
|
-
outputDir: './recordings',
|
|
459
|
-
timeoutMs: 90000 // 90s para exportar HARs muy grandes
|
|
460
|
-
});
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### Ejemplo 11: Advanced request patterns
|
|
464
|
-
```typescript
|
|
465
|
-
// Crear patrón avanzado: bloquear imágenes grandes
|
|
466
|
-
await mcp.call('add_advanced_interception_pattern', {
|
|
467
|
-
name: 'block-large-images',
|
|
468
|
-
resourceType: 'Image',
|
|
469
|
-
minSize: 500000, // > 500KB
|
|
470
|
-
action: 'block'
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
// Crear patrón: delay requests lentos
|
|
474
|
-
await mcp.call('add_advanced_interception_pattern', {
|
|
475
|
-
name: 'delay-slow-apis',
|
|
476
|
-
urlPattern: '*slow-api.com/*',
|
|
477
|
-
statusCodeMin: 200,
|
|
478
|
-
statusCodeMax: 299,
|
|
479
|
-
action: 'delay',
|
|
480
|
-
delayMs: 2000
|
|
481
|
-
});
|
|
482
|
-
|
|
483
|
-
// Patrón: log requests específicos
|
|
484
|
-
await mcp.call('add_advanced_interception_pattern', {
|
|
485
|
-
name: 'log-analytics',
|
|
486
|
-
urlPattern: '*analytics*',
|
|
487
|
-
method: 'POST',
|
|
488
|
-
action: 'log'
|
|
489
|
-
});
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
### Ejemplo 12: CSS/JS injection pipeline
|
|
493
|
-
```typescript
|
|
494
|
-
// Inyectar CSS globalmente (se aplica a TODAS las páginas)
|
|
495
|
-
// timeoutMs: Aumentar si el CSS es muy grande o complejo
|
|
496
|
-
await mcp.call('inject_css_global', {
|
|
497
|
-
css: `
|
|
498
|
-
body {
|
|
499
|
-
background-color: #f0f0f0 !important;
|
|
500
|
-
}
|
|
501
|
-
.ad-banner {
|
|
502
|
-
display: none !important;
|
|
503
|
-
}
|
|
504
|
-
`,
|
|
505
|
-
name: 'dark-mode-and-no-ads',
|
|
506
|
-
timeoutMs: 8000 // 8s para CSS pequeño
|
|
507
|
-
});
|
|
508
|
-
|
|
509
|
-
// Inyectar JavaScript que se ejecuta ANTES de cualquier script de la página
|
|
510
|
-
// timeoutMs: Critical para JS complejos con validación de sintaxis
|
|
511
|
-
await mcp.call('inject_js_global', {
|
|
512
|
-
javascript: `
|
|
513
|
-
// Interceptar fetch para logging
|
|
514
|
-
const originalFetch = window.fetch;
|
|
515
|
-
window.fetch = function(...args) {
|
|
516
|
-
console.log('Fetch intercepted:', args[0]);
|
|
517
|
-
return originalFetch.apply(this, args);
|
|
518
|
-
};
|
|
519
|
-
|
|
520
|
-
// Agregar funciones helper globales
|
|
521
|
-
window.myCustomHelper = function() {
|
|
522
|
-
console.log('Helper function available globally!');
|
|
523
|
-
};
|
|
524
|
-
`,
|
|
525
|
-
name: 'fetch-interceptor',
|
|
526
|
-
runImmediately: true,
|
|
527
|
-
timeoutMs: 18000 // 18s para JS complejo con validación
|
|
528
|
-
});
|
|
529
|
-
|
|
530
|
-
// Listar inyecciones activas
|
|
531
|
-
const injections = await mcp.call('list_injected_scripts', {});
|
|
532
|
-
console.log('Active injections:', injections.injections);
|
|
533
|
-
|
|
534
|
-
// Remover una inyección específica
|
|
535
|
-
await mcp.call('remove_injection', {
|
|
536
|
-
identifier: 'injection-id-here'
|
|
537
|
-
});
|
|
538
|
-
|
|
539
|
-
// O limpiar todas
|
|
540
|
-
await mcp.call('clear_all_injections', {});
|
|
541
|
-
```
|
|
542
|
-
const workers = await mcp.call('list_service_workers', {});
|
|
543
|
-
console.log(workers.workers);
|
|
544
|
-
|
|
545
|
-
// Actualizar un service worker específico
|
|
546
|
-
await mcp.call('update_service_worker', {
|
|
547
|
-
scopeURL: 'https://example.com/'
|
|
548
|
-
});
|
|
549
|
-
|
|
550
|
-
// Ver cachés
|
|
551
|
-
const caches = await mcp.call('get_sw_caches', {});
|
|
552
|
-
console.log(caches.caches);
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
## 🔧 Configuración Avanzada
|
|
556
|
-
|
|
557
|
-
### Puerto personalizado
|
|
558
|
-
```json
|
|
559
|
-
{
|
|
560
|
-
"custom-chrome-mcp": {
|
|
561
|
-
"command": "npx",
|
|
562
|
-
"args": ["custom-chrome-mcp", "--port=9333"]
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
### Variables de entorno
|
|
568
|
-
Puedes configurar:
|
|
569
|
-
- `CHROME_PORT` - Puerto de debugging (default: 9222)
|
|
570
|
-
|
|
571
|
-
## 🎯 Ventajas sobre otros MCPs
|
|
572
|
-
|
|
573
|
-
| Característica | Custom Chrome MCP | chrome-devtools-mcp | playwright-mcp |
|
|
574
|
-
|----------------|-------------------|---------------------|----------------|
|
|
575
|
-
| Conecta a Chrome existente | ✅ | ❌ | ❌ |
|
|
576
|
-
| Usa sesiones reales | ✅ | ❌ | ❌ |
|
|
577
|
-
| Anti-detección | ✅ | ❌ | ⚠️ |
|
|
578
|
-
| Service Workers | ✅ | ⚠️ | ⚠️ |
|
|
579
|
-
| Exportar/importar sesiones | ✅ | ❌ | ❌ |
|
|
580
|
-
| Response Interception | ✅ | ❌ | ⚠️ |
|
|
581
|
-
| API Mocking | ✅ | ❌ | ⚠️ |
|
|
582
|
-
| WebSocket Interception | ✅ | ❌ | ❌ |
|
|
583
|
-
| HAR Recording | ✅ | ❌ | ⚠️ |
|
|
584
|
-
| CSS/JS Injection | ✅ | ❌ | ⚠️ |
|
|
585
|
-
| Delays human-like | ✅ | ❌ | ⚠️ |
|
|
586
|
-
| Multi-tab | ✅ | ✅ | ✅ |
|
|
587
|
-
| Screenshots | ✅ | ✅ | ✅ |
|
|
588
|
-
| Total herramientas | **84** | ~20 | ~30 |
|
|
589
|
-
|
|
590
|
-
## 🐛 Troubleshooting
|
|
591
|
-
|
|
592
|
-
### Error: Failed to connect to Chrome
|
|
593
|
-
**Solución:** Asegúrate de que Chrome está corriendo con `--remote-debugging-port=9222`
|
|
594
|
-
|
|
595
|
-
```powershell
|
|
596
|
-
# Verifica que el puerto está abierto
|
|
597
|
-
netstat -an | findstr 9222
|
|
598
|
-
```
|
|
599
|
-
|
|
600
|
-
### Chrome detecta automatización
|
|
601
|
-
**Solución:** Usa `enable_stealth_mode` antes de navegar a sitios sensibles
|
|
602
|
-
|
|
603
|
-
```typescript
|
|
604
|
-
await mcp.call('enable_stealth_mode', {});
|
|
605
|
-
```
|
|
606
|
-
|
|
607
|
-
### Service Workers no aparecen
|
|
608
|
-
**Solución:** Los Service Workers solo funcionan con HTTPS o localhost. Usa un servidor local:
|
|
609
|
-
|
|
610
|
-
```bash
|
|
611
|
-
python -m http.server 8000
|
|
612
|
-
# Luego navega a http://localhost:8000
|
|
613
|
-
```
|
|
614
|
-
|
|
615
|
-
## 📝 Desarrollo
|
|
616
|
-
|
|
617
|
-
### Estructura del proyecto
|
|
618
|
-
```
|
|
619
|
-
custom-chrome-mcp/
|
|
620
|
-
├── src/
|
|
621
|
-
│ ├── index.ts # Servidor MCP principal
|
|
622
|
-
│ ├── chrome-connector.ts # Conexión a Chrome
|
|
623
|
-
│ ├── tools/
|
|
624
|
-
│ │ ├── navigation.ts # Navegación
|
|
625
|
-
│ │ ├── interaction.ts # Interacción
|
|
626
|
-
│ │ ├── anti-detection.ts # Anti-detección
|
|
627
|
-
│ │ ├── service-worker.ts # Service Workers
|
|
628
|
-
│ │ ├── capture.ts # Capturas
|
|
629
|
-
│ │ └── session.ts # Sesiones
|
|
630
|
-
│ ├── utils/
|
|
631
|
-
│ │ └── helpers.ts # Utilidades
|
|
632
|
-
│ └── types/
|
|
633
|
-
│ └── index.ts # Tipos TypeScript
|
|
634
|
-
├── package.json
|
|
635
|
-
└── tsconfig.json
|
|
636
|
-
```
|
|
637
|
-
|
|
638
|
-
### Comandos
|
|
639
|
-
```bash
|
|
640
|
-
npm run build # Compilar TypeScript
|
|
641
|
-
npm run dev # Modo desarrollo (watch)
|
|
642
|
-
npm run lint # Lint código
|
|
643
|
-
npm run format # Formatear código
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
### Añadir nuevas herramientas
|
|
647
|
-
|
|
648
|
-
1. Crea un nuevo archivo en `src/tools/`
|
|
649
|
-
2. Define tus herramientas usando el patrón:
|
|
650
|
-
|
|
651
|
-
```typescript
|
|
652
|
-
export function createMyTools(connector: ChromeConnector) {
|
|
653
|
-
return [
|
|
654
|
-
{
|
|
655
|
-
name: 'my_tool',
|
|
656
|
-
description: 'Descripción de la herramienta',
|
|
657
|
-
inputSchema: z.object({
|
|
658
|
-
param: z.string().describe('Parámetro')
|
|
659
|
-
}),
|
|
660
|
-
handler: async ({ param }: any) => {
|
|
661
|
-
// Implementación
|
|
662
|
-
return { success: true };
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
];
|
|
666
|
-
}
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
3. Importa y añade en [index.ts](src/index.ts)
|
|
670
|
-
|
|
671
|
-
## 📄 Licencia
|
|
672
|
-
|
|
673
|
-
MIT © 2026 Eddy M
|
|
674
|
-
|
|
675
|
-
## 🤝 Contribuciones
|
|
676
|
-
|
|
677
|
-
¡Las contribuciones son bienvenidas! Por favor:
|
|
678
|
-
|
|
679
|
-
1. Fork el proyecto
|
|
680
|
-
2. Crea una rama para tu feature (`git checkout -b feature/amazing-feature`)
|
|
681
|
-
3. Commit tus cambios (`git commit -m 'Add amazing feature'`)
|
|
682
|
-
4. Push a la rama (`git push origin feature/amazing-feature`)
|
|
683
|
-
5. Abre un Pull Request
|
|
684
|
-
|
|
685
|
-
## 🙏 Agradecimientos
|
|
686
|
-
|
|
687
|
-
- [Model Context Protocol](https://modelcontextprotocol.io/) - El protocolo que hace esto posible
|
|
688
|
-
- [chrome-remote-interface](https://github.com/cyrus-and/chrome-remote-interface) - Cliente CDP para Node.js
|
|
689
|
-
- La comunidad de Chrome DevTools
|
|
690
|
-
|
|
691
|
-
## 📧 Soporte
|
|
692
|
-
|
|
693
|
-
Si encuentras algún problema o tienes preguntas:
|
|
694
|
-
- Abre un issue en GitHub
|
|
695
|
-
- Consulta la documentación de MCP
|
|
696
|
-
- Revisa los ejemplos en este README
|
|
697
|
-
|
|
698
|
-
---
|
|
699
|
-
|
|
700
|
-
**Hecho con ❤️ para automatizar Chrome de forma inteligente**
|
|
1
|
+
# Custom Chrome MCP Server
|
|
2
|
+
|
|
3
|
+
**Tu puente inteligente entre la IA y el Navegador.**
|
|
4
|
+
|
|
5
|
+
Este servidor MCP (Model Context Protocol) permite a asistentes como Claude, Roo Code o Windsurf interactuar con Google Chrome de una manera **natural y potente**. A diferencia de otras herramientas de automatizaci�n, esta soluci�n se conecta a tu navegador real, permiti�ndote usar tus sesiones iniciadas, cookies y extensiones sin ser detectado.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## �Por qu� usar esto?
|
|
10
|
+
|
|
11
|
+
* ** Navegaci�n "Humana":** Usa tu perfil de Chrome real. Si ya est�s logueado en LinkedIn, Gmail o tu ERP corporativo, la IA tambi�n lo estar�.
|
|
12
|
+
* ** Indetectable:** Tecnolog�as avanzadas de anti-detecci�n y "Shadow Profile" para evitar bloqueos en sitios complejos.
|
|
13
|
+
* ** Herramientas Robustas:** M�s de 40 herramientas optimizadas para extracci�n de datos (scraping), automatizaci�n de formularios y an�lisis visual.
|
|
14
|
+
* ** R�pido y Seguro:** Ejecuta scripts y capturas de pantalla de manera segura, truncando salidas gigantes para no saturar a la IA.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Instalaci�n R�pida
|
|
19
|
+
|
|
20
|
+
### Para Usuarios (VS Code / Roo Code / Claude Desktop)
|
|
21
|
+
|
|
22
|
+
Simplemente agrega esto a tu configuraci�n de `mcpServers` (archivo `mcp.json`):
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"mcpServers": {
|
|
27
|
+
"custom-chrome-mcp": {
|
|
28
|
+
"command": "npx",
|
|
29
|
+
"args": ["-y", "@eddym06/custom-chrome-mcp", "--port=9223"]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
�Y listo! Al reiniciar tu asistente, tendr�s acceso a herramientas como `launch_chrome_with_profile`, `get_html`, `click`, `type`, etc.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Gu�a de Uso Simplificada
|
|
40
|
+
|
|
41
|
+
### 1. Iniciar el Navegador
|
|
42
|
+
La primera vez, pide a la IA:
|
|
43
|
+
> *"Lanza Chrome con mi perfil por default"*
|
|
44
|
+
|
|
45
|
+
Esto usar� la herramienta `launch_chrome_with_profile` para abrir una ventana de Chrome controlable sin cerrar tus otras ventanas.
|
|
46
|
+
|
|
47
|
+
### 2. Navegar y Analizar
|
|
48
|
+
Puedes pedir cosas como:
|
|
49
|
+
* *"Ve a amazon.com y busca laptops"*
|
|
50
|
+
* *"Analiza el HTML de esta p�gina"* (Usa `get_html` optimizado)
|
|
51
|
+
* *"Toma una captura de pantalla"*
|
|
52
|
+
|
|
53
|
+
### 3. Interactuar
|
|
54
|
+
La IA puede hacer clic, escribir y rellenar formularios por ti de manera inteligente, esperando a que los elementos carguen.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Herramientas Destacadas
|
|
59
|
+
|
|
60
|
+
| Categor�a | Herramientas Clave | Descripci�n |
|
|
61
|
+
|-----------|-------------------|-------------|
|
|
62
|
+
| **Navegaci�n** | `browser_action`, `manage_tabs` | Control total de pesta�as, recargas y movimiento. |
|
|
63
|
+
| **An�lisis** | `get_html`, `screenshot`, `get_page_metrics` | Ve lo que ve el usuario. `get_html` incluye selectores inteligentes. |
|
|
64
|
+
| **Interacci�n** | `perform_interaction`, `execute_script` | Clics, escritura y ejecuci�n de JS seguro. |
|
|
65
|
+
| **Red** | `capture_network`, `resend_request` | (Avanzado) Analiza tr�fico y repite peticiones API. |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Preguntas Frecuentes
|
|
70
|
+
|
|
71
|
+
**�Necesito cerrar mi Chrome?**
|
|
72
|
+
No. Gracias a la tecnolog�a "Shadow Profile", el servidor crea una copia segura de tu perfil temporalmente. Puedes seguir usando tu Chrome normal mientras la IA trabaja en paralelo.
|
|
73
|
+
|
|
74
|
+
**�Funciona en Mac y Linux?**
|
|
75
|
+
�S�! El sistema es totalmente multiplataforma.
|
|
76
|
+
|
|
77
|
+
**Me aparece "Tool disabled by user"**
|
|
78
|
+
Esto es un tema de seguridad de tu editor (VS Code). Generalmente se soluciona reiniciando la ventana (`Ctrl+R`) y aprobando los nuevos permisos cuando la IA intenta usar una herramienta.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Para Desarrolladores
|
|
83
|
+
|
|
84
|
+
Si quieres contribuir o correrlo localmente:
|
|
85
|
+
|
|
86
|
+
1. Clona el repositorio.
|
|
87
|
+
2. Instala dependencias: `npm install`
|
|
88
|
+
3. Construye: `npm run build`
|
|
89
|
+
4. Inicia: `npm start`
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
*Desarrollado con por @eddym06*
|
package/dist/tools/capture.js
CHANGED
|
@@ -101,7 +101,7 @@ export function createCaptureTools(connector) {
|
|
|
101
101
|
// Get page HTML
|
|
102
102
|
{
|
|
103
103
|
name: 'get_html',
|
|
104
|
-
description: '🔍 CRITICAL ANALYSIS TOOL - extracts
|
|
104
|
+
description: '🔍 CRITICAL ANALYSIS TOOL - extracts HTML source. OUTPUT TRUNCATED at 50k chars - use specific selector for large pages. WORKFLOW: 1️⃣ navigate → 2️⃣ get_html (analyze) → 3️⃣ interact. returns: IDs, classes, text. Essential for scraping & selector verification.',
|
|
105
105
|
inputSchema: z.object({
|
|
106
106
|
selector: z.string().optional().describe('CSS selector to extract HTML from (e.g. "div.main-content", "#login-form"). If omitted, returns full page HTML.'),
|
|
107
107
|
tabId: z.string().optional().describe('Tab ID (optional)'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/tools/capture.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/tools/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -174,7 +174,7 @@ export function createInteractionTools(connector) {
|
|
|
174
174
|
// Execute JavaScript (Kept separate as it's a "Catch-all" for advanced usage)
|
|
175
175
|
{
|
|
176
176
|
name: 'execute_script',
|
|
177
|
-
description: '⚠️ Execute JavaScript in page.
|
|
177
|
+
description: '⚠️ Execute JavaScript in page. IMPORTANT: You MUST use "return" to get results. FOR ASYNC: Set awaitPromise=true. WARNING: Do NOT use fetch() for traffic replay (use resend_network_request). BEST PRACTICES: Use for complex DOM/events only.',
|
|
178
178
|
inputSchema: z.object({
|
|
179
179
|
script: z.string().describe('JavaScript code to execute. MUST include "return" statement.'),
|
|
180
180
|
tabId: z.string().optional().describe('Tab ID (optional)'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/tools/interaction.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/tools/interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_schema.d.ts","sourceRoot":"","sources":["../src/verify_schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createCaptureTools } from './tools/capture.js';
|
|
3
|
+
import { createInteractionTools } from './tools/interaction.js';
|
|
4
|
+
// Mock ChromeConnector
|
|
5
|
+
const mockConnector = {
|
|
6
|
+
verifyConnection: async () => { },
|
|
7
|
+
getTabClient: async () => ({
|
|
8
|
+
Page: { enable: async () => { }, captureScreenshot: async () => ({ data: 'test' }) },
|
|
9
|
+
Runtime: { enable: async () => { }, evaluate: async () => ({ result: { value: 'test' } }) }
|
|
10
|
+
})
|
|
11
|
+
};
|
|
12
|
+
async function testTools() {
|
|
13
|
+
console.log('Testing tool creation...');
|
|
14
|
+
try {
|
|
15
|
+
const captureTools = createCaptureTools(mockConnector);
|
|
16
|
+
const interactionTools = createInteractionTools(mockConnector);
|
|
17
|
+
const allTools = [...captureTools, ...interactionTools];
|
|
18
|
+
console.log(`Successfully created ${allTools.length} tools.`);
|
|
19
|
+
for (const tool of allTools) {
|
|
20
|
+
console.log(`Validating tool: ${tool.name}`);
|
|
21
|
+
// 1. Check if inputSchema is a Zod schema
|
|
22
|
+
if (!(tool.inputSchema instanceof z.ZodType)) {
|
|
23
|
+
console.error(`ERROR: Tool ${tool.name} has invalid inputSchema type`);
|
|
24
|
+
}
|
|
25
|
+
// 2. Try to parse a mock object (empty or with basic props) to see if it throws unexpected errors
|
|
26
|
+
// Note: validation errors are expected if required fields are missing, but we checking for "parse is not a function" type errors.
|
|
27
|
+
try {
|
|
28
|
+
const shape = tool.inputSchema.shape;
|
|
29
|
+
// Construct minimal valid input
|
|
30
|
+
const input = {};
|
|
31
|
+
for (const key in shape) {
|
|
32
|
+
if (tool.name === 'perform_interaction' && key === 'action')
|
|
33
|
+
input[key] = 'wait';
|
|
34
|
+
else if (tool.name === 'perform_interaction' && key === 'selector')
|
|
35
|
+
input[key] = 'body';
|
|
36
|
+
else if (tool.name === 'extract_element_data' && key === 'action')
|
|
37
|
+
input[key] = 'text';
|
|
38
|
+
else if (tool.name === 'extract_element_data' && key === 'selector')
|
|
39
|
+
input[key] = 'body';
|
|
40
|
+
else if (tool.name === 'execute_script' && key === 'script')
|
|
41
|
+
input[key] = 'return 1;';
|
|
42
|
+
else if (tool.name === 'screenshot' && key === 'format')
|
|
43
|
+
input[key] = 'png';
|
|
44
|
+
}
|
|
45
|
+
tool.inputSchema.parse(input);
|
|
46
|
+
console.log(` - Schema check: OK`);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
// ZodError is fine (validation failed), but TypeErrors are bad.
|
|
50
|
+
if (e.constructor.name === 'ZodError') {
|
|
51
|
+
console.log(` - Schema check: OK (Validation active)`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.error(` - Schema check: FAILED (${e.message})`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
console.log('All tools validated successfully.');
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error('CRITICAL ERROR in tool creation:', error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
testTools();
|
|
65
|
+
//# sourceMappingURL=verify_schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify_schema.js","sourceRoot":"","sources":["../src/verify_schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eddym06/custom-chrome-mcp",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Cross-platform Chrome MCP with real-time request interception, response modification, network capture, HAR recording/replay, accessibility testing, anti-detection, and 91 tools. Includes smart workflows for common tasks. Works on Windows, Mac, and Linux.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
File without changes
|