RAG ou MCP: qual escolher?

Escolher entre RAG ou MCP é uma das dúvidas mais comuns de quem começa a projetar agentes e aplicações com LLMs. Embora os dois conceitos lidem com contexto, eles operam em camadas distintas e resolvem problemas diferentes.

Neste artigo, você vai entender cada abordagem em profundidade, comparar suas características e descobrir por que a pergunta certa não é "qual escolher", mas sim "como usar os dois juntos".

O problema por trás de RAG ou MCP

Modelos de linguagem aprendem com dados que vão até uma data de corte. Por isso, eles não conhecem os documentos internos da sua empresa nem o estado atual de um banco de dados.

Além disso, um modelo sozinho não consegue executar ações no mundo real. Ele apenas gera texto a partir do que recebe no contexto.

Essa limitação exige que algum mecanismo externo forneça ao modelo as informações e as capacidades que ele não possui nativamente. Assim, a discussão sobre RAG ou MCP nasce exatamente desse ponto.

Cada um ataca o problema por um ângulo próprio. Enquanto o RAG entrega conhecimento, o MCP entrega capacidade de ação.

O que é RAG

RAG é uma técnica de arquitetura que combina recuperação de informações com geração de texto. O nome vem do inglês Retrieval-Augmented Generation, ou seja, geração aumentada por recuperação.

O termo ganhou força com o artigo de Patrick Lewis e outros pesquisadores, publicado em 2020. Nele, os autores combinaram um gerador pré-treinado com um mecanismo de recuperação densa sobre a Wikipédia.

Na prática, o funcionamento básico tem três etapas. Primeiro, o sistema recebe a consulta do usuário; em seguida, busca trechos relevantes em uma base vetorial; por fim, insere esses trechos no contexto antes da geração.

A base de dados vetorial é o componente central do RAG. Nela, cada documento vira uma representação numérica chamada embedding, que captura o significado semântico do texto em um espaço de alta dimensão.

Quando uma consulta chega, o sistema também a converte em um embedding. Em seguida, ele realiza uma busca por similaridade para encontrar os trechos mais próximos.

Com isso, o modelo responde com informações que não fazem parte do seu treinamento. Por exemplo, documentação interna, artigos recentes, contratos e manuais técnicos.

Se você quer aprofundar só esse lado da comparação, o artigo o que é RAG (Retrieval-Augmented Generation) detalha a técnica do zero.

Componentes de um pipeline RAG

Um pipeline RAG bem construído envolve ao menos quatro componentes. São eles: um mecanismo de ingestão de documentos, um modelo de embedding, um banco de dados vetorial e um LLM para a geração final.

A qualidade do resultado depende diretamente de cada etapa. Um documento mal fragmentado, um modelo de embedding inadequado ou uma recuperação ingênua degradam a resposta gerada.

Por isso, cenários de produção costumam exigir técnicas avançadas. Entre elas estão o HyDE (Hypothetical Document Embeddings), o reranking com cross-encoders, a busca híbrida e a expansão de consultas.

A busca híbrida, por exemplo, junta a similaridade vetorial com a busca lexical tradicional. Dessa forma, termos exatos como códigos de produto também entram no resultado.

Quando RAG é a solução certa

O RAG é ideal quando o modelo precisa acessar grandes volumes de documentos textuais não estruturados ou semiestruturados. Nesse caso, a busca vetorial escala bem e mantém o prompt enxuto.

Entre os casos típicos estão chatbots sobre documentação técnica e assistentes de suporte com acesso à base de conhecimento. Também se encaixam a busca semântica em acervos de artigos e a análise de contratos.

Em outras palavras, o RAG brilha quando o problema é "o modelo precisa saber o que está escrito em algum lugar". Ele resolve o problema de conhecimento.

O que é MCP

MCP é um protocolo de comunicação aberto, criado pela Anthropic e lançado em novembro de 2024. Ele padroniza a forma como modelos de linguagem interagem com ferramentas e fontes de dados externas.

O nome completo é Model Context Protocol. O protocolo define uma interface clara entre um cliente, geralmente um agente ou aplicação com LLM, e um servidor que expõe ferramentas, recursos e prompts.

A motivação lembra o que o LSP (Language Server Protocol) representa para os editores de código. Em vez de cada ferramenta construir uma integração própria com cada modelo, existe um protocolo único que todos implementam.

Em dezembro de 2025, a Anthropic doou o MCP para a Agentic AI Foundation, ligada à Linux Foundation. Segundo o anúncio, o ecossistema já reunia mais de 10 mil servidores MCP públicos ativos.

Esse histórico ajuda a entender por que a comparação entre RAG ou MCP ficou tão frequente. Afinal, o protocolo virou padrão de mercado muito rápido.

Para uma introdução completa ao protocolo, vale ler o artigo o que é MCP aqui do blog.

Arquitetura do MCP

A especificação oficial do MCP define três primitivas que um servidor pode expor. São elas as tools, os resources e os prompts.

As tools são funções que o modelo pode invocar para executar ações. Por exemplo, buscar dados em uma API, inserir registros em um banco, enviar notificações ou rodar comandos.

Os resources representam conteúdo que a aplicação lê e anexa ao contexto do modelo. Arquivos, páginas, registros de banco e histórico de um repositório Git são bons exemplos.

Os prompts, por sua vez, são templates reutilizáveis que guiam o modelo em fluxos específicos. Além disso, eles aceitam parâmetros para se adaptar a cada situação.

A especificação também deixa claro quem controla cada primitiva. O modelo controla as tools, a aplicação controla os resources e o usuário controla os prompts.

Transportes e JSON-RPC

A comunicação entre cliente e servidor usa mensagens JSON-RPC 2.0. Para processos locais, o transporte padrão é o stdio, em que o cliente inicia o servidor como subprocesso.

Para servidores remotos, a versão original do protocolo usava HTTP com SSE (Server-Sent Events). Contudo, a revisão de março de 2025 substituiu esse modelo pelo transporte Streamable HTTP.

No Streamable HTTP, o servidor expõe um único endpoint que aceita POST e GET. Então, ele pode responder com JSON simples ou abrir um stream SSE quando precisa enviar várias mensagens.

Quando MCP é a solução certa

O MCP é ideal quando o objetivo é dar ao modelo a capacidade de agir, não apenas de saber. Afinal, a diferença está entre recuperar informação passiva e executar operações com efeitos colaterais.

Entre os casos típicos estão agentes que criam tarefas em gerenciadores de projetos e assistentes que consultam APIs em tempo real. Também entram ferramentas de desenvolvimento que interagem com repositórios e automações que encadeiam vários serviços.

Em resumo, o MCP brilha quando o problema é "o modelo precisa fazer algo no mundo". Ele resolve o problema de capacidade de ação.

Comparação direta entre RAG ou MCP

Para tornar a escolha entre RAG ou MCP mais concreta, vale observar as duas abordagens lado a lado. A tabela abaixo resume os pontos principais.

Critério RAG MCP
Camada Contexto textual do prompt Execução de ferramentas
Momento Antes da geração Durante a geração
Efeitos colaterais Nenhum Pode alterar sistemas externos
Dados ideais Corpora grandes e pouco voláteis Dados ao vivo e operações transacionais
Previsibilidade Mais alta Mais variável

O RAG opera no nível do contexto textual e injeta informação no prompt antes da geração. Dessa forma, o resultado é sempre uma resposta baseada no texto recuperado, sem efeitos no mundo externo.

O MCP, por outro lado, opera no nível da execução. Ele permite que o modelo chame funções reais, receba resultados estruturados e decida com base em dados ao vivo.

Latência e determinismo de RAG e MCP

Em termos de latência, o RAG adiciona o tempo da busca vetorial antes da geração. Já o MCP adiciona o tempo das chamadas de rede às ferramentas durante a geração.

Quanto ao determinismo, o RAG tende a ser mais previsível, porque o conteúdo recuperado é estável para uma mesma consulta. Enquanto isso, o MCP varia mais, já que o modelo decide quais ferramentas chamar e em qual ordem.

Portanto, ao comparar RAG ou MCP nesse eixo, considere quanto de autonomia o seu sistema realmente precisa. Mais autonomia significa mais flexibilidade, mas também mais pontos de falha.

Escopo dos dados

Em termos de escopo, o RAG funciona melhor com corpora grandes e estáticos, ou de atualização pouco frequente. Afinal, todo documento novo precisa passar pela ingestão e pela vetorização.

O MCP, em contrapartida, acessa dados estruturados diretamente pela API de origem.

Nesse eixo, a escolha entre RAG ou MCP depende de quão rápido a informação muda. Assim, a informação chega sempre atualizada e sem etapa de indexação.

Por que RAG ou MCP se complementam

A pergunta "RAG ou MCP" pressupõe uma escolha excludente. No entanto, os sistemas mais robustos usam as duas abordagens de forma complementar.

Considere um agente de suporte técnico. Quando o usuário pergunta como configurar um produto, o agente usa RAG para recuperar os trechos relevantes da documentação.

Quando o mesmo usuário relata um erro específico, o agente usa uma tool MCP para consultar o histórico de tickets em tempo real. Em seguida, ele verifica a versão instalada e abre um novo chamado automaticamente.

Nesse cenário, o RAG resolve o acesso ao conhecimento acumulado. Enquanto isso, o MCP resolve o acesso a dados ao vivo e a execução de ações transacionais.

Outro exemplo é um assistente de desenvolvimento de software. O RAG recupera trechos de código de uma base de exemplos internos, enquanto o MCP executa código em sandbox e consulta dependências no npm ou no PyPI.

Além disso, o mesmo assistente pode verificar o status de um pipeline de CI/CD e criar um pull request no GitHub via MCP. A combinação forma um sistema que sabe o que foi documentado e age sobre o que acontece agora.

RAG exposto como tool MCP

Existe ainda uma terceira via, que dissolve de vez o dilema entre RAG ou MCP. Um servidor MCP pode expor uma tool de busca que, internamente, executa todo o pipeline RAG.

Dessa forma, o agente decide sozinho quando precisa consultar a base de conhecimento. O RAG continua cuidando da recuperação, e o MCP cuida da forma padronizada de expor essa capacidade.

RAG ou MCP na prática com .NET e C#

No ecossistema .NET, tanto RAG quanto MCP contam com suporte maduro. Por isso, a decisão entre RAG ou MCP passa mais pelo problema do que pela disponibilidade de bibliotecas.

Bibliotecas para RAG

Para RAG, o pacote Microsoft.Extensions.VectorData.Abstractions oferece abstrações para trabalhar com bancos vetoriais de forma agnóstica. Assim, você escreve o código uma vez e troca o provedor depois.

Há implementações para Qdrant, Azure AI Search, SQL Server, Cosmos DB, MongoDB e Elasticsearch, entre outros. Além disso, a documentação de bancos vetoriais para .NET recomenda o provedor em memória apenas para protótipos.

A ingestão de documentos, por sua vez, pode ser orquestrada com Microsoft.Extensions.DataIngestion, ainda em preview. A biblioteca encadeia leitores, processadores, estratégias de chunking e writers em um IngestionPipeline<T>.

Esse tema ganhou um artigo próprio no blog, sobre ingestão de dados para aplicações .NET com RAG.

SDK oficial do MCP em C#

Para MCP, o SDK oficial em C# permite criar servidores que expõem ferramentas e recursos, além de clientes que se conectam a servidores existentes. O pacote ModelContextProtocol.AspNetCore integra tudo ao ASP.NET Core.

O exemplo abaixo registra um servidor com transporte Streamable HTTP e descobre automaticamente as classes marcadas como tools.

var builder = WebApplication.CreateBuilder(args);

// Registra o servidor MCP com transporte HTTP e descobre as tools do assembly
builder.Services
    .AddMcpServer()
    .WithHttpTransport()
    .WithToolsFromAssembly();

var app = builder.Build();

// Expõe o endpoint MCP em /mcp
app.MapMcp("/mcp");

app.Run();

Em seguida, uma classe pode expor a busca na base de conhecimento como tool. Nesse caso, o RAG vira uma capacidade acessível via MCP.

using System.ComponentModel;
using Microsoft.Extensions.VectorData;
using ModelContextProtocol.Server;

[McpServerToolType]
public sealed class KnowledgeBaseTools(VectorStoreCollection<Guid, DocumentChunk> collection)
{
    [McpServerTool(Name = "search_knowledge_base")]
    [Description("Searches the internal documentation and returns the most relevant excerpts.")]
    public async Task<IReadOnlyList<string>> SearchAsync(
        [Description("The user question in natural language")] string query,
        CancellationToken cancellationToken)
    {
        var results = new List<string>();

        // Busca vetorial: o embedding da consulta é gerado pelo gerador configurado na coleção
        await foreach (var result in collection.SearchAsync(query, top: 3, cancellationToken: cancellationToken))
        {
            results.Add(result.Record.Content);
        }

        return results;
    }
}

public sealed class DocumentChunk
{
    [VectorStoreKey]
    public Guid Id { get; set; }

    [VectorStoreData]
    public string Content { get; set; } = string.Empty;

    [VectorStoreVector(1536)]
    public string Embedding => Content;
}

Com isso, qualquer cliente MCP, como o GitHub Copilot ou um agente próprio, passa a consultar a documentação interna. Quem quiser conhecer o SDK a fundo pode ler sobre o lançamento da versão 1 do SDK oficial do MCP para C#.

Microsoft Agent Framework

O Microsoft Agent Framework chegou à versão 1.0 em abril de 2026, com APIs estáveis para .NET e Python. Ele sucede o Semantic Kernel e o AutoGen e reúne as duas abordagens em um único orquestrador.

Os agentes do framework consomem servidores MCP como ferramentas e usam provedores de contexto com busca vetorial para RAG. Assim, em uma arquitetura multiagente, cada especialista pode ter suas próprias tools MCP e seu próprio índice vetorial.

Na prática, o framework torna a dúvida entre RAG ou MCP uma questão de configuração de cada agente. Ou seja, você não precisa abrir mão de nenhuma das duas.

Critérios para decidir entre RAG ou MCP

Para orientar a decisão entre RAG ou MCP, responda algumas perguntas sobre o problema em mãos. As respostas costumam apontar o caminho com clareza.

  • Informação em documentos textuais estáticos ou de atualização lenta pede RAG.
  • Informação que precisa vir em tempo real de um sistema transacional pede MCP.
  • Quando o objetivo é formular uma resposta com base em conhecimento, o RAG resolve.
  • Já para executar uma tarefa com efeito no mundo, o MCP resolve.
  • Com volume grande e não estruturado, o RAG escala melhor graças à busca vetorial.
  • Por fim, dados estruturados e acessíveis via API ficam mais simples com MCP, sem vetorização.

Em sistemas de agentes complexos, porém, a decisão raramente é binária. Por isso, o design de cada agente deve considerar quais fontes de conhecimento ele usa e quais ações ele executa.

Cuidados de segurança com RAG e MCP

Com o MCP, o modelo decide quais ferramentas chamar, então a autorização merece atenção redobrada. Defina escopos restritos e implemente autenticação adequada nos servidores.

Além disso, a especificação pede que servidores HTTP validem o cabeçalho Origin para evitar ataques de DNS rebinding. Em contextos críticos, inclua também uma confirmação humana antes de ações irreversíveis.

No RAG, o cuidado principal está no controle de acesso aos documentos indexados. Afinal, um trecho recuperado vai direto para o contexto e pode expor informação sensível.

Conclusão

A escolha entre RAG ou MCP não é uma competição. Na verdade, as duas abordagens operam em dimensões diferentes do problema de construir sistemas inteligentes com LLMs.

O RAG trata de conhecimento: recuperar o que está escrito e documentado e injetar no contexto do modelo. O MCP trata de capacidade: padronizar a interface entre o modelo e o mundo externo.

Sistemas de produção que levam IA a sério vão precisar, na maioria dos casos, das duas. Portanto, entender os limites de cada uma é o que separa uma arquitetura bem projetada de uma solução frágil.

Se você quer continuar a comparação com outros padrões, leia também agents ou MCP: qual escolher e MCP ou A2A: qual escolher.

FAQ

RAG e MCP podem ser usados no mesmo sistema?

Sim, eles operam em camadas distintas e costumam aparecer juntos. Um agente pode usar RAG para recuperar conhecimento e MCP para executar ações no mesmo fluxo.

Preciso de um banco de dados vetorial para usar RAG?

Na maioria dos casos, sim, com opções como Qdrant, Pinecone, Azure AI Search e Chroma. Também existem abordagens com busca lexical (BM25) ou híbrida, mas a vetorial é a mais comum.

MCP substitui o function calling dos LLMs?

Não, o MCP é uma camada de padronização acima do function calling. O modelo continua chamando funções por baixo, mas por meio de uma interface reutilizável.

Quais são os riscos de usar MCP em produção?

Os principais riscos envolvem autorização e escopo das ferramentas. Por isso, use escopos restritos, autenticação nos servidores e confirmação humana em ações irreversíveis.

RAG funciona bem com documentos em português?

Sim, desde que o modelo de embedding seja multilíngue ou treinado com dados em português. Modelos como o text-embedding-3-large da OpenAI têm boa cobertura para o idioma.

É possível usar RAG dentro de um servidor MCP?

Sim, um servidor MCP pode expor uma tool como search_knowledge_base que executa a busca vetorial internamente. Dessa forma, o RAG vira uma capacidade acessível via MCP.