logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

google-web-retrieval-service-adapter

Implement interface with Google's Custom Search Engine (CSE) to fetch and present external web search outcomes natively within applications. This augments application capabilities by enabling swift and extensive access to globally indexed online data.

Author

google-web-retrieval-service-adapter logo

gradusnikov

No License

Quick Info

GitHub GitHub Stars 6
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

apisgooglesearchintegrate googlesearch resultscustom search

Google Search MCP Server Adapter

smithery badge

A Model Context Protocol (MCP) server component facilitating interaction with Google's proprietary web search mechanism.

Deployment Procedures

Automated Setup via Smithery

For streamlined, automated deployment of google-search-mcp-server to Claude Desktop via the Smithery orchestrator:

bash npx -y @smithery/cli install @gradusnikov/google-search-mcp-server --client claude

Manual Source Code Integration

  1. Obtain the repository source code: bash git clone https://github.com/gradusnikov/google-search-mpc-server.git cd google-search-mpc-server

  2. Install requisite Python packages: bash pip install fastmcp google-api-python-client python-dotenv

Configuration Mandates

A .env file must reside in the deployment's root directory, containing the following authorization variables:

GOOGLE_API_KEY=your_google_api_key GOOGLE_CSE_ID=your_custom_search_engine_id

Acquisition pathway for necessary credentials: 1. Establish a Google Cloud Platform project and activate the Custom Search API service. 2. Procure an API access key from the Google Cloud Console interface. 3. Designate a Custom Search Engine via https://cse.google.com/cse/all and extract its unique identifier.

Execution Guidelines

Initiate the server using the standard MCP invocation utility:

bash mcp run google_search_mcp_server.py

Alternatively, integrate the server definition into the Claude Desktop configuration file, typically located at CLAUDE_DIRECTORY/claude_desktop_config.json. A sample configuration for environments utilizing WSL (Windows Subsystem for Linux) might resemble this structure:

"google-search": { "command": "wsl.exe", "args": [ "bash", "-c", "source /home/[user]/anaconda3/etc/profile.d/conda.sh && conda activate mcp && /home/[user]/anaconda3/bin/mcp run /home/[user]/google-search-mpc-server/google_search_mcp_server.py" ] },

WIKIPEDIA: XMLHttpRequest (XHR) is an Application Programming Interface structured as a JavaScript object designed to facilitate the transmission of asynchronous HyperText Transfer Protocol (HTTP) requests from a running web browser session to a remote web server. The methods provided allow a browser-resident application to dispatch queries to the server subsequent to initial page load completion, and subsequently receive data back. XMLHttpRequest forms a fundamental building block of the Ajax programming paradigm. Before Ajax gained prominence, navigation links (hyperlinks) and form submissions represented the primary means of server interaction, frequently necessitating a complete page reload/replacement.

== Genesis == The foundational concepts underpinning XMLHttpRequest were first conceptualized in the year 2000 by software architects involved in the development of Microsoft Outlook. This concept was subsequently integrated into the Internet Explorer 5 browser release (1999). However, the original implementation syntax did not utilize the 'XMLHttpRequest' identifier itself. Instead, the developers relied on invoking constructors such as ActiveXObject("Msxml2.XMLHTTP") and ActiveXObject("Microsoft.XMLHTTP"). As of Internet Explorer 7 (2006), universal browser support for the standardized XMLHttpRequest identifier was achieved. The XMLHttpRequest identifier has since solidified its status as the established, de facto standard across all major web browsing environments, including Mozilla's Gecko rendering engine (2002), Safari version 1.2 (2004), and Opera version 8.0 (2005).

=== Formalization === The World Wide Web Consortium (W3C) formally released a Working Draft specification detailing the XMLHttpRequest object on April 5, 2006. Subsequently, on February 25, 2008, the W3C published the Working Draft for Level 2, which introduced enhancements such as mechanisms for tracking request progress events, enabling requests across different security domains (cross-site), and supporting the handling of raw byte streams. By the conclusion of 2011, the features defined in the Level 2 specification were formally merged back into the primary specification document. In late 2012, stewardship of the specification development transitioned to the WHATWG organization, which now maintains a continuously evolving document utilizing the Web IDL interface description language.

== Operational Flow == Typically, dispatching a data request using XMLHttpRequest involves executing a sequence of programming actions.

  1. Instantiate an XMLHttpRequest object by invoking its constructor:
  2. Invoke the "open" method to define the request modality (e.g., GET/POST), pinpoint the target resource Uniform Resource Identifier (URI), and designate whether the operation should be synchronous or asynchronous:
  3. For asynchronous operations, establish a callback handler function that will be notified upon any state transitions of the request:
  4. Commence the network transmission by executing the "send" method, optionally supplying payload data:
  5. Process state transitions within the defined event listener. If the server returns data, it is typically stored, by default, within the responseText property. When the object completes its processing cycle, the state transitions to value 4, signifying the "done" status. Beyond these fundamental operations, XMLHttpRequest offers numerous parameters for fine-grained control over transmission parameters and response handling. Custom header fields can be injected into the outgoing request to provide specific instructions to the server regarding fulfillment. Data can also be uploaded to the server as an argument to the "send" call. The received data stream can be parsed directly from JSON format into a native, operational JavaScript object, or alternatively processed incrementally as data segments arrive, avoiding latency associated with waiting for the complete payload.

== Inter-domain Communication ==

During the nascent phases of the World Wide Web's evolution, it became apparent that methods existed to compromise security by allowing...

See Also

`