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> |
||
|---|---|---|
| docker-compose.yml | ||
| README.md | ||
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 32SEARXNG_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 |