Skip to main content
Glama
ztobs

Browser Use Server

by ztobs

get_console_logs

Retrieve browser console logs from webpages to debug JavaScript errors, monitor network activity, and analyze client-side performance issues.

Instructions

Get the console logs of a webpage

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to
stepsNoComma-separated actions or sentences describing steps to take after page load (e.g., "click #submit, scroll down" or "Fill the login form and submit")

Implementation Reference

  • Main execution logic for get_console_logs: validates URL, runs AI agent for navigation and steps, injects JavaScript to override console methods and capture logs in window._consoleLogs, retrieves and returns the logs.
    elif command == 'get_console_logs':
        if not args.get('url'):
            return {
                'success': False,
                'error': 'URL is required for get_console_logs command'
            }
    
        console_messages = []
        def on_console_message(msg):
            console_messages.append(f"type: {msg.type}, text: {msg.text}, location: {msg.location}")
    
        task = f"1. Go to {args['url']}"
        if args.get('steps'):
            steps = args['steps'].split(',')
            for i, step in enumerate(steps, 2):
                task += f"\n{i}. {step.strip()}"
            task += f"\n{len(steps) + 2}. Get the console logs"
        else:
            task += f"\n2. Get the console logs"
        use_vision = os.getenv('USE_VISION', 'false').lower() == 'true'
        agent = Agent(task=task, llm=llm, use_vision=use_vision, browser_context=context)
        await agent.run()
    
        try:
            # Execute JavaScript to get console logs
            await context.execute_javascript("""
                window._consoleLogs = [];
                const originalConsole = window.console;
                ['log', 'info', 'warn', 'error'].forEach(level => {
                    window.console[level] = (...args) => {
                        window._consoleLogs.push({type: level, text: args.join(' ')});
                        originalConsole[level](...args);
                    };
                });
            """)
            
            # Wait a bit for any console logs to be captured
            await asyncio.sleep(1)
            
            # Get the captured logs
            logs = await context.execute_javascript("window._consoleLogs")
            return {
                'success': True,
                'logs': logs
            }
        finally:
            await context.close()
  • Defines the tool schema for 'get_console_logs', including input schema with required 'url' and optional 'steps'.
    {
      name: 'get_console_logs',
      description: 'Get the console logs of a webpage',
      inputSchema: {
        type: 'object',
        properties: {
          url: {
            type: 'string',
            description: 'The URL to navigate to',
          },
          steps: {
            type: 'string',
            description: 'Comma-separated actions or sentences describing steps to take after page load (e.g., "click #submit, scroll down" or "Fill the login form and submit")',
          },
        },
        required: ['url'],
      },
    },
  • src/index.ts:149-233 (registration)
    Registers the 'get_console_logs' tool (among others) in the MCP server's ListTools response, making it discoverable.
    this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: [
        {
          name: 'screenshot',
          description: 'Take a screenshot of a webpage',
          inputSchema: {
            type: 'object',
            properties: {
              url: {
                type: 'string',
                description: 'The URL to navigate to',
              },
              full_page: {
                type: 'boolean',
                description: 'Whether to capture the full page or just the viewport',
                default: false,
              },
              steps: {
                type: 'string',
                description: 'Comma-separated actions or sentences describing steps to take after page load (e.g., "click #submit, scroll down" or "Fill the login form and submit")',
              },
            },
            required: ['url'],
          },
        },
        {
          name: 'get_html',
          description: 'Get the HTML content of a webpage',
          inputSchema: {
            type: 'object',
            properties: {
              url: {
                type: 'string',
                description: 'The URL to navigate to',
              },
              steps: {
                type: 'string',
                description: 'Comma-separated actions or sentences describing steps to take after page load (e.g., "click #submit, scroll down" or "Fill the login form and submit")',
              },
            },
            required: ['url'],
          },
        },
        {
          name: 'execute_js',
          description: 'Execute JavaScript code on a webpage',
          inputSchema: {
            type: 'object',
            properties: {
              url: {
                type: 'string',
                description: 'The URL to navigate to',
              },
              script: {
                type: 'string',
                description: 'The JavaScript code to execute',
              },
              steps: {
                type: 'string',
                description: 'Comma-separated actions or sentences describing steps to take after page load (e.g., "click #submit, scroll down" or "Fill the login form and submit")',
              },
            },
            required: ['url', 'script'],
          },
        },
        {
          name: 'get_console_logs',
          description: 'Get the console logs of a webpage',
          inputSchema: {
            type: 'object',
            properties: {
              url: {
                type: 'string',
                description: 'The URL to navigate to',
              },
              steps: {
                type: 'string',
                description: 'Comma-separated actions or sentences describing steps to take after page load (e.g., "click #submit, scroll down" or "Fill the login form and submit")',
              },
            },
            required: ['url'],
          },
        },
      ],
    }));
  • MCP CallTool request handler formats and returns the console logs result from the Python backend as text content.
    } else if (request.params.name === 'get_console_logs') {
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify(result.logs, null, 2),
          },
        ],
      };
    } else {
  • src/index.ts:236-236 (registration)
    Validates that 'get_console_logs' is an allowed tool name in the CallTool handler.
    const validCommands = ['screenshot', 'get_html', 'execute_js', 'get_console_logs'];

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

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/ztobs/cline-browser-use-mcp'

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