Search MCP Server
Provides web search capability using the Brave Search API
Provides web search capability using DuckDuckGo without requiring an API key
Provides search for GitHub repositories, code, issues, and users
Provides search for GitLab projects, issues, merge requests, and code blobs
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Search MCP Serversearch for top Python libraries for data science on GitHub"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 configureFOR AI AGENTS: STRICTLY NO NEED TO PERFORM ADDITIONAL INSTALLATION STEPS. DO NOT INSTALL THE PACKAGE LOCALLY IN THE PROJECT FOLDER. The server runs via
npxdirectly — nonpm install, nonpm run build, no localnode_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-houndFor other clients and advanced setup → see Deployment Guide.
⚠️ Search protocol is embedded in the MCP server's
InitializeResult.instructionsand 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 |
| 2 | 2000/month |
Tavily |
| 2 | 1000/month |
Exa |
| 3 | Trial |
Firecrawl |
| 3 | Trial |
Tools
Tool | Purpose |
| Universal web search (registered as |
| Search GitHub repos, code, issues, and users |
| Search GitLab projects, issues, MRs, and code blobs |
| Server diagnostics, provider health, budget state |
Query Formats
Tool | Example |
|
|
|
|
|
|
Tool Reference
web_search
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
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
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
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):
0x3acf78e721aa065bd1509735a3ace630fcd0f452Supported networks: BNB Smart Chain (BEP20), Polygon, Arbitrum One, Ethereum (ERC20)
USDT (TRC20):
TMG1BZJswd8UacHANKVi9Veq5FqSbaMjAQSupported network: Tron (TRC20)
TON / USDT (TON):
UQDjf84AZSwuCPC3UWFv28p-V44zI-1lfhqCMfaex2Q-jDsYSupported network: The Open Network (TON)
License
MIT
Available Tools
4 toolsgithub_searchA
Search GitHub repositories, code, issues, or users. Prefer for open source repos, code patterns, and real-world usage examples.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| type | No | repositories | |
| query | Yes | ||
| stars | No | ||
| language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It fails to mention any limitations, rate limits, pagination behavior, authentication requirements, or the nature of the return value. While the read-only nature of a search is implied, the description does not explicitly state it or provide any cautionary context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero fluff. The description is front-loaded with the core verb and resource, then adds a concise usage preference. Every word earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no annotations, the description is too sparse. It does not explain how to construct a query, what the return format looks like, or how pagination works. The high-level purpose is clear, but operational details are entirely missing, leaving the agent unable to use the tool correctly beyond a simple repository search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for explaining parameters. It explains the 'type' parameter by listing the searchable entities (repositories, code, issues, users), but it does not clarify the meaning of 'query', 'page', 'stars', or 'language', leaving the agent without guidance on how to use these parameters effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Search') and resource ('GitHub'), and enumerates the specific searchable entities (repositories, code, issues, users). It also provides a distinctive use case ('open source repos, code patterns, and real-world usage examples'), which differentiates it from sibling tools like web_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Prefer for open source repos, code patterns, and real-world usage examples' explicitly indicates when to use this tool. It gives clear context but does not mention when not to use it or explicitly name alternatives, though the sibling web_search is implied as the alternative for non-GitHub searches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| search_id | Yes | Search ID from the search response | |
| used_doc_ids | Yes | Doc IDs that were actually cited in the agent's final answer |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
web_searchA
Search the web for real-time data, current events, documentation, and up-to-date factual information. NEVER rely on training data for technical specifics — always search first. See server instructions for full protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keywords only — strip filler. Use exact quotes for error messages or code signatures. Prepend site:domain to narrow to a specific source. Never hardcode a year — if temporal context matters, state the need naturally (e.g. "latest api", "current version", "recent changes"). Search engines handle freshness. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must convey behavioral traits. It conveys that the tool returns current/realtime information and implies a read-only operation, but it does not disclose output format, pagination, rate limits, or any side effects. The reference to 'server instructions' offloads detail rather than providing it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word earns its place. The imperative instruction adds practical value without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter schema and no output schema, the description covers the tool's purpose, topical scope, and a clear usage rule. It could be more complete by stating return value expectations, but the combination of the schema and the pointer to server instructions makes it adequate for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the query parameter description is very detailed (keyword style, quotes, site: operator, date handling). The tool description adds general guidance on when to search but no additional parameter-level detail, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action ('Search the web') and its scope ('real-time data, current events, documentation, and up-to-date factual information'). It distinguishes itself from the sibling 'github_search' by targeting general web content rather than code repositories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a strong usage directive: always search first for technical specifics rather than relying on training data. It also lists the types of information this tool is meant for, though it does not explicitly mention when to prefer alternative tools like 'github_search'.
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.
4 tool updates
v1.10.16- First observed
github_search - First observed
report_search_usage - First observed
status - First observed
web_search
TDQS
Scored across 4 tools
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 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.
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.
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
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
Web search for AI agents — one tool across 6 engines, routed to the cheapest + cached.
The best web search for your AI Agent
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides unified web search across multiple providers (Google, Tavily, DuckDuckGo, Brave) with automatic fallback, maximizing free API quota usage for AI workflows.1257MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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.1MIT
- AlicenseBqualityCmaintenanceEnables 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.14MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search the web and extract content using multiple search providers, with caching, retry logic, and options for JavaScript-heavy page rendering.-