list-browsers
Discover active browser instances for Vite development. Filter by type or tags to manage connections and monitor usage during real-time code updates.
Instructions
Lists all active browser instances
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by browser type | |
| tags | No | Filter by tags | |
| includeStats | No | Include usage statistics (default: false) |
Implementation Reference
- Handler function that lists active browser instances, filters by type/tags, optionally includes stats, formats as JSON, and handles errors.async ({ type, tags, includeStats = false }) => { try { const browsers = contextManager.listContexts({ type: type as BrowserType | undefined, tags }); if (browsers.length === 0) { return { content: [ { type: 'text', text: 'No active browsers found' } ] }; } const browserInfo = browsers.map(browser => { const info: any = { id: browser.id, type: browser.type, displayName: browser.displayName, targetUrl: browser.metadata.targetUrl, tags: browser.metadata.tags, purpose: browser.metadata.purpose, createdAt: browser.createdAt, lastUsedAt: browser.lastUsedAt }; return info; }); let stats = null; if (includeStats) { stats = contextManager.getContextStats(); } const result = { totalBrowsers: browsers.length, browsers: browserInfo, ...(stats && { statistics: stats }) }; return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) } ] }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); Logger.error('Failed to list browsers:', error); return { content: [ { type: 'text', text: `Failed to list browsers: ${errorMessage}` } ], isError: true }; } }
- Zod input schema defining optional parameters: browser type filter, tags filter, and includeStats flag.{ type: z.enum(['chromium', 'firefox', 'webkit']).optional().describe('Filter by browser type'), tags: z.array(z.string()).optional().describe('Filter by tags'), includeStats: z.boolean().optional().describe('Include usage statistics (default: false)') },
- src/tools/browser-manager-tools.ts:96-170 (registration)Direct registration of the 'list-browsers' tool on the MCP server within the registerBrowserManagerTools function, including inline schema and handler.server.tool( 'list-browsers', 'Lists all active browser instances', { type: z.enum(['chromium', 'firefox', 'webkit']).optional().describe('Filter by browser type'), tags: z.array(z.string()).optional().describe('Filter by tags'), includeStats: z.boolean().optional().describe('Include usage statistics (default: false)') }, async ({ type, tags, includeStats = false }) => { try { const browsers = contextManager.listContexts({ type: type as BrowserType | undefined, tags }); if (browsers.length === 0) { return { content: [ { type: 'text', text: 'No active browsers found' } ] }; } const browserInfo = browsers.map(browser => { const info: any = { id: browser.id, type: browser.type, displayName: browser.displayName, targetUrl: browser.metadata.targetUrl, tags: browser.metadata.tags, purpose: browser.metadata.purpose, createdAt: browser.createdAt, lastUsedAt: browser.lastUsedAt }; return info; }); let stats = null; if (includeStats) { stats = contextManager.getContextStats(); } const result = { totalBrowsers: browsers.length, browsers: browserInfo, ...(stats && { statistics: stats }) }; return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) } ] }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); Logger.error('Failed to list browsers:', error); return { content: [ { type: 'text', text: `Failed to list browsers: ${errorMessage}` } ], isError: true }; } } );
- src/index.ts:82-82 (registration)Top-level call to registerBrowserManagerTools in main server initialization, which registers the 'list-browsers' tool among browser management tools.const contextManager = registerBrowserManagerTools(server);