MCP e LLM local: conectar servidores MCP a Ollama
O Model Context Protocol (MCP) padroniza a forma como um LLM chama ferramentas externas: leitura de arquivos, requisições web, acesso a uma base de dados. Combinar MCP e Ollama permite rodar um agente capaz de agir na sua máquina, sem nunca enviar seus dados para uma API na nuvem. Este guia mostra como construir um bridge MCP-Ollama em Python, quais modelos locais realmente conseguem usar ferramentas e quais são as verdadeiras limitações dos modelos pequenos.
#O que é MCP e por que ele muda os agentes locais
MCP (Model Context Protocol) é um protocolo aberto publicado pela Anthropic no final de 2024. Seu objetivo: oferecer uma interface única entre um modelo de linguagem e as ferramentas que ele pode usar. Em vez de recodificar uma integração personalizada para cada fonte de dados, um “servidor MCP” expõe ferramentas (tools), recursos (resources) e prompts segundo um formato padrão. Qualquer cliente compatível — Claude Desktop, um IDE ou seu próprio bridge — pode então se conectar a ele.
Na prática, um servidor MCP “filesystem” expõe ferramentas como read_file, write_file ou list_directory. Um servidor “sqlite” expõe query ou list_tables. O LLM nunca fala diretamente com o disco: ele emite uma solicitação de chamada de ferramenta, o cliente a executa via o servidor MCP e depois retorna o resultado para o modelo. Essa separação cliente/servidor é o que torna o protocolo reutilizável.
Para os agentes locais, o desafio é duplo: reutilizar o ecossistema crescente de servidores MCP (já existem dezenas), mantendo a inferência 100% na sua máquina graças ao Ollama. Você obtém um agente que lê seus arquivos e consulta seus bancos de dados sem que um único byte saia da sua rede.
#Por que conectar o MCP ao Ollama
Este guia leva você ao modelo. O kit leva você ao copiloto que programa no seu editor.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
A maioria das demonstrações MCP usa um modelo na nuvem (Claude, GPT). Usar MCP com Ollama localmente muda o cenário em três pontos: a confidencialidade (seus arquivos e consultas SQL não saem), o custo (nenhum token é cobrado, independentemente do volume de chamadas de ferramentas) e o controle (você escolhe o modelo, a quantização e os servidores autorizados).
- Privacidade
- Um servidor MCP filesystem dá ao modelo acesso às suas pastas. Localmente, esse conteúdo nunca passa por terceiros.
- Custo zero
- Os agentes multiplicam os ciclos de chamadas a ferramentas e recebimento de resultados. Na nuvem, cada rodada custa tokens; com o Ollama, isso é gratuito.
- Offline
- Depois que o modelo for baixado e os servidores MCP forem instalados, tudo funciona sem conexão com a internet (exceto, é claro, os servidores web).
- Soberania
- Você decide quais ferramentas ficam expostas e pode auditar cada chamada antes de executá-la.
#Pré-requisitos
- Ollama instalado
- O daemon escuta por padrão em http://localhost:11434. Verifique com « ollama --version ».
- Um modelo capaz de usar ferramentas
- Use pelo menos um Granite 4.2 8B, idealmente um Qwen 3.5 9B para ter confiabilidade (veja a seção seguinte).
- Python 3.10+
- O SDK MCP oficial e o cliente Ollama são escritos em Python.
- Node.js (opcional)
- Muitos servidores MCP de referência são iniciados via npx (@modelcontextprotocol/server-*).
#Quais modelos locais lidam corretamente com tool use
Nem todos os modelos têm o mesmo desempenho em chamadas de função. Um modelo que “conhece” o formato das ferramentas, mas escolhe mal seus argumentos, tornará o agente inutilizável. Na prática, a geração de 2026 (Qwen 3.5, Granite 4.2) torna o uso de ferramentas confiável a partir de 8-9B, enquanto em 2024 era necessário buscar modelos de 14B. Aqui estão as referências que você pode testar com o Ollama e seu consumo de VRAM em Q4_K_M.
- Qwen 3.5 4B / 9B
- Excelente suporte ao uso de ferramentas. O 9B (≈6,6 GB de VRAM em Q4, 256k de contexto, visão) é o melhor equilíbrio entre confiabilidade e hardware para um agente local.
- Granite 4.2 8B
- Uso nativo de ferramentas sólido e muito econômico em tokens (≈5,3 GB em Q4, 128k de contexto). Excelente ponto de entrada com 6 a 8 GB de VRAM.
- Mistral Small 24B
- Function calling sólido e bom nível em francês (≈14 GB em Q4). Lida bem com esquemas de ferramentas um pouco complexos.
- Qwen 3.6 35B-A3B
- MoE muito confiável em cadeias de chamadas (≈23 GB em Q4, apenas 3B ativos, portanto rápido). Reserve-o para GPUs de 24 GB do tipo RTX 4090.
- Modelos 2-3B
- Qwen 3.5 2B ou Granite 4.2 3B cabem em ≈2 GB, mas o desempenho no uso de ferramentas cai rapidamente assim que há várias ferramentas. Evitar para um agente de verdade.
#A bridge MCP-Ollama em Python, passo a passo
Ollama não é um cliente MCP nativo. O papel do bridge é atuar como intermediário: iniciar um servidor MCP, converter suas ferramentas para o formato esperado pela API Ollama, executar o ciclo de chamadas de ferramentas e depois devolver os resultados ao modelo. Usamos o SDK MCP oficial (pacote mcp) e o cliente ollama.
- 011. Iniciar um servidor MCPIniciamos um servidor MCP como subprocesso via stdio. Aqui, o servidor oficial de filesystem, limitado a uma pasta de trabalho passada como argumento.
- 022. Liste e converta as ferramentassession.list_tools() retorna as ferramentas MCP. Nós as transformamos no formato « tools » esperado por /api/chat do Ollama (name, description, inputSchema → parameters).
- 033. Loop de chamadas de ferramentasEnviamos a mensagem do usuário mais a lista de ferramentas. Se o modelo responder com um tool_call, executamos essa chamada no lado do MCP, reintroduzimos o resultado e repetimos o ciclo até obter uma resposta final.
- 044. Retornar a respostaQuando o modelo não solicita mais nenhuma ferramenta, sua última resposta de texto é o resultado final apresentado ao usuário.
#Exemplos de servidores MCP úteis para auto-hospedagem
O valor do MCP vem do catálogo de servidores prontos para uso. A seguir, estão os que trazem mais valor para um agente local, todos podendo ser iniciados via npx ou pip.
- filesystem
- Leitura / gravação de arquivos em uma pasta raiz obrigatória. O mais útil para um agente que trabalha nos seus documentos.
- sqlite / postgres
- Consultar uma base local em linguagem natural. Coloque a conexão no modo somente leitura para evitar qualquer modificação.
- fetch
- Obter e converter uma página da web em texto. O único que pressupõe uma conexão com a internet.
- git
- Explorar um repositório: log, diff, status. Útil para um agente de revisão ou de documentação de código.
- memory
- Um armazenamento persistente de chave-valor que fornece memória de longo prazo ao agente entre as sessões.
#Os limites reais dos modelos pequenos
Uma ponte funcional não garante um bom agente. O elo mais fraco continua sendo o modelo. Nos modelos mais leves (2-4B), vários problemas surgem sistematicamente assim que a tarefa se complica.
- Escolha de ferramenta inadequada
- O modelo chama read_file quando deveria chamar list_directory, ou inventa o nome de uma ferramenta. Comum abaixo de 7B.
- Argumentos malformados
- Caminhos relativos incorretos, JSON inválido nos argumentos. Um bom prompt de sistema e descrições claras das ferramentas atenuam o problema.
- Encadeamentos curtos
- Os modelos pequenos têm dificuldade além de 2-3 chamadas consecutivas e perdem o fio do objetivo.
- Ignorar o resultado
- O modelo chama uma ferramenta e depois responde sem levar em conta o que recebeu. Sintoma clássico de um modelo leve demais.
#Solução de problemas
- O modelo não faz nenhuma tool_call
- Verifique se ele suporta o uso de ferramentas (Qwen 3.5, Granite 4.2) e se o parâmetro “tools” está sendo passado corretamente para /api/chat. Um modelo não compatível ignora as ferramentas.
- « connection refused » na porta 11434
- O daemon Ollama não está em execução. Inicie-o (« ollama serve ») e teste novamente « curl http://localhost:11434/api/tags ».
- O servidor MCP não inicia
- Teste o comando npx / uvx isoladamente em um terminal. Se um servidor Node estiver faltando, instale o pacote correspondente com « npm i -g ».
- Loop infinito de ferramentas
- Adicione um limite de iterações no loop e registre cada tool_call para identificar o modelo que repete a mesma chamada.
#Para se aprofundar
O MCP se apoia nos componentes básicos do ecossistema local. Estes guias relacionados do site complementam este guia:
- Criar um agente de IA local com LangChain e Ollama
- A abordagem clássica de agentes via LangChain, complementar ao MCP para orquestrar ferramentas.
- Integrar Ollama por meio da API REST em Python
- Entender o endpoint compatível com OpenAI e o function calling que fundamentam a bridge.
- Escolher sua quantização (Q4, Q5, Q8, FP16)
- Fazer um Qwen 3.5 9B com uso de ferramentas caber na memória da sua GPU sem sacrificar a confiabilidade.
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.