Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/McpContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -343,11 +343,13 @@ export class McpContext implements Context {
}

async detectOpenDevToolsWindows() {
this.logger('Detecting open DevTools windows');
const pages = await this.browser.pages();
this.#pageToDevToolsPage = new Map<Page, Page>();
for (const devToolsPage of pages) {
if (devToolsPage.url().startsWith('devtools://')) {
try {
this.logger('Calling getTargetInfo for ' + devToolsPage.url());
const data = await devToolsPage
// @ts-expect-error no types for _client().
._client()
Expand Down
7 changes: 7 additions & 0 deletions src/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';

import {logger} from './logger.js';
import type {
Browser,
ChromeReleaseChannel,
Expand All @@ -29,6 +30,10 @@ function makeTargetFilter() {
if (target.url() === 'chrome://newtab/') {
return true;
}
if (target.url().startsWith('https://ogs.google.com/widget/app/so')) {
// Some special frame on the NTP that is not picked up by CDP-auto-attach.
return false;
}
for (const prefix of ignoredPrefixes) {
if (target.url().startsWith(prefix)) {
return false;
Expand Down Expand Up @@ -65,7 +70,9 @@ export async function ensureBrowserConnected(options: {
throw new Error('Either browserURL or wsEndpoint must be provided');
}

logger('Connecting Puppeteer to ', JSON.stringify(connectOptions));
browser = await puppeteer.connect(connectOptions);
logger('Connected Puppeteer');
return browser;
}

Expand Down
1 change: 1 addition & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ function registerTool(tool: ToolDefinition): void {
try {
logger(`${tool.name} request: ${JSON.stringify(params, null, ' ')}`);
const context = await getContext();
logger(`${tool.name} context: resolved`);
await context.detectOpenDevToolsWindows();
const response = new McpResponse();
await tool.handler(
Expand Down