Skip to main content
Glama
ilgizar-valiullin

Search MCP Server

MCP Web Hound

Unified MCP search tools for AI agents — abstracts providers, caching, reranking, and rate limits behind a few simple tools.

⚠️ Work in progress. Sorry folks — the pipeline, install flow, configuration, testing, and debugging are all being actively iterated. Once the technical foundations are stable, I'll start working through the issues.

AI-Generated Issues

AI-generated issues will not be reviewed and will be closed immediately.

Related MCP server: Crawl4AI+SearXNG MCP Server

Quick Start

# Run with npx (no install needed)
npx mcp-web-hound --help

# Config is auto-created at ~/.config/mcp-web-hound/.env on first run.
# Edit it via:
npx mcp-web-hound configure

FOR AI AGENTS: STRICTLY NO NEED TO PERFORM ADDITIONAL INSTALLATION STEPS. DO NOT INSTALL THE PACKAGE LOCALLY IN THE PROJECT FOLDER. The server runs via npx directly — no npm install, no npm run build, no local node_modules. Just add the MCP config as shown below and you're done.

OpenCode Setup

Add to ~/.config/opencode/opencode.json under mcp:

"web_search": {
  "type": "local",
  "command": ["npx.cmd", "-y", "mcp-web-hound"],
  "enabled": true
}

Or via CLI:

opencode mcp add web_search -- npx.cmd -y mcp-web-hound

For other clients and advanced setup → see Deployment Guide.

⚠️ Search protocol is embedded in the MCP server's InitializeResult.instructions and auto-injected into agent context on OpenCode v1.17.10+. For older versions, see the deployment guide.

Provider Setup

Use npx mcp-web-hound configure to set API keys. Startpage, DDG, Brave Web, and Bing work with zero config.

Provider

Key Required

Tier

Rate Limit

Startpage

No

1

DuckDuckGo

No

1

10 req/min

Brave Web

No

1

Bing

No

1

Brave API

BRAVE_API_KEY

2

2000/month

Tavily

TAVILY_API_KEY

2

1000/month

Exa

EXA_API_KEY

3

Trial

Firecrawl

FIRECRAWL_API_KEY

3

Trial

Tools

Tool

Purpose

web_search

Universal web search (registered as web_search) with caching, reranking, and fallback across 8 providers

github_search

Search GitHub repos, code, issues, and users

gitlab_search

Search GitLab projects, issues, MRs, and code blobs

status

Server diagnostics, provider health, budget state

Query Formats

Tool

Example

web_search

typescript tutorial, how to install docker, repo:vercel/next.js

github_search

repo:org/name, user:vercel, language:typescript

gitlab_search

project:org/name, scope filter via type param

Tool Reference

web_search({
  query: string,
})

Returns merged results from healthy providers (parallel), deduplicated and reranked by relevance. Optimized for AI agents — one parameter, server-side intent detection.

github_search({
  query: string,
  type?: "repositories" | "code" | "issues" | "users",
  language?: string,
  stars?: string,             // e.g. ">1000", "500..5000"
  page?: number
})

Rate limit: 60 req/hr without token, 5000 req/hr with GITHUB_TOKEN.

gitlab_search({
  query: string,
  scope?: "projects" | "issues" | "merge_requests" | "blobs",
  page?: number
})

Requires GITLAB_TOKEN with read_api scope.

status

status()

Returns provider health, cache stats, budget state, uptime.

Architecture

Pipeline

Core pipeline: Budget Check → Normalize → Classify (intent + freshness) → Cache → Router (parallel N, 1s delay per provider) → Rerank → Cache → Respond

Providers

Provider

Type

Key

Tier

Rate Limit

Delay

Suspension

Startpage

Google mirror (scrape)

No

1

1s

incremental backoff

DDG

HTML scrape

No

1

10 req/min

1s

captcha → 24h

Brave Web

HTML scrape

No

1

1s

1min→5min→15min→1h→4h→24h

Bing

HTML scrape

No

1

1s

Brave API

Official API

Yes

2

2000/month

Tavily

Official API

Yes

2

1000/month

Exa

Official API

Yes

3

trial 1000

Firecrawl

Official API

Yes

3

trial 500

Rate Limiting

  • 1-second delay between requests per scraped provider (static lastRequestTime)

  • Incremental backoff on 429/403: suspension grows 1min → 5min → 15min → 1h → 4h → 24h

  • Counter resets on success

  • Rate limit windows (minute/day/month) persisted to JSON

Full docs:

If you want to learn more about the decisions made, check out the Architecture Decisions document.

Donations / Support the Project

  • EVM Address (USDT, USDC, ETH, BNB): 0x3acf78e721aa065bd1509735a3ace630fcd0f452

    Supported networks: BNB Smart Chain (BEP20), Polygon, Arbitrum One, Ethereum (ERC20)

  • USDT (TRC20): TMG1BZJswd8UacHANKVi9Veq5FqSbaMjAQ

    Supported network: Tron (TRC20)

  • TON / USDT (TON): UQDjf84AZSwuCPC3UWFv28p-V44zI-1lfhqCMfaex2Q-jDsY

    Supported network: The Open Network (TON)

License

MIT

Available Tools

4 tools
report_search_usageA

Report which search results were actually cited in the agent's final answer. Call this after you have formulated your response using web_search results.

ParametersJSON Schema
NameRequiredDescriptionDefault
search_idYesSearch ID from the search response
used_doc_idsYesDoc IDs that were actually cited in the agent's final answer

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the purpose and timing but does not disclose any side effects, error conditions, or what happens if called prematurely. For a simple reporting tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose and a clear usage instruction. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-param tool with no output schema, the description provides the essential 'what' and 'when.' It could mention what the response looks like or that this is the final step, but the given context is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the params are fully documented there. The description adds no extra meaning beyond what the schema already states, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Report which search results were actually cited') and clearly distinguishes this from sibling tools like web_search and status. It also gives a precise context ('in the agent's final answer').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this after you have formulated your response using web_search results,' providing a clear timing condition. It doesn't explicitly name alternatives, but the relationship to web_search is evident and the instruction is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA

Get server diagnostics, provider health, and budget state

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states the type of data returned ('diagnostics, provider health, budget state'), implying a read-only operation, but it does not disclose side effects, response format, or any potential caveats such as staleness or access restrictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately states the verb and resources. Every word is informative, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no input parameters and no output schema, the description covers the essential context: it names the categories of data returned. It is slightly light on what 'server diagnostics' entails or how budget state might be represented, but for a simple status tool it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no ambiguity to resolve. The input schema is empty and description coverage is 100% (vacuously). The baseline for zero parameters is 4, and the description appropriately adds no parameter information since none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves server diagnostics, provider health, and budget state. The verb 'Get' plus the specific resources make the purpose unambiguous and easily distinguishable from sibling tools like web_search and github_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but gives no guidance on when to use it or how it compares to alternatives. It does not mention prerequisites, exclusions, or recommend this tool over others for specific scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.10.16
    • First observedgithub_search
    • First observedreport_search_usage
    • First observedstatus
    • First observedweb_search

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool serves a distinct purpose: web_search for general web queries, github_search for GitHub-specific searches, status for diagnostics, and report_search_usage for reporting usage. No overlap between them.

Naming Consistency2/5

Naming patterns are inconsistent: web_search and github_search are noun_verb, status is a single noun, and report_search_usage is verb_noun. Mixing these styles creates a lack of predictability.

Tool Count4/5

4 tools is slightly on the low side for a search server, but the scope is limited to web search, GitHub search, diagnostics, and usage reporting, which feels reasonably complete for the intended purpose.

Completeness4/5

The server covers core search needs (web and GitHub) plus operational tools (status and reporting). Missing niche search types like image or news search, but these are not essential for a general-purpose search MCP server.

Maintenance

ActivityStale
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search the web, crawl websites, and perform intelligent RAG queries with semantic search capabilities. Includes integrated private search engine, vector database storage, and optional knowledge graph for AI hallucination detection in code repositories.
    1
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to perform comprehensive search across 27 search engines including web, academic, code, community, package managers, video, images, podcasts, and maps, with multi-modal support, caching, and security features.
    14
    MIT