Skip to main content
Glama
adenot

MCP Google Server

by adenot

search

Perform web searches through Google Custom Search API to find information online. Enter a search query to retrieve relevant results.

Instructions

Perform a web search query

Input Schema

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

Implementation Reference

  • Handler for the 'search' tool: validates arguments, calls Google Custom Search API via axios, maps results to SearchResult format, returns JSON stringified text content or error.
    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;
      }
  • src/index.ts:120-139 (registration)
    Registration of the 'search' tool in the 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 input arguments for the 'search' tool.
    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');
  • TypeScript interface defining the structure of a search result.
    interface SearchResult {
      title: string;
      link: string;
      snippet: string;
    }
  • Setup of axios instance configured for Google Custom Search API, used by the search handler.
    const proxyConfig = createProxyConfig();
    this.axiosInstance = axios.create({
      baseURL: 'https://www.googleapis.com/customsearch/v1',
      params: {
        key: API_KEY,
        cx: SEARCH_ENGINE_ID,
      },
      proxy: proxyConfig,
    });

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/adenot/mcp-google-search'

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