Turn your SearXNG instance into a powerful search engine for AI using MCP.
Single tool with clear naming (search_web) and proper schema structure using Zod. Input schema is well-defined with type constraints and descriptions. However, output schema is only partially documented in code (SearchResultItemSchema visible but not integrated into tool definition). Error handling returns structured responses but lacks recovery guidance. Tool description is adequate (67 chars) but could better explain when to use it vs alternatives. No tool annotations (readOnlyHint, etc.) present.
Searches the web using the SearXNG meta search engine.
Output schema not declared in tool definition. SearchResultItemSchema exists in schemas.ts but is never registered as the tool's output schema in the Tool object. LLMs cannot predict response structure.
Tool description lacks context for LLM selection. Does not explain when to use search_web vs other search tools, what makes results reliable, or prerequisites (e.g., SearXNG instance must be running). Current description (67 chars) is below the 194-char baseline for production tools.
Error handling returns raw error strings without recovery guidance. When searchWeb() fails, the response is 'Error fetching search results: <error>' with no actionable next steps for the LLM (e.g., 'Check SEARXNG_SERVER_URL is reachable').
No tool annotations present. search_web lacks readOnlyHint (true), destructiveHint (false), or idempotentHint (true) metadata. These hints help LLMs reason about safety and retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Result limit not enforced or documented. No cap on result count returned; large result sets could exhaust context window. Baseline pattern recommends 20-50 items with pagination.