Skip to main content
Glama

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
NameRequiredDescriptionDefault
typeNoFilter by browser type
tagsNoFilter by tags
includeStatsNoInclude 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)')
    },
  • 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);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ESnark/blowback'

If you have feedback or need assistance with the MCP directory API, please join our Discord server