{"id":2328,"date":"2025-07-05T10:00:00","date_gmt":"2025-07-05T08:00:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2328"},"modified":"2026-08-05T17:24:43","modified_gmt":"2026-08-05T15:24:43","slug":"model-context-protocol-mcp-n8n","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/pt-pt\/2025\/07\/05\/model-context-protocol-mcp-n8n\/","title":{"rendered":"Model Context Protocol (MCP) explicado de forma clara \u2013 com exemplo em n8n"},"content":{"rendered":"<p>Quem constr\u00f3i agentes de IA conhece o problema: para cada fun\u00e7\u00e3o de um servi\u00e7o ligado \u00e9 preciso definir uma ferramenta pr\u00f3pria. Procurar, criar, alterar e apagar uma entrada de calend\u00e1rio \u2013 s\u00e3o logo quatro blocos separados, e isso apenas para um \u00fanico servi\u00e7o. Com muitas liga\u00e7\u00f5es, o esfor\u00e7o de manuten\u00e7\u00e3o cresce na mesma propor\u00e7\u00e3o. O <strong>Model Context Protocol (MCP)<\/strong> segue outra abordagem: normaliza a forma como um modelo de linguagem comunica com um servi\u00e7o \u2013 e reduz drasticamente o n\u00famero de blocos necess\u00e1rios. Este artigo resume o conceito e um exemplo pr\u00e1tico concreto com n8n.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\">\n<strong>O essencial em resumo<\/strong><\/p>\n<ul>\n<li>O MCP normaliza a forma como um modelo de linguagem compreende o contexto de um servi\u00e7o \u2013 ou seja, o que ele sabe fazer e como se fala com ele.<\/li>\n<li>Em vez de ligar cada fun\u00e7\u00e3o separadamente, basta um <em>servidor MCP<\/em> (\u00e0 frente do servi\u00e7o) e um <em>cliente MCP<\/em> (no agente).<\/li>\n<li>O agente precisa apenas de dois passos: <em>listar<\/em> fun\u00e7\u00f5es (List Tools) e <em>executar<\/em> fun\u00e7\u00f5es (Execute Tool).<\/li>\n<li>No n8n isto reproduz-se com uma vari\u00e1vel de ambiente, um n\u00f3 da comunidade e duas ferramentas de cliente MCP.<\/li>\n<li>O MCP \u00e9 uma tecnologia recente: existem preocupa\u00e7\u00f5es de seguran\u00e7a conhecidas \u2013 em ambientes produtivos conv\u00e9m ter cuidado.<\/li>\n<\/ul>\n<\/div>\n<figure style=\"margin:28px 0;\"><img decoding=\"async\" src=\"https:\/\/pletzenauer.com\/wp-content\/uploads\/2026\/06\/1488-1.png\" alt=\"Compara\u00e7\u00e3o em duas colunas: \u00e0 esquerda a liga\u00e7\u00e3o cl\u00e1ssica de uma ferramenta por fun\u00e7\u00e3o, com muitos blocos; \u00e0 direita o MCP com apenas dois passos, List Tools e Execute Tool.\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">Compara\u00e7\u00e3o em duas colunas: \u00e0 esquerda a liga\u00e7\u00e3o cl\u00e1ssica de uma ferramenta por fun\u00e7\u00e3o, com muitos blocos; \u00e0 direita o MCP com apenas dois passos, List Tools e Execute Tool.<\/figcaption><\/figure>\n<h2>O que o MCP resolve<\/h2>\n<p>A ideia base do Model Context Protocol est\u00e1 no nome: um modelo de linguagem deve compreender o <strong>contexto<\/strong> de uma aplica\u00e7\u00e3o. Em concreto: o que faz esta aplica\u00e7\u00e3o? Para que serve? E como executo a\u00e7\u00f5es dentro dela?<\/p>\n<p>Classicamente, ao construir agentes liga-se cada ferramenta individualmente \u2013 cada fun\u00e7\u00e3o \u00e9 um bloco pr\u00f3prio. No Google Calendar, por exemplo: uma ferramenta para procurar entradas, outra para atualizar, outra para apagar, outra para criar. Quatro fun\u00e7\u00f5es para um servi\u00e7o. Em agentes complexos com muitos servi\u00e7os ligados, isto soma rapidamente dezenas de blocos.<\/p>\n<h2>Servidor, cliente e o esquema uniforme<\/h2>\n<p>O MCP trabalha com dois pap\u00e9is:<\/p>\n<ul>\n<li><strong>Servidor MCP:<\/strong> coloca-se \u00e0 frente do servi\u00e7o propriamente dito (p. ex. Airbnb ou Google Calendar) e descreve como se pode interagir com esse servi\u00e7o.<\/li>\n<li><strong>Cliente MCP:<\/strong> fica no agente e consulta e invoca as fun\u00e7\u00f5es do servidor.<\/li>\n<\/ul>\n<p>Na implementa\u00e7\u00e3o atual \u2013 por exemplo no n8n \u2013 bastam para isso dois passos em vez de muitas ferramentas isoladas:<\/p>\n<ol>\n<li><strong>List Tools (listar):<\/strong> o agente pergunta ao servidor que fun\u00e7\u00f5es est\u00e3o dispon\u00edveis.<\/li>\n<li><strong>Execute Tool (executar):<\/strong> o agente invoca uma fun\u00e7\u00e3o concreta com os par\u00e2metros adequados.<\/li>\n<\/ol>\n<p>O decisivo \u00e9 o <strong>esquema uniforme<\/strong>. Independentemente do servi\u00e7o que esteja por tr\u00e1s: a resposta a um pedido List Tools tem sempre a mesma estrutura. Cont\u00e9m, por fun\u00e7\u00e3o, o nome, uma descri\u00e7\u00e3o e um esquema com os par\u00e2metros permitidos. Os conte\u00fados e os par\u00e2metros diferem de servi\u00e7o para servi\u00e7o \u2013 a estrutura mant\u00e9m-se constante. \u00c9 exatamente isso que o protocolo define e normaliza.<\/p>\n<h3>Um exemplo com a ferramenta Airbnb<\/h3>\n<p>Se perguntarmos ao agente que possibilidades oferece a ferramenta Airbnb, ele vai buscar a lista de fun\u00e7\u00f5es atrav\u00e9s da pr\u00f3pria ferramenta List Tools. De volta v\u00eam, entre outras:<\/p>\n<ul>\n<li><strong>Airbnb Search:<\/strong> pesquisa de ofertas com filtros e pagina\u00e7\u00e3o \u2013 por exemplo localiza\u00e7\u00e3o, data de check-in e check-out, n\u00famero de adultos, crian\u00e7as, beb\u00e9s e animais de estima\u00e7\u00e3o, bem como intervalo de pre\u00e7os.<\/li>\n<li><strong>Airbnb Listing Details:<\/strong> informa\u00e7\u00e3o detalhada sobre uma oferta espec\u00edfica atrav\u00e9s do respetivo listing ID.<\/li>\n<\/ul>\n<p>O agente n\u00e3o precisou de receber nada previamente definido \u2013 obteve por si pr\u00f3prio as fun\u00e7\u00f5es dispon\u00edveis, as suas descri\u00e7\u00f5es e o esquema de par\u00e2metros. No esquema v\u00ea-se, por exemplo, um campo de texto <code>location<\/code> (cidade, regi\u00e3o, etc.), os campos de data para check-in e check-out, o n\u00famero de adultos e o pre\u00e7o m\u00ednimo e m\u00e1ximo.<\/p>\n<p>Se depois fizermos um pedido concreto \u2013 por exemplo um alojamento em Banguecoque para seis pessoas at\u00e9 50 euros por noite \u2013, o agente procede em duas fases: chama primeiro List Tools (n\u00e3o guardou nada, porque n\u00e3o h\u00e1 mem\u00f3ria ativa), reconhece pelo esquema os par\u00e2metros necess\u00e1rios e executa a pesquisa atrav\u00e9s de Execute Tool. O resultado \u2013 por exemplo um alojamento com tr\u00eas camas por cerca de 35 euros por noite \u2013 regressa, e isto com apenas duas ferramentas adicionadas. Se o Airbnb oferecesse mais fun\u00e7\u00f5es, por exemplo para gerir an\u00fancios pr\u00f3prios, estas seriam cobertas pelo mesmo esquema, sem definir mais blocos.<\/p>\n<h2>Como reproduzir o MCP no n8n<\/h2>\n<p>Os passos seguintes mostram a configura\u00e7\u00e3o com o exemplo do Airbnb. Presta-se bem a experi\u00eancias, porque n\u00e3o \u00e9 necess\u00e1ria qualquer chave de API.<\/p>\n<ol>\n<li><strong>Definir a vari\u00e1vel de ambiente:<\/strong> defina <code>N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE<\/code> como <code>true<\/code>. Isso permite que os n\u00f3s da comunidade acedam a ferramentas. Numa instala\u00e7\u00e3o com Docker (p. ex. num servidor Hetzner), introduza isto na sec\u00e7\u00e3o <code>environment<\/code> do ficheiro <code>docker-compose<\/code> e reinicie a inst\u00e2ncia.<\/li>\n<li><strong>Criar o AI-Agent:<\/strong> crie um AI-Agent e associe-lhe um modelo (no v\u00eddeo, GPT-4.1 Mini).<\/li>\n<li><strong>Instalar o n\u00f3 da comunidade:<\/strong> em <em>Settings &rarr; Community Nodes<\/em> instale o pacote <code>n8n-nodes-mcp<\/code> e confirme o aviso sobre a instala\u00e7\u00e3o de c\u00f3digo n\u00e3o verificado proveniente de fontes p\u00fablicas.<\/li>\n<li><strong>Adicionar a ferramenta de cliente MCP:<\/strong> no sinal de mais junto a <em>Tools<\/em> procure por \u201eMCP\u201c. Aten\u00e7\u00e3o: n\u00e3o confundir com a <em>MCP Client Tool<\/em> pr\u00f3pria do n8n \u2013 a variante da comunidade reconhece-se pelo s\u00edmbolo da caixa e \u00e9 atualmente mais completa.<\/li>\n<li><strong>Criar as credenciais:<\/strong> como tipo de liga\u00e7\u00e3o existem Command Line, Server-Sent Events e HTTP Streamable. No exemplo fica-se por Command Line. Os valores corretos est\u00e3o no reposit\u00f3rio do respetivo servidor MCP, na sec\u00e7\u00e3o sobre a instala\u00e7\u00e3o. Para o Airbnb: comando <code>npx<\/code>, argumentos introduzidos passo a passo \u2013 <code>-y<\/code>, o pacote <code>@openbnb\/mcp-server-airbnb<\/code> e, opcionalmente, <code>--ignore-robots-txt<\/code>.<\/li>\n<\/ol>\n<blockquote><p><strong>Nota sobre robots.txt:<\/strong> a op\u00e7\u00e3o <code>--ignore-robots-txt<\/code> ignora as regras de acesso de um site. Para uma demonstra\u00e7\u00e3o \u00e9 aceit\u00e1vel \u2013 em ambientes produtivos deve respeitar o robots.txt dos respetivos servi\u00e7os.<\/p><\/blockquote>\n<h3>Configurar as duas opera\u00e7\u00f5es<\/h3>\n<p>De seguida precisa de duas ferramentas de cliente MCP com opera\u00e7\u00f5es diferentes:<\/p>\n<ul>\n<li><strong>List Tools:<\/strong> d\u00ea \u00e0 ferramenta o nome \u201eAirbnb List Tools\u201c, por exemplo, e indique na descri\u00e7\u00e3o que serve para obter todas as ferramentas Airbnb dispon\u00edveis. Um clique de teste (Execute Step) deve devolver a conhecida lista de fun\u00e7\u00f5es com nome, descri\u00e7\u00e3o e esquema.<\/li>\n<li><strong>Execute Tool:<\/strong> uma segunda ferramenta de cliente MCP com a opera\u00e7\u00e3o Execute Tool. Descri\u00e7\u00e3o: para executar ferramentas Airbnb, que podem ser listadas atrav\u00e9s da ferramenta List Tools. O nome da ferramenta \u00e9 passado como expression, para que o agente decida sozinho que fun\u00e7\u00e3o invoca; os par\u00e2metros da ferramenta deixa-os livres, para que ele os determine tamb\u00e9m.<\/li>\n<\/ul>\n<p>Depois de arrumar e guardar, o agente pode ser testado \u2013 por exemplo novamente com o pedido de Banguecoque. Vai buscar a lista de fun\u00e7\u00f5es, devolve-a ao modelo, decide-se pela pesquisa e entrega alojamentos adequados. Exatamente o comportamento da parte conceptual, agora no seu pr\u00f3prio fluxo de trabalho.<\/p>\n<h2>Para al\u00e9m do n8n \u2013 e uma palavra sobre seguran\u00e7a<\/h2>\n<p>O MCP n\u00e3o se limita a plataformas de automatiza\u00e7\u00e3o. Tamb\u00e9m aplica\u00e7\u00f5es de desktop como o Claude Desktop se podem ligar a servidores MCP. Assim \u00e9 poss\u00edvel delegar tarefas no chat a programas instalados localmente \u2013 um exemplo muito citado \u00e9 o controlo do software 3D Blender por MCP, em que uma pessoa sem conhecimentos de Blender cria renderiza\u00e7\u00f5es. O servidor MCP corre localmente, o modelo de linguagem continua a funcionar atrav\u00e9s do servi\u00e7o na nuvem.<\/p>\n<p>Com todo o entusiasmo, vale o seguinte: o MCP \u00e9 um desenvolvimento recente. J\u00e1 existem <strong>preocupa\u00e7\u00f5es de seguran\u00e7a<\/strong> e foram encontradas falhas de seguran\u00e7a. Sobretudo em ambientes produtivos, a tecnologia deve ser usada com cautela \u2013 vale a pena acompanhar a evolu\u00e7\u00e3o antes de assentar processos cr\u00edticos sobre ela.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>O Model Context Protocol \u00e9 uma abordagem pragm\u00e1tica de normaliza\u00e7\u00e3o: um modelo de linguagem aprende, atrav\u00e9s de um servidor MCP, o que um servi\u00e7o sabe fazer e como se fala com ele \u2013 em vez de predefinir cada fun\u00e7\u00e3o individualmente. Para agentes de IA complexos isso significa visivelmente menos blocos e menos manuten\u00e7\u00e3o; no exemplo com n8n bastam dois passos: listar e executar. A abordagem \u00e9 convincente, mas ainda recente. Quem a experimentar deve come\u00e7ar por servi\u00e7os n\u00e3o cr\u00edticos e, em ambientes produtivos, levar a s\u00e9rio as quest\u00f5es de seguran\u00e7a em aberto.<\/p>\n<p><strong>Fonte:<\/strong> <a href=\"https:\/\/www.youtube.com\/watch?v=ujHOD52ybyo\" target=\"_blank\" rel=\"noopener\">Model Context Protocol (MCP): Erkl\u00e4rung &amp; n8n Tutorial (Deutsch)<\/a> \u2013 canal de YouTube Philip Thomas, em alem\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O que \u00e9 o Model Context Protocol (MCP) e como simplifica os agentes de IA? Conceito, exemplo pr\u00e1tico com n8n e Airbnb e indica\u00e7\u00f5es de seguran\u00e7a em resumo.<\/p>\n","protected":false},"author":0,"featured_media":1503,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2328","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/posts\/2328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=2328"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/posts\/2328\/revisions"}],"predecessor-version":[{"id":2918,"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/posts\/2328\/revisions\/2918"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/media\/1503"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=2328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=2328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=2328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}