npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@abhishekguptain/mcp-search-server

v2.0.4

Published

Multi Provider Search MCP supporting Google, Tavily, DuckDuckGo, and Brave providers.

Downloads

36

Readme

MCP Search Server

This package exists to provide a unified MCP (Model Context Protocol) interface for multi-provider web search. It allows you to leverage the free monthly quota given by multiple search services (such as Google and Tavily) by automatically falling back between them, maximizing your available search capacity for automation and AI workflows.

Features

  • Supports Google Custom Search, Tavily Search, DuckDuckGo Search, and Brave Search.
  • Exposes a single MCP tool: search.
  • Allows specifying a provider directly or uses a priority-based fallback (default: Tavily, Google, DuckDuckGo, Brave).
  • Standardizes search results into a common format.
  • Configurable via environment variables.
  • Brave Search support (requires API key passed via MCP env, not .env).

Getting Free API Credentials

Tavily

  1. Go to Tavily and sign up for a free account.
  2. After verifying your email, log in to your Tavily dashboard.
  3. Navigate to the API section and generate a free API key.
  4. Copy the API key and use it as TAVILY_API_KEY in your configuration.

Brave Search

  1. Go to Brave Search API and click "Get started".
  2. Sign in or create a Brave account.
  3. Follow the instructions to subscribe to the Brave Search API (free tier available).
  4. Once subscribed, go to your Brave dashboard and generate an API key.
  5. Copy the API key and use it as BRAVE_API_KEY in your MCP client configuration (must be passed via MCP env, not .env).

Google Custom Search

  1. Go to the Google Cloud Console and create a new project (or select an existing one).
  2. Enable the Custom Search API for your project.
  3. Go to the Custom Search Engine and create a new search engine.
    • For "Sites to search", you can enter www.example.com (you can edit this later to search the entire web).
    • After creation, go to the control panel of your search engine and enable "Search the entire web" in the "Sites to search" section.
  4. Copy the Search Engine ID (CX) and use it as GOOGLE_CX.
  5. In the Cloud Console, go to APIs & Services > Credentials and create an API key.
  6. Use this API key as GOOGLE_API_KEY in your configuration.

Setup

After updating your configuration or credentials, run:

npm run build
npm start
  1. Clone/Download: Get the server code.

  2. Install Dependencies:

    npm install
  3. Configure API Keys (via MCP Client Settings):

    • Instead of using a .env file, you can configure the API keys and optional port directly within your MCP client's JSON settings (e.g., Cline's cline_mcp_settings.json).
    • Add or modify the server entry for mcp-search-server and provide the necessary keys in the env object:
    {
      "servers": {
        // ... other servers ...
    
        "search": { // Or your chosen name for this server
          "autoApprove": [],
          "disabled": false, // Set to false to enable
          "timeout": 120,
          "command": "npx", // Or the command to run the server
          "args": [
              "-y",
              "mcp-search-server"
          ],
          "env": {
            // Required API Keys
            "TAVILY_API_KEY": "YOUR_TAVILY_API_KEY",
            "GOOGLE_API_KEY": "YOUR_GOOGLE_API_KEY",
            "GOOGLE_CX": "YOUR_GOOGLE_CUSTOM_SEARCH_ENGINE_ID",
            "BRAVE_API_KEY": "YOUR_BRAVE_SEARCH_API_KEY", // Brave Search API Key (must be passed via MCP env, not .env)
    
            // DuckDuckGo does not require an API key.
    
            // Optional: Configure providers and strategy
            "SEARCH_PROVIDERS": "tavily,google,duckduckgo,brave", // Comma-separated list of providers in desired priority
            "SEARCH_STRATEGY": "random", // Or "priority"
    
            // Optional Port Override
            "PORT": "3002" // Example: run on port 3002 instead of default
          },
          "transportType": "stdio" // Assuming stdio transport
        }
    
        // ... other servers ...
      }
    }
    • Replace the placeholder values (YOUR_..._KEY, /path/to/your/MCP/...) with your actual keys and the correct path to the built index.js file.
    • Ensure you provide keys for the providers you intend to use.

Running the Server

npm start

The server will start, typically on port 3001 (or the port specified in .env). It will print the available tool name and the status of loaded API keys.

MCP Tool: search

  • Description: Performs a web search using multiple providers (Tavily, Google, DuckDuckGo, Brave) with priority fallback.
  • Input Schema:
    • query (string, required): The search term.
    • provider (string, optional, enum: ["google", "tavily", "duckduckgo", "brave"]): Specify a provider directly. If omitted, uses priority fallback.
    • num_results (integer, optional, default: 10): Number of results desired (min: 1, max: 20).
  • Output: A JSON object containing an array of content objects, where each object represents a structured search result:
    {
      "content": [
        {
          "type": "search_result", // Or another appropriate type
          "title": "Result Title",
          "link": "https://example.com/result",
          "snippet": "Description or snippet of the result.",
          "provider": "tavily" // Indicates which provider returned this result
        },
        // ... more results
      ]
    }

Connecting to Cline (or other MCP clients)

Add the server command (e.g., node build/index.js) or connection details to your MCP client's configuration. Cline should then detect the search tool.

Modifying Provider Priority

Edit the PROVIDER_LIST array in src/config.ts (and rebuild) to change the fallback order. The default is ['tavily', 'google', 'duckduckgo', 'brave'].