LabscoMCP early access ↗
littleofficeMCP SERVER

MCP Searxng Relay

Web search and page fetching through your own SearXNG instance, with a per-caller ledger of which URLs were actually fetched and how much of each was read.

by littleoffice ↗Web Search EnginesCommunity

LABSCO SUMMARY

It records what the agent read, not just what it searched.

The source list distinguishes a page read in full from one where only metadata was fetched — the distinction models lose first when they compose a citation far from the tool call that produced it. Long documents are windowed at 100k characters with the exact next start_index returned, and the extracted text stays cached, so paging through a large PDF costs one upstream fetch rather than one per page. Reaching an internal wiki is opt-in through FETCH_ALLOWED_HOSTS or FETCH_ALLOWED_CIDRS, and both require an explicit port.

What it is

A search relay for environments where queries are not allowed to leave infrastructure you control. It fronts a self-hosted SearXNG instance, fetches and extracts pages itself, and keeps a per-caller record of what it retrieved — so a claim about sources can be checked against a list rather than trusted to a model's recall.

What you get

  • Web search through your SearXNG instance with control over language, category, time range, safe-search level and result count, and the backend engines that surfaced each result named on it — searxng_web_search
  • A URL fetched and converted to structured Markdown with headings, lists, tables and code blocks preserved; PDFs and Office documents (DOCX, XLSX, PPTX plus legacy DOC, XLS, PPT) are extracted too, and images come back as image content for vision models — searxng_read_url
  • Title, author, publish date, language, site name, description, image, categories and tags for a URL as JSON, for choosing between candidate links before paying for a full read — searxng_url_metadata
  • The URLs this relay genuinely fetched for the caller, newest first, each marked with how much was read: full text, one window of a longer document, metadata only, or a failed fetch — searxng_session_sources

Requirements

A running SearXNG instance with the JSON output format enabled in its settings.yml, and its base URL in SEARXNG_URL — the server refuses to start without it. Docker, to run the published image ghcr.io/littleoffice/mcp-searxng-relay:latest. The README also names Go 1.26+ for building from source, but gives no build command. With MCP_PORT set it speaks Streamable HTTP and requires a bearer token via MCP_AUTH_TOKEN, MCP_AUTH_TOKENS or MCP_AUTH_TOKEN_FILE; with MCP_PORT unset it runs over stdio.

Setup effort

Run a container — pull the image and point your client at it