Skip to main content

grounded-rag-mcp

An MCP server that gives any LLM host grounded, cited retrieval over your own documents — hybrid retrieval (BM25 + dense), cross-encoder reranking, citations, and a built-in eval harness.

Point it at a folder of documents. Your MCP host (Claude Desktop, an IDE, a custom agent) can then search and answer over them — grounded in the real text, with citations, and an honest "not in the documents" path.

CI


Why

Most RAG-over-MCP examples are toys. This one is built production-flavored:

  • Hybrid retrieval — BM25 (exact terms) + dense (semantics), fused with Reciprocal Rank Fusion.
  • Cross-encoder reranking — precision on the top candidates without blowing latency.
  • Grounding + citations — answers cite their sources; if the answer isn't in the docs, it says so.
  • Built-in eval — measure retrieval quality (recall@k, MRR, hit-rate), not just vibes.
  • Local-first — the default path runs with no external services or API keys.
  • Both transports — stdio and Streamable HTTP.

Status

🚧 Early development. Building in public, phase by phase (see PROJECT_REQUIREMENTS.md).

  • Phase 0 — scaffold, packaging, CI
  • Phase 1 — core retrieval (chunk → embed → BM25 + dense → RRF)
  • Phase 2 — MCP server (stdio) with ingest / search
  • Phase 3 — rerank + grounding + answer (via MCP sampling)
  • Phase 4 — tests, types, docs, resource + prompt
  • Phase 5 — Streamable HTTP transport + evaluate_retrieval
  • Phase 6 — publish to PyPI

Install

pip install grounded-rag-mcp            # lean, local-first default (no torch)
pip install "grounded-rag-mcp[st]"      # + sentence-transformers for semantic embeddings & reranking

Tools

Tool What it does
ingest_documents Chunk, embed, and index files or raw text into a named collection
search Hybrid / dense / bm25 retrieval, optional rerank, per-stage scores
answer Grounded, cited answer via MCP sampling; refuses when nothing is found
list_collections List collections and chunk counts
evaluate_retrieval hit_rate / MRR / recall@k on labeled cases

Also exposes a resource (rag://collections) and a prompt (grounded_answer).

Use it with an MCP host (e.g. Claude Desktop)

Add to your host's MCP config:

{
  "mcpServers": {
    "grounded-rag": {
      "command": "grounded-rag-mcp"
    }
  }
}

Or run it directly:

grounded-rag-mcp            # stdio (default, for local hosts)
grounded-rag-mcp --http     # Streamable HTTP on 127.0.0.1:8000 (remote / multi-client)

Use the retrieval engine as a Python library

from grounded_rag_mcp.collection import Collection
from grounded_rag_mcp.embeddings import HashingEmbedder
from grounded_rag_mcp.ingest import load_texts
from grounded_rag_mcp.config import RetrievalConfig

col = Collection("kb", HashingEmbedder(dim=512))
col.add(load_texts(["The refund policy allows returns within 30 days of purchase."]))

for hit in col.retrieve("refund policy", RetrievalConfig(top_k=1)):
    print(hit.chunk.source, hit.score, hit.stage_scores)

Development

pip install -e ".[dev]"
ruff check . && ruff format --check . && mypy src && pytest -q

See docs/ARCHITECTURE.md, docs/BUILD_STORY.md, and PUBLISHING.md.

License

MIT © Chetan C

Metadata

Release files for grounded-rag-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for grounded-rag-mcp 0.1.0
File Size Uploaded Provenance Actions
grounded_rag_mcp-0.1.0.tar.gz 34.1 kB With provenance Details for grounded_rag_mcp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for grounded-rag-mcp 0.1.0
File Interpreter ABI Platform Actions
grounded_rag_mcp-0.1.0-py3-none-any.whl Python 3 none any Details for grounded_rag_mcp-0.1.0-py3-none-any.whl

Total release size: 56.3 kB

Release files / grounded_rag_mcp-0.1.0.tar.gz

Download URL grounded_rag_mcp-0.1.0.tar.gz
Size 34.1 kB
Tags Source
SHA-256 checksum
How to use checksums
bc0c81522e0bc7eebe70bd6ffead216f743cae99b428c17f277f8201da50ad97
BLAKE2b-256 checksum
How to use checksums
28d0c9ed3ccdcb30ea3464cb20096dbd1a140aa8f013c0d55217889bc37a9084
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release files / grounded_rag_mcp-0.1.0-py3-none-any.whl

Download URL grounded_rag_mcp-0.1.0-py3-none-any.whl
Size 22.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c9588d622a91514695e1b8a8b3b8b0d44ad1bf026cfa4ac5824e94bbea0e2600
BLAKE2b-256 checksum
How to use checksums
847e305c1c525c78cb88e059398462f5f746e3228ad03d57d9755a8402fe64f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Security for grounded-rag-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for grounded_rag_mcp-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page