Disclosure: Jarvis AI is a product of ASCENDING Inc., which publishes Explore Agentic. We flag every page that discusses Jarvis and mark comparison tables that include it. Our editorial policy is on the About page.

Comparison · Architecture

MCP vs RAG: a protocol, a pattern, and when you need both

RAG vs MCP is a false choice: RAG answers from your own documents, MCP lets agents call tools across systems, and agents that need grounded answers and actions use both. RAG is a May 2020 retrieval pattern; MCP is the open protocol Anthropic open-sourced on November 25, 2024, now at revision 2026-07-28.

Contributing Writer · Retrieval & Evaluation
Reviewed by Alexander Groman
11 minutes · Updated October 11, 2026 · Last verified
Editor's verdict

Use RAG when the job is answering from your own documents with citations. Use MCP when an agent has to call tools across systems, or when several AI clients need the same integrations. Use both, the usual enterprise answer, when agents need grounded answers and actions: expose retrieval as an MCP tool and handle identity, permissions and audit at an MCP gateway. They are not rivals: RAG is a pattern, and MCP is one way an agent reaches it.

Scorecard
Category Model Context Protocol Retrieval-Augmented Generation
What kind of thing is it?
Open protocol (current revision 2026-07-28)
Architectural pattern (Lewis et al., 2020)
What problem does it solve?
How AI clients discover and call tools, resources and prompts
Grounding model output in retrieved documents
Where does it live?
Between each client and server (the wire)
Inside a server or application, behind an API or an MCP tool
Who decides what a user may see?
Not the protocol: the server, or the MCP gateway in front of it
The retriever, and only if the end user's identity reaches it
Are they composable?
Yes: a RAG pipeline is a common MCP server
Yes: retrieval exposed as one or more MCP tools

The RAG vs MCP framing mistake

The question we hear most ("should we use MCP or RAG?") contains a category error. MCP is a protocol. RAG is a pattern. Asking which to pick is like asking whether to use HTTP or a database. Different layers, and most production systems end up running both.

The dates make the point. Anthropic open-sourced MCP on November 25, 2024 [1]. RAG is older: it comes from a May 22, 2020 arXiv paper, "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" [2], by Patrick Lewis and co-authors at Facebook AI Research (FAIR), University College London and New York University, published at NeurIPS 2020 [3]. MCP is four and a half years younger. It is not a successor to RAG. It is a different kind of thing.

What MCP actually does (revision 2026-07-28)

MCP standardizes how an AI application talks to the servers that hold tools and context, using JSON-RPC 2.0 messages. Servers offer three primitives: Prompts (user-controlled), Resources (application-controlled) and Tools (model-controlled) [17]. On the client side, the current revision, 2026-07-28, lists one feature, Elicitation, which lets a server ask the user for more input. The same revision made the protocol stateless: every request is self-contained [4]. Roots and Sampling still work but are deprecated, and can be removed in the first revision released on or after July 28, 2027 [5].

MCP does not say where your data lives or how to retrieve it. It says how to ask, so any MCP client can use any MCP server without a custom integration. Anthropic's November 2024 release shipped the specification and SDKs, local MCP server support in the Claude Desktop apps, and pre-built servers for Google Drive, Slack, GitHub, Git, Postgres and Puppeteer [1]. On December 9, 2025, Anthropic donated MCP to the Agentic AI Foundation, a directed fund under the Linux Foundation co-founded by Anthropic, Block and OpenAI [6]. Our MCP pillar covers the governance arc.

What RAG actually does

RAG is a pattern, not a spec. Three steps. Retrieve candidate passages. Pass them to a model as context. Generate an answer grounded in them. The 2020 paper paired a BART generator with a Dense Passage Retriever (DPR) over a December 2018 Wikipedia dump, split into 21 million 100-word chunks and indexed with FAISS [3]. The industry kept the shape and swapped every part.

In production the retriever can be vector search (FAISS, Pinecone, Weaviate, pgvector), keyword search (Elasticsearch, OpenSearch), a knowledge graph, or a hybrid with a re-ranker on top. Chunking, embeddings, re-ranking and evals decide quality, and permission filtering decides who sees what; our Enterprise RAG pillar covers them chapter by chapter.

Behind MCP, a RAG server often stops at retrieval and leaves generation to the client's model. Azure AI Search's generally available API version, 2026-04-01, works this way: retrieval is extractive and the MCP connection returns grounding data only [7].

How MCP and RAG fit together in production

In a realistic enterprise deployment the agent uses MCP to reach a set of servers, often through an MCP gateway, and one of those servers is a RAG implementation over your corpus. The agent does not know it is calling RAG; it is calling a tool that returns relevant context. The RAG server does not know the agent's plan; it received a query and returned passages.

This is no longer a whiteboard pattern. Microsoft documents that each Azure AI Search knowledge base is a standalone MCP server exposing a knowledge_base_retrieve tool [7]. AWS Labs publishes an Amazon Bedrock Knowledge Base Retrieval MCP server [8]. Glean enables a remote MCP server by default for eligible tenants [9], and every Pinecone Assistant gets a dedicated MCP server with a context tool [10].

A three-layer architecture diagram. At the top an Agent / MCP client box lists Claude, ChatGPT, Copilot, Cursor and your own chat. An ochre arrow drops into a wide MCP band labelled as the JSON-RPC wire between client and server, carrying the server-side Prompts, Resources and Tools primitives, with Elicitation as the client-side feature and Roots and Sampling marked deprecated. Three arrows fan out to servers below: an ochre-tinted RAG server over your corpus, a tool server for Jira, Slack and Snowflake, and Anthropic's November 2024 reference servers.
Because RAG sits behind the same wire as every other tool, you can swap the retriever or swap the agent without touching the other.

Two details trip up planning. The tool shape varies: Azure exposes one retrieval tool, while the Bedrock server exposes three (list, query and agentic query), and its setup requires at least one knowledge base tagged mcp-multirag-kb=true [8]. And built in is not the same as switched on: Weaviate's MCP server ships inside the database from v1.38 but is disabled by default when self-hosted [11].

The separation is the point of a protocol. Swap the retriever (a new vector store, hybrid search, GraphRAG) without touching the agent, or swap the agent without touching retrieval. For the practitioner version, with the integration arithmetic and the failure modes of picking only one, see how ASCENDING composes MCP and RAG in one stack (ASCENDING publishes this site).

When to use MCP, RAG or both

Start from the job. If success means "the answer cited the right document", RAG is the substantive architecture. If success means "the agent finished the task across three systems", MCP is. On client work we usually find both jobs on the same roadmap.

A decision tree. A root box asking what the job is splits into Grounding, where the answer must cite the right document, and Orchestration, where one plan spans Jira, Slack and Snowflake. Four leaf boxes follow: RAG alone for one model and one source; RAG behind MCP once there are more tools or more clients; MCP first for tool composability; and both from day one, with gateway-enforced audit and citation provenance, for regulated, auditable or multi-vendor stacks. An ochre band notes where the production stacks we review usually land: the agent reaches retrieval over MCP, often through an MCP gateway, and that retrieval layer is RAG.
Only RAG alone stays single-layer for good; the MCP-first leaf adds retrieval once answers must be grounded, and the other two run RAG behind MCP.
Decision matrix: MCP, RAG or both (October 2026)
ScenarioWhat you actually need
Single assistant that must answer from your private docsRAG is the substantive architecture; MCP is optional until you add tools or clients
Agent that must call Jira, Slack and Snowflake in one planMCP for tool composability; add retrieval only if answers must be grounded
Assistant over 10,000 permission-controlled documentsRAG with a retriever that filters by the end user's identity; expose it via MCP once more than one client needs it
Regulated deployment that must show who retrieved whatBoth: RAG with citation provenance, behind an MCP gateway that authenticates the user, authorizes each tool call and writes the audit record
Proof of concept: one model, one data sourceRAG alone; MCP wrapping adds moving parts before you need them
Multi-client stack (Claude, Copilot, Cursor, your own chat)MCP, with RAG inside one or more of the servers

When not to use MCP: one application calling one retrieval service you own, with no second client in sight. A function call or plain API is simpler. When not to build your own RAG pipeline: when the source system already offers permission-aware search over MCP. Glean's remote MCP server, for example, is permission-aware, with each person using their own Glean access [9]. A second index over the same content mostly buys you a second set of permissions to keep in sync.

MCP vs RAG on deployment, identity, audit, transports and hosting

Five rows decide whether an MCP or RAG design survives production review: deployment model, identity and access control, audit logging, supported MCP transports and hosting. They fit a protocol and a pattern awkwardly, which is informative: wherever a cell says "not defined", the answer has to come from your implementation or your MCP gateway.

MCP vs RAG on the five production-review rows (last verified October 11, 2026)
RowMCP (protocol)RAG (pattern)
Deployment modelClient-server: an AI application connects through MCP clients to servers running as local subprocesses (stdio) or remote HTTP endpoints [12].A pipeline you build or buy (ingest, index, retrieve, optionally generate), shipped inside an application, as a search service, or wrapped as an MCP server.
Identity and access controlAuthorization is optional. Over HTTP the spec's OAuth 2.1-based flow makes the server a resource server that publishes RFC 9728 metadata and rejects tokens issued for another audience [13]. The spec requires servers to implement proper access controls on tools [14]; with many servers, that policy usually moves to an MCP gateway in front of them.Not defined by the pattern. Document-level filtering depends on the retriever and on whether the end user's identity reaches it [7] [8].
Audit loggingNot defined by the protocol. The spec says clients should log tool usage for audit; uniform JSON-RPC messages make that easy at a client or gateway [14].Not defined by the pattern. A record of which passages went to which user exists only if your retriever or application writes one.
Supported MCP transportsstdio and Streamable HTTP in revision 2026-07-28, plus custom transports; Streamable HTTP replies with one JSON object or a request-scoped SSE stream [12]. The older HTTP+SSE transport has been deprecated since 2025-03-26 [5].None of its own. Reached through an application API or, once wrapped as an MCP server, over that server's transport.
HostingNot defined by the protocol. Servers run on a user's machine, in your cloud, or as vendor-hosted endpoints such as Glean's remote MCP server [9] or Pinecone Assistant's per-assistant server [10].Wherever the index and retriever run: a managed service (Azure AI Search, Amazon Bedrock Knowledge Bases, Elastic), a vector database you operate, or a library in your app.

Governing retrieval once it is exposed over MCP

Once a RAG pipeline answers over MCP, the hard questions move. They stop being about embedding models and become: who is asking, may they call this tool, which documents may they see, and what record is kept. The spec leaves most of that to implementers; it says plainly that MCP cannot enforce its security principles at the protocol level [4].

An MCP gateway fills the gap: one endpoint in front of many servers that authenticates the user, decides per tool what that user may call, holds downstream credentials and keeps the record. Our guide to how regulated enterprises choose an MCP gateway covers selection, and the MCP gateway glossary entry has the short definition. For retrieval, five things decide whether governance holds:

  • Pass the user, not only the service. Azure AI Search's query-time permission enforcement (in preview) returns unfiltered results for indexed sources when the user identity is omitted [7]. The Bedrock server cannot reach ACL-protected SharePoint, OneDrive or Confluence content without a user_id [8]. Elastic's MCP endpoint over an API key is one shared identity; over OAuth 2.1 on Elastic Cloud Serverless, each user acts with their own permissions [15].
  • Scope discovery to the caller. Revision 2026-07-28 lets tools/list vary by the authorization on each request, so two users can see different retrieval tools behind one endpoint [14].
  • Keep private results private. Revision 2026-07-28 puts cache hints on discovery, list results and resources/read. A response marked cacheScope: "private", such as a permission-filtered tools/list or a user-dependent resources/read, may be reused only for the same authorization context; caches must not be shared across contexts [16]. Retrieval returned through tools/call carries no cache hint at all, so a gateway that caches retrieval results per tool instead of per user turns a cache hit into a data leak.
  • Name tools for aggregation. Two RAG servers that both expose search collide behind one endpoint; the spec says aggregators should disambiguate, for example by prefixing tool names with a server identifier, and warns that a server's self-reported name is not guaranteed to be unique [14].
  • Log the retrieval, not just the call. An auditor wants who asked, which tool, which documents came back and under which policy. The protocol writes none of that. Check what your gateway and your retriever each record.

Disclosure: ASCENDING, which publishes this site, builds Jarvis Registry. The Jarvis MCP gateway is customer-hosted in your AWS or Azure environment and exposes one Registry Endpoint that lists only the MCP servers the signed-in user may access, under RBAC scopes and resource ACLs that cover MCP servers and their tools, private by default until shared. It stores downstream OAuth credentials encrypted at rest, refreshes tokens, supports per-user credentials and keeps raw credentials from the client. ASCENDING describes Jarvis Knowledge Base as enterprise retrieval exposed through that gateway as a governed tool. On logging, Jarvis's published docs cover OpenTelemetry and Prometheus metrics for MCP activity, including latency, but do not specify per-call payload or policy-snapshot logging.

Frequently asked

  1. When should I use MCP, RAG or both?

    Pick RAG when the answer must cite your own documents; MCP when an agent has to act across systems or several AI clients share the same tools; both when agents need grounded answers and actions, which is the common enterprise case. In that setup retrieval is one MCP tool, the end user's identity reaches the retriever, and an MCP gateway enforces authorization and audit. One model over one source you own needs neither the protocol nor the gateway yet: plain RAG is simpler.
  2. What is the difference between MCP and RAG?

    MCP is a protocol; RAG is a pattern. MCP (Model Context Protocol) standardizes how an AI application discovers and calls tools, resources and prompts on a server, using JSON-RPC 2.0 messages [4]. RAG (Retrieval-Augmented Generation) grounds a model's output in passages retrieved from a corpus [2]. MCP is how the agent talks to tools. A RAG pipeline is one tool it can talk to.
  3. Do I need MCP if I already have RAG?

    Not while one application calls one retriever you own. You need MCP when a second tool or a second AI client arrives: Claude, Copilot, Cursor and your own chat would otherwise each need a custom integration to the same retrieval endpoint. At that point, wrap the existing endpoint as an MCP server instead of inventing a new calling convention, and decide whose identity it acts under, the end user's or one shared service account.
  4. Can a RAG system be an MCP server?

    Yes, and vendors now ship it that way. Each Azure AI Search knowledge base is a standalone MCP server with a knowledge_base_retrieve tool [7], AWS Labs publishes a Bedrock Knowledge Base retrieval MCP server [8], and every Pinecone Assistant has its own MCP server [10]. Some expose one retrieval tool, others several. Pass the end user's identity through, or permission-aware retrieval may not filter.
  5. Is RAG obsolete now that MCP exists?

    No. MCP carries tool calls and context; RAG retrieves and grounds. What MCP replaces is the custom API each client used to call your retriever. The index, the re-ranker and the evals stay where they are, and RAG is still how a model answers from documents it was not trained on.
References

Sources & citations

Each [n] above points here. URLs go to the publisher's canonical page. The access date is the day we last opened the link and confirmed the cited claim was still on the page. If a source has rotted, file a correction at /about#corrections.

  1. [1]
    Anthropic . Introducing the Model Context Protocol
    https://www.anthropic.com/news/model-context-protocol · accessed 2026-10-11

    November 25, 2024 announcement: the specification and SDKs, local MCP server support in the Claude Desktop apps, and an open-source repository with pre-built servers for Google Drive, Slack, GitHub, Git, Postgres and Puppeteer.

  2. [2]
    arXiv (Lewis et al.) . Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
    https://arxiv.org/abs/2005.11401 · accessed 2026-10-11

    First submitted May 22, 2020; accepted at NeurIPS 2020. Authors: Lewis, Perez, Piktus, Petroni, Karpukhin, Goyal, Küttler, M. Lewis, Yih, Rocktäschel, Riedel, Kiela.

  3. [3]
    NeurIPS . Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (camera-ready)
    https://proceedings.neurips.cc/paper/2020/file/6b493230205f780e1bc26945df7481e5-Paper.pdf · accessed 2026-10-11

    NeurIPS 2020 version. Affiliations: Facebook AI Research, University College London, New York University. DPR retriever, BART generator, December 2018 Wikipedia dump in 21M 100-word chunks, FAISS index.

  4. [4]
    Model Context Protocol . Specification, revision 2026-07-28
    https://modelcontextprotocol.io/specification/2026-07-28 · accessed 2026-10-11

    Current revision. JSON-RPC 2.0; server primitives Prompts, Resources and Tools; Elicitation as the client feature; stateless, self-contained requests; security principles MCP cannot enforce at the protocol level.

  5. [5]
    Model Context Protocol . Deprecated Features (revision 2026-07-28)
    https://modelcontextprotocol.io/specification/2026-07-28/deprecated · accessed 2026-10-11

    Roots, Sampling and Logging deprecated in 2026-07-28, earliest removal in the first revision on or after 2027-07-28. HTTP+SSE transport deprecated since 2025-03-26.

  6. [6]
    Anthropic . Donating the Model Context Protocol and establishing the Agentic AI Foundation
    https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation · accessed 2026-10-11

    December 9, 2025: MCP donated to the Agentic AI Foundation (AAIF), a directed fund under the Linux Foundation co-founded by Anthropic, Block and OpenAI.

  7. [7]
    Microsoft Learn . Query Knowledge Base via API or MCP - Azure AI Search
    https://learn.microsoft.com/en-us/azure/search/agentic-retrieval-how-to-retrieve · accessed 2026-10-11

    Each knowledge base is a standalone MCP server exposing knowledge_base_retrieve. API version 2026-04-01 (GA) returns extractive grounding data only. Query-time permission enforcement (preview): for indexed sources, results are unfiltered if the end user's identity is omitted.

  8. [8]
    GitHub (awslabs/mcp) . Amazon Bedrock Knowledge Base Retrieval MCP Server
    https://github.com/awslabs/mcp/tree/main/src/bedrock-kb-retrieval-mcp-server · accessed 2026-10-11

    Tools ListKnowledgeBases, QueryKnowledgeBases and AgenticQueryKnowledgeBases; setup requires at least one knowledge base tagged mcp-multirag-kb=true; without user_id, ACL-protected SharePoint, OneDrive and Confluence content is inaccessible.

  9. [9]
    Glean Developer . Remote MCP Server
    https://developers.glean.com/guides/mcp · accessed 2026-10-11

    Glean enables the OAuth authorization server and Remote MCP Server by default for eligible tenants; the server is tenant-specific and permission-aware, and each person uses their own Glean access.

  10. [10]
    Pinecone . Use an Assistant MCP server
    https://docs.pinecone.io/guides/assistant/mcp-server · accessed 2026-10-11

    Every Pinecone Assistant has a dedicated MCP server; it supports a context tool that returns relevant snippets from the assistant's files.

  11. [11]
    Weaviate . Weaviate MCP server
    https://docs.weaviate.io/weaviate/configuration/mcp-server · accessed 2026-10-11

    Built-in MCP server added in v1.38; disabled by default on self-hosted instances, always enabled on Weaviate Cloud.

  12. [12]
    Model Context Protocol . Transports (revision 2026-07-28)
    https://modelcontextprotocol.io/specification/2026-07-28/basic/transports · accessed 2026-10-11

    Standard transports are stdio and Streamable HTTP; custom transports allowed. Streamable HTTP replies with a JSON object or a request-scoped SSE stream.

  13. [13]
    Model Context Protocol . Authorization (revision 2026-07-28)
    https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization · accessed 2026-10-11

    Authorization is optional; HTTP transports should conform. The MCP server is an OAuth 2.1 resource server, implements RFC 9728 Protected Resource Metadata and must validate that tokens were issued for it.

  14. [14]
    Model Context Protocol . Tools (revision 2026-07-28)
    https://modelcontextprotocol.io/specification/2026-07-28/server/tools · accessed 2026-10-11

    tools/list may vary by the authorization on each request; aggregators should disambiguate colliding tool names, e.g. with a server-identifier prefix (not the serverInfo name); servers must implement access controls; clients should log tool usage for audit purposes.

  15. [15]
    Elastic . Elastic Agent Builder MCP server
    https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/mcp-server · accessed 2026-10-11

    Built-in MCP endpoint at {KIBANA_URL}/api/agent_builder/mcp (GA on Serverless and Elastic Stack 9.3+). An API key is one shared identity; OAuth 2.1 (Serverless) acts with each user's own permissions.

  16. [16]
    Model Context Protocol . Caching (revision 2026-07-28)
    https://modelcontextprotocol.io/specification/2026-07-28/server/utilities/caching · accessed 2026-10-11

    Cache hints (ttlMs, cacheScope) are required on server/discover, list results and resources/read. A "private" response may be reused for the same authorization context; caches must not be shared across authorization contexts. Servers must not rely on cacheScope alone to prevent unauthorized access.

  17. [17]
    Model Context Protocol . Server Features (revision 2026-07-28)
    https://modelcontextprotocol.io/specification/2026-07-28/server · accessed 2026-10-11

    Control hierarchy: Prompts user-controlled, Resources application-controlled, Tools model-controlled.