LabscoMCP early access ↗
yoanbernabeuMCP SERVER

S3 Documentation MCP Server

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.

by yoanbernabeu ↗Vector Stores & RAG RetrievalCommunity

LABSCO 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

Run a container — pull the image and point your client at it