An MCP server that provides web search capabilities using SearXNG instances, returning results in a standardized format.
This server has critical gaps in definition quality. Both tools have reasonable names (verb_noun pattern) but descriptions are present but generic. Parameter schemas are present but lack critical constraints (no enums, no ranges, minimal format details). Output schemas are not formally documented, responses are inferred from code inspection. The server lacks input validation guidance, error recovery paths, and pagination support for results. No tool annotations present (readOnlyHint, destructiveHint). Descriptions are approximately 150 - 180 chars, which is acceptable, but lack dependency hints and selection guidance ('when to use this vs a similar tool'). Parameter descriptions are minimal, 'The search query string' tells an LLM nothing about format, length, or encoding constraints. The test_searx_instance tool's purpose is unclear: why would an agent call this? When would it be preferred over search_web? No guidance provided.
Search the web for information using a random SearXNG instance. Returns results in Ollama web search API format.
Test if a specific SearXNG instance is working
No input validation constraints on 'query' parameter. Missing format (string length, character restrictions, encoding). LLMs may pass very long strings, special characters, or SQL-injection-like payloads without guidance.
No output schema documentation. Response structure (list of dicts with 'title', 'url', 'content') is inferred from code, not declared in tool metadata. LLMs cannot reliably extract fields or plan downstream chaining.
No pagination support. search_web returns up to max_results items but does not accept page/offset parameters or return a total count. If 10 results are not enough, the agent cannot fetch more without re-querying.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No error recovery guidance. When all instances fail, response is 'Unable to get search results from any SearXNG instance. Please try again later.', lacks actionable next steps. Should specify: is this retryable? Should the user check their connection? Is there a fallback?
max_results parameter lacks bounds. No minimum or maximum specified. LLM could pass 0, negative, or 10000. Description says 'Maximum number of results to return (default: 10)' but does not enforce range.
test_searx_instance has unclear purpose and weak description. 'Test if a specific SearXNG instance is working', why would an agent need this? When is it preferred over search_web? No dependency hints or selection guidance provided.
No tool annotations. Neither tool declares readOnlyHint=true, even though both are READ_ONLY. Agents lack metadata to assess safety and retry-ability.
Parameter descriptions are too short. 'The search query string' (19 chars) and 'The URL of the SearXNG instance to test' (38 chars) lack format guidance. Baseline expectation for param descriptions: 50 - 100 chars explaining format, constraints, and examples.