Skip to main content
Glama
pgzhang

MCP Google Server

by pgzhang

search

Execute web search queries to retrieve relevant information from the internet using Google's search capabilities.

Instructions

Perform a web search query

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query
numNoNumber of results (1-10)

Implementation Reference

  • Executes the 'search' tool: validates input arguments, performs Google Custom Search API request, processes results into SearchResult format, returns JSON stringified results or error message.
    if (request.params.name === 'search') {
      if (!isValidSearchArgs(request.params.arguments)) {
        throw new McpError(
          ErrorCode.InvalidParams,
          'Invalid search arguments'
        );
      }
    
      const { query, num = 5 } = request.params.arguments;
    
      try {
        const response = await this.axiosInstance.get('', {
          params: {
            q: query,
            num: Math.min(num, 10),
          },
        });
    
        const results: SearchResult[] = response.data.items.map((item: any) => ({
          title: item.title,
          link: item.link,
          snippet: item.snippet,
        }));
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(results, null, 2),
            },
          ],
        };
      } catch (error) {
        if (axios.isAxiosError(error)) {
          return {
            content: [
              {
                type: 'text',
                text: `Search API error: ${
                  error.response?.data?.error?.message ?? error.message
                }`,
              },
            ],
            isError: true,
          };
        }
        throw error;
      }
    } else if (request.params.name === 'read_webpage') {
  • TypeScript interface defining the structure of a search result (title, link, snippet).
    interface SearchResult {
      title: string;
      link: string;
      snippet: string;
    }
  • src/index.ts:89-108 (registration)
    Registers the 'search' tool in the MCP ListTools response, including name, description, and input schema.
    {
      name: 'search',
      description: 'Perform a web search query',
      inputSchema: {
        type: 'object',
        properties: {
          query: {
            type: 'string',
            description: 'Search query',
          },
          num: {
            type: 'number',
            description: 'Number of results (1-10)',
            minimum: 1,
            maximum: 10,
          },
        },
        required: ['query'],
      },
    },
  • Type guard function to validate 'search' tool input arguments.
    const isValidSearchArgs = (
      args: any
    ): args is { query: string; num?: number } =>
      typeof args === 'object' &&
      args !== null &&
      typeof args.query === 'string' &&
      (args.num === undefined || typeof args.num === 'number');
  • Configures Axios instance with base URL and default params for Google Custom Search API.
    this.axiosInstance = axios.create({
      baseURL: 'https://www.googleapis.com/customsearch/v1',
      params: {
        key: API_KEY,
        cx: SEARCH_ENGINE_ID,
      },
    });

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/pgzhang/mcp'

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