Skip to content

Commit a1737ae

Browse files
committed
feat(mcp-server-browser): support enableAdBlocker option
1 parent ebbf4dc commit a1737ae

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

packages/agent-infra/mcp-servers/browser/src/server.ts

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,38 @@ import { parseProxyUrl } from './utils.js';
4747
const consoleLogs: string[] = [];
4848

4949
interface GlobalConfig {
50+
/**
51+
* Browser launch options
52+
*/
5053
launchOptions?: LaunchOptions;
54+
/**
55+
* Remote browser options
56+
*/
5157
remoteOptions?: RemoteBrowserOptions;
58+
/**
59+
* Custom logger
60+
*/
5261
logger?: Partial<Logger>;
62+
/**
63+
* Using a external browser instance.
64+
* @defaultValue true
65+
*/
5366
externalBrowser?: LocalBrowser;
67+
/**
68+
* Whether to enable ad blocker
69+
* @defaultValue true
70+
*/
71+
enableAdBlocker?: boolean;
5472
}
5573

5674
// Global state
5775
let globalConfig: GlobalConfig = {
5876
launchOptions: {
5977
headless: os.platform() === 'linux' && !process.env.DISPLAY,
6078
},
79+
enableAdBlocker: true,
6180
};
81+
6282
let globalBrowser: LocalBrowser['browser'] | undefined;
6383
let globalPage: Page | undefined;
6484
let selectorMap: Map<number, DOMElementNode> | undefined;
@@ -165,17 +185,19 @@ async function setInitialBrowser(
165185
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
166186
);
167187

168-
try {
169-
await Promise.race([
170-
PuppeteerBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) =>
171-
blocker.enableBlockingInPage(globalPage as any),
172-
),
173-
new Promise((_, reject) =>
174-
setTimeout(() => reject(new Error('Blocking In Page timeout')), 1000),
175-
),
176-
]);
177-
} catch (e) {
178-
logger.error('Error enabling adblocker:', e);
188+
if (globalConfig.enableAdBlocker) {
189+
try {
190+
await Promise.race([
191+
PuppeteerBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) =>
192+
blocker.enableBlockingInPage(globalPage as any),
193+
),
194+
new Promise((_, reject) =>
195+
setTimeout(() => reject(new Error('Blocking In Page timeout')), 1000),
196+
),
197+
]);
198+
} catch (e) {
199+
logger.error('Error enabling adblocker:', e);
200+
}
179201
}
180202

181203
// set proxy authentication
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
examples/workspace

packages/multimodal/agent-tars/src/agent-tars.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,8 @@ export class AgentTARS extends MCPAgent {
308308
baseUrl: this.tarsOptions.search!.baseUrl,
309309
}),
310310
browser: browserModule.default.createServer({
311-
externalBrowser: this.sharedBrowser, // Pass the shared browser instance
311+
externalBrowser: this.sharedBrowser,
312+
enableAdBlocker: false,
312313
launchOptions: {
313314
headless: this.tarsOptions.browser?.headless,
314315
},

0 commit comments

Comments
 (0)