Skip to main content
Glama
designcomputer

searxng-mcp-bridge

searxng-mcp-bridge

A minimal MCP server that exposes a private SearXNG instance as a search tool over streamable-HTTP, so it can be used as a web-search tool from the llama.cpp WebUI (or any MCP client that speaks streamable-HTTP / SSE).

It is deliberately tiny — one file, two dependencies (fastmcp, httpx) — as an auditable alternative to heavier SearXNG MCP packages.

Why this exists

There are existing SearXNG MCP servers, so why another one? Two reasons specific to this use case:

  • Transport. The llama.cpp WebUI is a browser-based MCP client, so it can only talk to MCP servers over a network transport (streamable-HTTP / SSE / WebSocket) — not stdio. Many published SearXNG MCP servers are stdio-first (aimed at Claude Desktop / IDEs), which doesn't fit here.

  • Footprint. This service runs unauthenticated on the local network, so its dependency and supply-chain surface matters. The most prominent PyPI option (searxng-mcp) pulls in ~167 transitive packages — including litellm, llama-index-core, confluent-kafka, and a number of the author's own utility packages — for what is ultimately a thin wrapper around one HTTP endpoint. That's a lot of unrelated code to trust and keep updated.

Since the actual job is trivial (forward a query to SearXNG's JSON API and return the results), a single readable file with two well-known dependencies is easier to audit, deploy, and reason about than adopting a large general-purpose package.

Related MCP server: searxng-mcp

How it works

llama.cpp WebUI (browser MCP client)
        │  streamable-HTTP  http://<host>:8000/mcp
        ▼
   server.py  (this bridge)
        │  GET /search?format=json
        ▼
   SearXNG  http://127.0.0.1:4000

The WebUI's MCP client is browser-based and only supports network transports (streamable-HTTP / SSE / WebSocket) — not stdio — which is why this bridge serves HTTP.

Tool

search(query, max_results=10, categories=None, language=None, time_range=None) — returns a list of {title, url, content, engine} from SearXNG.

Configuration (env vars)

Var

Default

Meaning

SEARXNG_URL

http://127.0.0.1:4000

Base URL of the SearXNG instance

HOST

0.0.0.0

Bind address

PORT

8000

Listen port

MCP_PATH

/mcp

HTTP path for the MCP endpoint

SearXNG must have the JSON format enabled (search.formats includes json in settings.yml).

Install (systemd)

git clone <this-repo> /opt/searxng-mcp
cd /opt/searxng-mcp
./install.sh            # creates .venv, installs the unit, enables + starts it

install.sh rewrites the unit's paths/user to wherever the repo lives. Override the interpreter or service user with PYTHON=, SERVICE_USER=, SERVICE_GROUP=.

Manage it:

sudo systemctl restart searxng-mcp
journalctl -u searxng-mcp -f

Run manually (dev)

python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
SEARXNG_URL=http://127.0.0.1:4000 .venv/bin/python server.py

Wire into the llama.cpp WebUI

In WebUI → MCP Servers, add a server with transport Streamable HTTP and URL http://<host>:8000/mcp. Use a tool-capable model served with --jinja.

Tested clients

The bridge speaks standard MCP over streamable-HTTP, so it should work with any client that supports that transport. Confirmed working with:

  • llama.cpp WebUI — add it under MCP Servers as a Streamable HTTP server at http://<host>:8000/mcp (see above).

  • Page Assist (browser extension) — works well; add it as a streamable-HTTP MCP server pointing at the same URL.

Tested another client? PRs adding it to this list are welcome.

Security note

Binding HOST=0.0.0.0 exposes an unauthenticated search endpoint on every reachable network (LAN/VPN). Use 127.0.0.1 if you only need local access, or restrict at the firewall.

License

MIT

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/designcomputer/searxng-mcp-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server