The full reindex is expensive — every file re-downloaded and every embedding regenerated — and the documentation says outright to reserve `force: true` for a deliberate rebuild. Score bands are published too: above 0.8 is an excellent match, 0.6 to 0.8 likely relevant, below 0.6 probably not, which turns a raw number into a decision. The project labels itself a work in progress, so treat it accordingly.
An MCP server that indexes Markdown documentation stored on S3 and answers questions against it. Vector indices are plain files on disk via HNSWLib, and embeddings come from Ollama locally or from a cloud provider, so it can run with no hosted dependency at all.
- Semantic search across the indexed docs, returning the matching chunk, its source S3 key, its chunk index and a similarity score — `search_documentation`, with `max_results` defaulting to 4
- The vector index synchronized with the bucket, detecting new, modified and deleted files by ETag comparison — `refresh_index`, incremental by default with `force` for a full rebuild
- A whole document retrieved rather than a chunk — `get_full_document`
- Sync stats on every refresh: new, modified and deleted file counts, total documents and elapsed seconds
- Any S3-compatible storage — AWS, MinIO, Scaleway, Cloudflare R2 — through `S3_ENDPOINT` and `S3_REGION`
An S3-compatible bucket with your Markdown in it: `S3_BUCKET_NAME`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_REGION`, and `S3_ENDPOINT` for non-AWS providers. An embedding provider chosen by `EMBEDDING_PROVIDER`: `ollama` (the default, local and free — pull `nomic-embed-text` first), `openai`, or `google`, each with its own key variable. Node.js >= 18 from source, or Docker, which the README recommends. Tunables include `RAG_MAX_RESULTS` (default 4), `RAG_CHUNK_SIZE` (default 1000), `RAG_CHUNK_OVERLAP` (default 200) and `SYNC_MODE` (startup, periodic or manual). The README marks the project a work in progress and not suitable for production.
One command plus a key — docker run -d \ --name s3-doc-mcp \ -p 3000:3000 \ --env-file .env \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ -v $(pwd)/data:/app/data \ yoanbernabeu/s3-doc-mcp:latest, then supply credentials
