> ## Documentation Index
> Fetch the complete documentation index at: https://docs.augustin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SearXNG

Privacy-focused metasearch engine aggregating Google, Bing, DuckDuckGo, Startpage, and Wikipedia. Two services in one stack: `searxng` (the search engine) and `mcp` (an MCP server wrapping it). Runs on Pentium.

## Access

* Browser UI / JSON API: `searxng.augustin.ai` — no auth, internal use only
* MCP endpoint: `searxng-mcp.augustin.ai/mcp` — bearer token required
* Internal DNS on swarm overlay: `http://searxng:8080`, `http://mcp:3000`

## MCP

HTTP transport, streamable-http protocol. Wraps the SearXNG JSON API as MCP tools (search, read URL, etc.).

```bash theme={null}
# Health (no auth)
curl https://searxng-mcp.augustin.ai/health

# Initialize (auth required)
curl -X POST https://searxng-mcp.augustin.ai/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"x","version":"0"}}}'
```

Token lives in `searxng/.env` as `MCP_HTTP_AUTH_TOKEN`. Hardened mode is on (`MCP_HTTP_HARDEN=true`), which enforces host + origin allowlists and the bearer check.

### Client config

Most MCP clients accept a remote HTTP server via something like:

```json theme={null}
{
  "mcpServers": {
    "searxng": {
      "url": "https://searxng-mcp.augustin.ai/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}
```

## Configuration

SearXNG itself is config-file only. Edit `searxng/searxng/settings.yml` and redeploy. JSON format is enabled (required for both Open WebUI and the MCP wrapper). Limiter is off since there's no public exposure path beyond the host allowlist.
