Skip to main content
Glama

Chrome MCP Server

network-request.tsβ€’2.64 kB
import { createErrorResponse, ToolResult } from '@/common/tool-handler'; import { BaseBrowserToolExecutor } from '../base-browser'; import { TOOL_NAMES } from 'chrome-mcp-shared'; import { TOOL_MESSAGE_TYPES } from '@/common/message-types'; const DEFAULT_NETWORK_REQUEST_TIMEOUT = 30000; // For sending a single request via content script interface NetworkRequestToolParams { url: string; // URL is always required method?: string; // Defaults to GET headers?: Record<string, string>; // User-provided headers body?: any; // User-provided body timeout?: number; // Timeout for the network request itself } /** * NetworkRequestTool - Sends network requests based on provided parameters. */ class NetworkRequestTool extends BaseBrowserToolExecutor { name = TOOL_NAMES.BROWSER.NETWORK_REQUEST; async execute(args: NetworkRequestToolParams): Promise<ToolResult> { const { url, method = 'GET', headers = {}, body, timeout = DEFAULT_NETWORK_REQUEST_TIMEOUT, } = args; console.log(`NetworkRequestTool: Executing with options:`, args); if (!url) { return createErrorResponse('URL parameter is required.'); } try { const tabs = await chrome.tabs.query({ active: true, currentWindow: true }); if (!tabs[0]?.id) { return createErrorResponse('No active tab found or tab has no ID.'); } const activeTabId = tabs[0].id; // Ensure content script is available in the target tab await this.injectContentScript(activeTabId, ['inject-scripts/network-helper.js']); console.log( `NetworkRequestTool: Sending to content script: URL=${url}, Method=${method}, Headers=${Object.keys(headers).join(',')}, BodyType=${typeof body}`, ); const resultFromContentScript = await this.sendMessageToTab(activeTabId, { action: TOOL_MESSAGE_TYPES.NETWORK_SEND_REQUEST, url: url, method: method, headers: headers, body: body, timeout: timeout, }); console.log(`NetworkRequestTool: Response from content script:`, resultFromContentScript); return { content: [ { type: 'text', text: JSON.stringify(resultFromContentScript), }, ], isError: !resultFromContentScript?.success, }; } catch (error: any) { console.error('NetworkRequestTool: Error sending network request:', error); return createErrorResponse( `Error sending network request: ${error.message || String(error)}`, ); } } } export const networkRequestTool = new NetworkRequestTool();

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/haithemobeidi/mcp-chrome'

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