Why not just an MCP tool?
Why not just an MCP tool?
The obvious objection: MCP already lets a server expose a
search(query) → documents tool — why a second protocol? Because production retrieval is a
pipeline (recall → fusion → rerank → assemble), not one opaque call. A
tool.call can’t negotiate candidateK ≥ topN ≥ k, expose per-stage scores,
return structured comparable Hits (so nDCG/RRF work across engines), stream
staged progress, or carry a per-hit trust signal against prompt injection —
it flattens all of that into a text blob.If your need really is one opaque query → text call, an MCP tool is the
right tool — and the two compose (a gateway can expose RCP retrieve as
an MCP tool). See the full six-axis argument in
RCP, MCP & ACP.New to retrieval or RAG? Start here
New to retrieval or RAG? Start here
Retrieval-augmented generation (RAG) grounds a language model in your
data instead of relying only on what it memorised in training. The loop is
almost always the same four steps:
- Embed — turn text into a vector so that passages with similar meaning land near each other in space.
- Retrieve — given a query, find the nearest passages (by dense vectors, sparse keywords, or a hybrid of both).
- Rerank — re-score just the top handful with a slower, more accurate model, so the best passage rises to the top.
- Cite — return the winning passages with their sources, so whatever the model writes next is grounded and checkable.
RCP is transport-free and language-agnostic. A server is any process
that reads newline-delimited JSON on stdio or accepts HTTP POSTs. A client is
anything that can send one.
The four pillars
Capability-negotiated
A server advertises exactly what it can do (
embed, sparseEmbed,
multiVector, rerank, retrieve, transform, graph, index,
catalog). Clients gate calls on capabilities — no probing, no surprises.SOTA-complete
Hybrid (dense + learned-sparse) search, ColBERT/ColPali late interaction,
SPLADE, multi-stage rerank cascades, MMR diversification, contextual
retrieval, GraphRAG (local/global/drift), agentic multi-hop, citations,
streaming, and metadata filtering are all first-class.
Transport-free
JSON-RPC 2.0 over newline-delimited stdio or HTTP. If it can read a line
and parse JSON, it can speak RCP.
Composable
A registry (
rcp.json) or a catalog-capable aggregator lets a client
target one backend (Selector) or fuse many (Federation).Who is this for?
Engine authors
Implement one server and reach every RCP client.
Agent & IDE builders
Pull grounding context from any engine without bespoke adapters.
Platform teams
Federate several knowledge bases behind one uniform wire.
A ten-line taste
The whole protocol is JSON-RPC. Here is aretrieve round-trip:
Next
Architecture
Roles, the pipeline model, and how RCP sits beside MCP and ACP.
Quickstart
A working engine and client in under five minutes.