MCP server for a self-hosted SearXNG instance: web/news search, page extraction, and search-and-extract in one call. Drop-in replacement for metered search APIs.
Four tools with complete input schemas and reasonable descriptions (avg 156 chars, baseline 194). All parameters typed and described. However, output schemas are undocumented, LLMs cannot predict response structure for downstream chaining. Tool naming follows verb_noun pattern (searxng_search, searxng_extract) but lacks clarity on distinctions (search vs search_and_extract). No error handling guidance, no recovery hints, no per-item success/failure for batch operations. Missing tool annotations (readOnlyHint, idempotentHint). Composition is reasonable but search_and_extract combines two concerns.
Extract and convert web pages to plain text. Strips HTML, decodes entities, and returns the main content. Useful for reading full articles after search.
Search the web via the self-hosted SearXNG metasearch instance (aggregates Google, Bing, DuckDuckGo, Wikipedia, and more). Returns titles, URLs, and snippets. Use this as the primary web search tool.
Search the web and extract full content from the top results in a single call. Combines searxng_search and searxng_extract for efficiency.
Search news via SearXNG. Returns recent news articles with titles, URLs, snippets, and publication dates.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining or data extraction. searxng_search returns results array but structure unknown to agent.
No error handling guidance. Errors like 'SearXNG error (500)' or 'Page too large' do not tell LLM what to do next (retry? ask user? try fallback?). Missing recovery hints per pattern:recovery-guide.
searxng_search_and_extract combines search + extraction into one tool. Violates single-responsibility principle. Agent cannot search without extracting or extract without searching. Should be two separate tools composed by agent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
No tool annotations. Tools lack readOnlyHint (all are read-only), idempotentHint (all are idempotent), or destructiveHint. LLM cannot infer safety properties and may over-caution or under-caution on retries.
searxng_extract accepts array of URLs but returns no per-item success/failure. If 1 of 5 URLs fails, agent gets blanket error and must retry all. Should return array of {url, success, content, error} objects.