Initial public release

Three local MCP servers for coding agents, designed for Claude Code
and OpenCode:

- context-web-search: SearXNG-backed web search and URL fetch
- context-docs:       semantic search over curated llms.txt docs
- context-repomix:    pack local or remote repos into AI context

Defaults are local-first: SearXNG binds to 127.0.0.1, no hosted API
keys are required, and Repomix mounts only the current project read-only.
This commit is contained in:
2026-05-21 08:43:38 -07:00
commit c905cf86c8
24 changed files with 1023 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
*
!Dockerfile

27
docker/docs/Dockerfile Normal file
View File

@@ -0,0 +1,27 @@
FROM python:3.12-slim
ARG LLMS_TXT_MCP_VERSION=0.2.0
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Install CPU-only torch first so llms-txt-mcp does not pull large CUDA wheels.
RUN pip install --no-cache-dir \
--index-url https://download.pytorch.org/whl/cpu \
torch
RUN if [ -n "${LLMS_TXT_MCP_VERSION}" ]; then \
pip install --no-cache-dir "llms-txt-mcp==${LLMS_TXT_MCP_VERSION}"; \
else \
pip install --no-cache-dir llms-txt-mcp; \
fi
RUN mkdir -p /data /models
ENV HF_HOME=/models \
SENTENCE_TRANSFORMERS_HOME=/models
VOLUME ["/data", "/models"]
ENTRYPOINT ["llms-txt-mcp"]

View File

@@ -0,0 +1,2 @@
*
!Dockerfile

View File

@@ -0,0 +1,21 @@
FROM node:22-bookworm-slim
ARG MCP_WEB_SEARCH_VERSION=1.3.0
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
chromium \
fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g "@zhafron/mcp-web-search@${MCP_WEB_SEARCH_VERSION}" \
&& npm cache clean --force
ENV CHROME_PATH=/usr/bin/chromium \
DEFAULT_SEARCH_PROVIDER=searxng \
HTTP_TIMEOUT=15000 \
MAX_RESULTS=10 \
SEARXNG_URL=http://searxng:8080
ENTRYPOINT ["mcp-web-search"]

View File

@@ -0,0 +1,37 @@
use_default_settings: true
general:
debug: false
instance_name: "context-kit-search"
donation_url: false
contact_url: false
enable_metrics: false
search:
safe_search: 0
autocomplete: ""
formats:
- html
- json
server:
# Local placeholder. The Docker service also sets SEARXNG_SECRET from .env;
# keep SearXNG bound to 127.0.0.1 unless you review this config separately.
secret_key: "local-only-change-if-exposed"
limiter: false
image_proxy: true
bind_address: "0.0.0.0"
outgoing:
request_timeout: 10.0
max_request_timeout: 15.0
pool_connections: 20
pool_maxsize: 20
engines:
- name: duckduckgo
disabled: false
- name: bing
disabled: false
- name: google
disabled: false