Free, API-key-free web search MCP server — DuckDuckGo, Bing, Google & optional SerpAPI/Tavily
This server exposes 2 web search tools with partial schema coverage and descriptions. Tool naming is action-oriented (web_search, get_webpage_content), which is good. However, both tools lack comprehensive parameter descriptions, output schemas are not formally documented, and error handling guidance is minimal. The code shows functional implementations but the tool definitions themselves lack the rigor expected of production tools. Descriptions are present but generic (~50-80 chars each). Parameter descriptions exist but are minimal. No documented output structures. No error recovery guidance.
Fetch and parse the content of a webpage. Returns the main text content extracted from the HTML.
Search the web using multiple search engines (DuckDuckGo, Bing, Google, SerpAPI, Tavily). Returns results with title, snippet, and URL.
Output schemas not documented. Tool implementations return unspecified structures, LLMs cannot plan downstream calls or validate results.
Parameter descriptions are minimal and lack format/constraint guidance. Example: 'engine' param has 1-line description with no explicit enum declaration in visible schema; 'timeout' has no range or rationale.
Tool descriptions lack WHEN/WHY context. web_search description states WHAT but not when to use it vs alternatives or how results are ordered/limited. No mention of max_results default or caching behavior visible to caller.
No error handling guidance. Code catches exceptions (timeouts, SSL errors, blocked IPs) but tool description gives no recovery hints. LLM sees failures with no path forward.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Result limits implicit. web_search defaults to max_results=10 but description does not state this. No guidance on result truncation, pagination, or ranking criteria.