Labsco
MCP SERVER

S3 Documentation MCP Server

by yoanbernabeu

RAG over Markdown docs sitting in any S3-compatible bucket — semantic search, incremental sync by ETag, and embeddings that can run locally with no key.

Vector Stores & RAG Retrieval
Summary
Incremental sync by ETag, and the docs say when not to force it.

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.

What it is

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.

What you get
  • 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`
Requirements

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.

Setup effort

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