Cometi o erro de carregar cada servidor MCP em meu agente de codificação, mas agora estou fazendo isso

A razão pela qual os usuários demoraram tanto para ver o valor real da IA ​​na produtividade, além de escrever e-mails para seu chefe e criar apresentações de slides para você, é porque as ferramentas não foram originalmente integradas às ferramentas que você usa todos os dias. Fiz um grande esforço para conectar ferramentas de IA com outros softwares que uso diariamente, e você verá meu perfil de autor repleto deles. Por exemplo, NotebookLM é minha ferramenta de IA favorita e o combinei com praticamente todas as ferramentas existentes. Desde aplicativos de anotações como Notion, Evernote e Apple Notes até softwares criativos como Adobe e Canva, Excel e outras ferramentas de IA como Gemini e Copilot, eu fiz tudo.

No entanto, quase todo esse emparelhamento foi feito manualmente. Tive que alternar entre aplicativos, copiar e colar conteúdo manualmente e mover itens para mim. O Model Context Protocol (MCP) prometeu acabar com tudo isso, permitindo que o LLM acessasse diretamente as ferramentas sem que eu tivesse que fazer nada. Então, quando comecei a codificar agentes, fiz o óbvio: adicionei todos os servidores MCP que pude encontrar. Entre você e eu, essa não foi minha jogada mais inteligente.

Cada servidor MCP conectado é carregado na memória do agente antes de iniciar

Conectado não é o mesmo que gratuito

O que não percebi quando adicionei servidor após servidor é que as ferramentas MCP não estão disponíveis gratuitamente. Eles custam algo apenas para conectar, quer eu os use ou não. Se você não está tão familiarizado com esse conceito quanto eu no início, deixe-me explicar primeiro. Seu agente de codificação possui uma janela de contexto. Esta é uma quantidade fixa de texto que o modelo pode manter em mente de uma só vez, medida em tokens, que são aproximadamente pedaços de palavras. Tudo com que o agente trabalha deve caber nesse orçamento, incluindo as instruções do próprio sistema, o histórico de conversas, os arquivos de código que ele lê e uma descrição de cada ferramenta disponível. Esta última parte é onde os servidores MCP entram em ação. Ao conectar o servidor, ele carrega uma definição completa de cada ferramenta que oferece, incluindo o nome da ferramenta, sua operação, parâmetros e como chamá-la, na janela de contexto. Com um punhado de ferramentas, quase não faz diferença.

O problema é que o MCP facilitou a adição e eu fiz. Cada servidor com um README decente chegou à minha configuração. Eu tinha servidores NotebookLM MCP construídos pela comunidade, todos os aplicativos da Adobe para os quais pude encontrar, Canva, Notion, Slack, Gmail, servidores de codificação regulares como GitHub, um servidor de banco de dados, Vercel, Playwright, alguns conectados aos meus anotadores de reuniões, como Read AI e outros. Cada uma delas tem seu próprio conjunto de ferramentas, e cada uma dessas ferramentas tem sua própria definição, todas as quais são carregadas independentemente de a tarefa na frente do agente exigir ou não. O resultado é que grande parte da janela de contexto do agente desaparece antes que ele faça algo útil.

O código de Claude funciona melhor se você parar de pedir a ele para codificá-lo

O código de Claude se tornou muito mais útil quando parei de pensar nele como um gerador de código e comecei a usá-lo para dar sentido a projetos e ao caos terminal.

Serei honesto sobre meus números, já que eles estão marcados com estrela: limpei meus servidores MCP recentemente, então a configuração que vou mostrar já foi eliminada da bagunça que acabei de descrever com toda a conexão. Não tenho uma captura de tela da pior pilha original. Mas mesmo depois dessa limpeza, quando desativo a pesquisa de ferramentas (um recurso que agora carrega definições de ferramentas apenas quando necessário, mais sobre isso mais tarde) e deixo todas as minhas ferramentas pré-carregadas como estavam, minha janela de contexto mostra 141.000 marcadores consumidos por definições de ferramentas antes de eu digitar uma única palavra. Se eu usar um modelo com janela de contexto de 200k, esses 141k poderiam engolir cerca de 70% de tudo o que o agente tem para trabalhar.

Neste exemplo, estou usando um modelo de 1 milhão de tokens, portanto, os mesmos 141k têm 14% mais capacidade de sobrevivência. No entanto, as definições de ferramentas ainda ocupam espaço que prefiro dedicar ao trabalho real. Esses custos também não precisam ser pagos uma vez. Se as ferramentas forem carregadas desta forma, o conjunto completo de definições será reenviado com cada mensagem porque o modelo não possui memória entre os turnos. Então você paga essa sobrecarga para cada troca, não apenas na inicialização.

Esse problema também se refere à codificação real. A janela de contexto tem o mesmo orçamento que o agente usa para armazenar seu código, portanto, cada token gasto em definições de ferramentas é um token que não pode ser gasto nos arquivos nos quais deveria trabalhar. Preencha o suficiente da janela antes de começar, e o agente ficará sem espaço mais cedo, perderá o controle das partes anteriores da tarefa e atingirá os limites mais cedo no trabalho muito longo e com vários arquivos, onde a ajuda é mais necessária. Além disso, quanto mais instrumentos na frente do modelo ao mesmo tempo, mais sua tarefa muda de “como resolver isso” para “qual desses quarenta e tantos instrumentos soa mais próximo do que acabou de ser perguntado”. Se várias ferramentas tiverem nomes quase idênticos, pode-se chegar à ferramenta errada ou parar na seleção.

Claude Code agora lida com a maior parte disso automaticamente

Acontece que a correção já estava ativada

Claude Kod agora resolve a maioria dos problemas que acabei de descrever com a pesquisa do kit de ferramentas. Em vez de carregar todas as definições de ferramentas antecipadamente, ele as tira do contexto até que a tarefa realmente precise delas, depois pesquisa a lista e inclui apenas as poucas que são relevantes. Está ativado por padrão, então na maioria das vezes esse inchaço é gerenciado sem que eu precise fazer nada. A única razão pela qual vi o número 141.000 antes é porque desativei propositalmente a ferramenta de pesquisa para mostrar como era antes. Possui uma única variável de ambiente e quando executado com ENABLE_TOOL_SEARCH=false carrega tudo da maneira antiga. Geralmente permanece ligado durante a execução.

Então fiz a configuração nos dois sentidos, na mesma máquina em intervalos de minutos e verifiquei o/context a cada vez. Com a pesquisa de ferramentas desativada, todas as 172 ferramentas foram totalmente carregadas e 141.000 tokens desapareceram antes de eu digitar um nome. Quando ativado, as mesmas 172 ferramentas apareceram como 0 tokens. Eles foram simplesmente guardados até que algo precisasse deles. Atribuí a ambas as sessões uma tarefa idêntica e observei quanto custavam realmente as ferramentas quando o agente tinha que usá-las. Quando desligado, as ferramentas MCP permaneciam fixadas em 141k o tempo todo. Eles então passaram de 0 para apenas 2,6k, pouco antes da tarefa. Ele foi projetado para fazer o mesmo trabalho com exatamente as mesmas ferramentas disponíveis, mas gastou 50 vezes menos em definições.

Agora verifico meus servidores MCP regularmente

Lista curta de convidados

Embora a opção Pesquisa de ferramentas signifique que Claude Code faz a maior parte da solução de problemas para mim, ela cria armadilhas. Como o custo restante basicamente acabou, não há mais uma penalidade visível por conectar tudo como fiz antes. 172 ferramentas em repouso me custaram 0 – quer eu as tenha selecionado ou não. Portanto, a tentação é voltar ao hábito que me causou problemas em primeiro lugar. No entanto, ainda existem alguns motivos para manter a lista restrita. Primeiro, quando um agente procura suas ferramentas, uma lista mais estreita e menos redundante significa que ele escolhe uma das poucas ferramentas claramente distintas, em vez de cinco coisas chamadas de alguma variante de send_message.

Menos quase duplicatas significa menos chance de obter o errado. A Pesquisa de ferramentas restringiu o campo escolhido, mas não consegue diferenciar entre duas ferramentas quase idênticas melhor do que eu, portanto, quanto mais fina for minha lista, mais limpa ela será.

A segunda razão não tem nada a ver com tokens. Cada servidor ao qual me conecto pode agir em meu nome – ler meus arquivos, usar APIs, postar em minhas contas. O servidor do Gmail pode enviar e-mails; o servidor de banco de dados pode executar consultas; Um servidor Slack pode enviar mensagens às pessoas. Deixar toda essa conexão como padrão dá acesso ao vivo às minhas contas em todas as sessões, independentemente de a tarefa exigir ou não. Estreitar o conteúdo significa não revelar tanto a superfície como o contexto.

Então o que faço agora é verificar o que está conectado e desligar tudo que não usarei nesta sessão. O código de Claude lista todos os servidores conectados no painel /mcp e, desde a atualização recente, mostra o número de ferramentas ao lado de cada servidor para que eu possa ver rapidamente quais servidores são mais importantes. A partir daí posso desabilitar o servidor para a sessão atual com claude mcp desativar e reative-o com claude mcp habilitar – nenhum deles toca em meus arquivos de configuração, então é uma troca de sessão, não uma mudança permanente.

Para qualquer coisa que eu queira por padrão, em vez de caso a caso, eu adiciono aos McpjsonServers desativados em minhas configurações, o que rejeita totalmente esses servidores. Os dois ou três que eu realmente preciso por turno têm o oposto: definir AlwaysLoad: true no servidor .mcp.json o libera de adiar a Pesquisa de Ferramentas, para que suas ferramentas estejam sempre carregadas e prontas! Com esta configuração, minha sessão inicial começa fraca. A busca por ferramentas redefine a maioria das minhas ferramentas, os servidores que nunca quero desligar completamente e os dois ou três em que confio o tempo todo estão carregados e prontos sem uma ação de pesquisa. Eu só alcanço as opções de desabilitar/habilitar sessão quando um trabalho específico requer algo além desse nível básico.

As habilidades geralmente fazem o trabalho que você procurava para um servidor

Há uma etapa relacionada que ajuda antes mesmo de você chegar à lista de servidores, e é sobre a diferença que percebi: os servidores MCP dão ao agente acesso a um sistema que de outra forma não seria capaz de alcançar, mas muito do que eu usei para eles, não houve acesso algum. Em vez disso, foi um procedimento. Não “conecte-me a esta API”, mas “aqui quero que esta tarefa seja executada”.

A segunda categoria não requer servidor. Requer habilidade. Uma habilidade é apenas uma pasta com um arquivo de tag que descreve como fazer algo, e Claude apenas carrega seu nome e uma breve descrição na inicialização, lendo todas as instruções apenas quando a tarefa realmente corresponde. É a mesma ideia sob demanda que o Tool Search usa para conhecimento, não para ferramentas, e é por isso que muitas habilidades permanecem baratas: a maioria das minhas fica entre 40 e 170 tokens cada, até que algo as exija.

No entanto, se você deseja que um agente acesse algo (seu Gmail, seu banco de dados, seu navegador online), é o servidor MCP e não há substituto para ele. Mas se você quiser seguir um procedimento que você explicaria sempre, como formatar um commit, como estruturar um certo tipo de arquivo ou quais etapas do fluxo de trabalho você repete, essa é uma habilidade que custa quase nada para manter. Um teste aproximado que vi e gostei é que se você tiver mais habilidade do que os servidores MCP, provavelmente está se inclinando para o lado certo; se for o contrário, é provável que você pague por opções que poderiam ser expressas de forma mais barata.

Link da fonte