Skip to main content
Glama

Web Inspector MCP

by antonzherdev
elementExists.ts1.92 kB
import { ToolHandler } from '../common/types.js'; import { BrowserToolBase } from './base.js'; import type { ToolContext, ToolResponse } from '../common/types.js'; export interface ElementExistsArgs { selector: string; } export class ElementExistsTool extends BrowserToolBase implements ToolHandler { async execute(args: ElementExistsArgs, context: ToolContext): Promise<ToolResponse> { return this.safeExecute(context, async (page) => { const normalizedSelector = this.normalizeSelector(args.selector); const locator = page.locator(normalizedSelector); const count = await locator.count(); if (count === 0) { return { content: [ { type: 'text', text: `✗ not found: ${args.selector}` } ], isError: false }; } // Get element info for better output const element = locator.first(); const elementInfo = await element.evaluate((el) => { const tag = el.tagName.toLowerCase(); const parts: string[] = [tag]; if (el.id) parts.push(`#${el.id}`); if (el.className && typeof el.className === 'string') { const classes = el.className.split(' ').filter(c => c).slice(0, 2); if (classes.length) { classes.forEach(c => parts.push(`.${c}`)); } } return parts.join(''); }).catch(() => args.selector); if (count === 1) { return { content: [ { type: 'text', text: `✓ exists: <${elementInfo}>` } ], isError: false }; } // Multiple matches return { content: [ { type: 'text', text: `✓ exists: <${elementInfo}> (${count} matches)` } ], isError: false }; }); } }

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/antonzherdev/mcp-web-inspector'

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