Project-agnostic MCP services for the homelab — searxng web search + friends. Deployed via Portainer git stack on trogdor.
Find a file
Chris Moriarty 2edf8ce473 searxng: disable startpage (CAPTCHA-suspended) and wikidata (init failure)
Both engines were degrading agent searches into 'blocked instances'
empty results, forcing opencode workers to fall back to hosted search.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-27 17:54:08 -04:00
docker-compose.yml searxng: disable startpage (CAPTCHA-suspended) and wikidata (init failure) 2026-08-27 17:54:08 -04:00
README.md feat: searxng + mcp-searxng — first common MCP services 2026-07-23 17:23:33 -04:00

common-mcps

Project-agnostic MCP services for the homelab. One instance, many consumers — any LLM stack on the LAN (trog, llama.cpp stacks, OpenCode sessions) points at these endpoints instead of running its own copy.

Boundary rule: a service belongs here iff it is project-agnostic and has multiple consumers. Anything that knows a project's domain stays in that project's compose (e.g. trog-mcp lives in trog).

Services

service endpoint what
searxng http://<host>:8181 metasearch, JSON API enabled, limiter off (LAN-only — do not expose this port to the internet)
mcp-searxng http://<host>:8182/mcp MCP (streamable HTTP): searxng_web_search, web_url_read (URL → markdown), suggestions, instance info

mcp-searxng (MIT) was chosen over webfetch-mcp in trog's toolbelt audit: prebuilt image, native streamable HTTP, markdown extraction built in. Fallback if extraction quality disappoints: mcp-searxng-enhanced (trafilatura + PDF support, needs an image build).

Deploy

Portainer git stack (same pattern as trog): git-connected to this repo, docker-compose.yml, redeploy webhook. Stack env vars:

  • SEARXNG_SECRET — required; openssl rand -hex 32
  • SEARXNG_BASE_URL — the instance's LAN URL, e.g. http://192.168.1.105:8181/

Consumers

consumer how
trog (ticket 03.2) aegra WEBSEARCH_MCP_URL=http://<host>:8182/mcp → brain toolbelt
OpenCode .opencode MCP config → same URL
anything else it's just streamable HTTP MCP — point and go