{"id":647,"date":"2026-08-31T20:30:44","date_gmt":"2026-08-31T23:30:44","guid":{"rendered":"https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/2026\/08\/31\/assistente-ia-pfsense-mcp-restapi\/"},"modified":"2026-08-31T20:37:29","modified_gmt":"2026-08-31T23:37:29","slug":"assistente-ia-pfsense-mcp-restapi","status":"publish","type":"post","link":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/2026\/08\/31\/assistente-ia-pfsense-mcp-restapi\/","title":{"rendered":"Assistente de IA Nativo para pfSense, Endpoint MCP e Corre\u00e7\u00f5es na REST API"},"content":{"rendered":"\n<p><strong>Assistente de IA Nativo para pfSense, Endpoint MCP e Corre\u00e7\u00f5es na REST API: Como transformei um firewall em um agente aut\u00f4nomo e audit\u00e1vel.<\/strong><\/p>\n\n\n\n<p>Pedi ao assistente que instalei no meu firewall: <em>&#8220;fa\u00e7a um ping para o Google.&#8221;<\/em><br>Ele respondeu: <em>&#8220;n\u00e3o consigo executar comandos no firewall.&#8221;<\/em><\/p>\n\n\n\n<p>Minha primeira hip\u00f3tese foi de que faltava alguma integra\u00e7\u00e3o, conector ou MCP. Estava errado. Fui ler o c\u00f3digo que eu mesmo tinha escrito e descobri duas coisas:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n  <li>N\u00e3o havia uma \u00fanica chamada de execu\u00e7\u00e3o no projeto inteiro. O assistente n\u00e3o tinha m\u00e3os.<\/li>\n  <li>O prompt do sistema afirmava: <code>\"Voc\u00ea \u00e9 SOMENTE LEITURA, n\u00e3o consegue aplicar nenhuma mudan\u00e7a.\"<\/code><\/li>\n<\/ol>\n\n\n\n<p>O modelo n\u00e3o estava falhando. Ele estava obedecendo. A grande li\u00e7\u00e3o de engenharia de software aplicada \u00e0 IA: <strong>instru\u00e7\u00e3o desatualizada dentro de um prompt \u00e9 defeito de produto, n\u00e3o erro de configura\u00e7\u00e3o.<\/strong> E n\u00e3o aparece em testes sint\u00e9ticos convencionais, pois o c\u00f3digo estava tecnicamente correto \u2014 o erro era sem\u00e2ntico.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udee1\ufe0f O Desenho de Seguran\u00e7a em 5 Pilares<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/portfolio\/painel-suporte-ia.png\" alt=\"Painel do Suporte IA no pfSense\"\/><figcaption class=\"wp-element-caption\">Painel Suporte IA integrado nativamente ao pfSense CE 2.8.x sem depend\u00eancias externas<\/figcaption><\/figure><\/div>\n\n\n<ul class=\"wp-block-list\">\n  <li><strong>1. Sem Execu\u00e7\u00e3o Crua de Shell:<\/strong> O modelo <em>nunca<\/em> escreve uma linha de comando livre. Ele seleciona uma fun\u00e7\u00e3o dentro de um cat\u00e1logo fechado de 21 ferramentas com argumentos estritamente tipados e validados antes de qualquer chamada.<\/li>\n  <li><strong>2. Duas Vias de Execu\u00e7\u00e3o:<\/strong>\n    <ul>\n      <li><em>Via REST API Local (<code>127.0.0.1\/api\/v2<\/code>):<\/em> Para estado de servi\u00e7os, interfaces, gateways, ARP e concess\u00f5es DHCP (onde o pfSense j\u00e1 aplica autentica\u00e7\u00e3o e valida\u00e7\u00e3o).<\/li>\n      <li><em>Via Bin\u00e1rios Nativos:<\/em> Para diagn\u00f3sticos que a REST API n\u00e3o possui (<code>traceroute<\/code>, <code>drill<\/code> para DNS, <code>netstat -rW<\/code> para rotas, <code>sockstat<\/code> para sockets e <code>pfctl<\/code> para contadores e estados do firewall).<\/li>\n    <\/ul>\n  <\/li>\n  <li><strong>3. A\u00e7\u00f5es com Confirma\u00e7\u00e3o Humana (Human-in-the-Loop):<\/strong> Comandos que alteram o sistema (reiniciar servi\u00e7os, flush de tabela de estados, remo\u00e7\u00e3o de leases) s\u00e3o apenas <em>propostos<\/em> na interface, exigindo clique de confirma\u00e7\u00e3o do operador com aviso expl\u00edcito do impacto.<\/li>\n  <li><strong>4. Documenta\u00e7\u00e3o Viva &amp; Hist\u00f3rico:<\/strong> Gera documenta\u00e7\u00e3o t\u00e9cnica completa do firewall sob demanda e arquiva snapshots autom\u00e1ticos apenas quando h\u00e1 mudan\u00e7a de configura\u00e7\u00e3o real.<\/li>\n  <li><strong>5. Servidor MCP Completo:<\/strong> Exp\u00f5e um endpoint MCP nativo (<code>\/suporte_ia\/mcp.php<\/code>) com as 21 ferramentas de rede e as 690 opera\u00e7\u00f5es da REST API para agentes de IA externos (Claude Code, Gemini CLI, Cursor).<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/portfolio\/recorte-achados.png\" alt=\"Diagn\u00f3stico em tempo real achando anomalias no pfSense\"\/><figcaption class=\"wp-element-caption\">Diagn\u00f3stico inteligente identificando gateways mortos, regras redundantes e anomalias de rede<\/figcaption><\/figure><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udce6 Downloads dos Pacotes e C\u00f3digo-Fonte<\/h2>\n\n\n\n<p>Todos os pacotes foram higienizados e est\u00e3o dispon\u00edveis para download direto abaixo:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n  \n  <div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #e0e0e0;border-radius:8px;padding:16px;background:#f9f9f9;\">\n    <h3 class=\"wp-block-heading\">1. Addon Suporte IA (pfSense)<\/h3>\n    <p>Pacote instal\u00e1vel completo (v1.8.4) compat\u00edvel com pfSense CE 2.8.x.<\/p>\n    <p><a class=\"wp-block-button__link wp-element-button\" style=\"background:#0a66c2;color:#fff;padding:8px 16px;border-radius:4px;text-decoration:none;display:inline-block;font-weight:bold;\" href=\"\/wp-content\/uploads\/downloads\/pfsense-pkg-suporte-ia-1.8.4.tar.gz\" download>\ud83d\udce5 Download Addon (.tar.gz)<\/a><\/p>\n  <\/div>\n  \n\n  \n  <div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #e0e0e0;border-radius:8px;padding:16px;background:#f9f9f9;\">\n    <h3 class=\"wp-block-heading\">2. Patches da REST API<\/h3>\n    <p>Corre\u00e7\u00f5es e melhorias aplicadas sobre o pacote pfSense-pkg-RESTAPI.<\/p>\n    <p><a class=\"wp-block-button__link wp-element-button\" style=\"background:#0a66c2;color:#fff;padding:8px 16px;border-radius:4px;text-decoration:none;display:inline-block;font-weight:bold;\" href=\"\/wp-content\/uploads\/downloads\/pfsense-restapi-fixes.tar.gz\" download>\ud83d\udce5 Download API Patches (.tar.gz)<\/a><\/p>\n  <\/div>\n  \n\n  \n  <div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #e0e0e0;border-radius:8px;padding:16px;background:#f9f9f9;\">\n    <h3 class=\"wp-block-heading\">3. Servidor MCP<\/h3>\n    <p>Servidor MCP standalone para conectar agentes de IA ao firewall.<\/p>\n    <p><a class=\"wp-block-button__link wp-element-button\" style=\"background:#0a66c2;color:#fff;padding:8px 16px;border-radius:4px;text-decoration:none;display:inline-block;font-weight:bold;\" href=\"\/wp-content\/uploads\/downloads\/pfsense-mcp-server.tar.gz\" download>\ud83d\udce5 Download MCP Server (.tar.gz)<\/a><\/p>\n  <\/div>\n  \n<\/div>\n\n\n\n<p>\ud83d\udce6 <strong>C\u00f3digo-fonte completo do projeto:<\/strong> <a href=\"\/wp-content\/uploads\/downloads\/pfsense-suporte-ia-source.tar.gz\" download>Download Suporte IA Source (.tar.gz)<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd12 Reposit\u00f3rios Privados no Painel Git<\/h2>\n\n\n\n<p>O c\u00f3digo-fonte integral e o hist\u00f3rico de commits est\u00e3o versionados em nossa infraestrutura pr\u00f3pria de Git:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>git clone https:\/\/git.programandosolucoes.com.br\/git\/repos\/pfsense-suporte-ia.git\ngit clone https:\/\/git.programandosolucoes.com.br\/git\/repos\/pfsense-restapi-fix-publico.git<\/code><\/pre>\n\n\n\n<p><em>Nota: Reposit\u00f3rios privados. Caso deseje acesso para avalia\u00e7\u00e3o t\u00e9cnica ou parceria, entre em contato diretamente.<\/em><\/p>\n\n\n\n\n<div class=\"wp-block-group has-white-background-color has-background\" style=\"border:2px dashed #0a66c2;padding:20px;border-radius:8px;margin:24px 0;\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n  <h3 class=\"wp-block-heading\" style=\"margin-top:0;color:#0a66c2;\">\ud83d\udcf1 Vers\u00e3o para o LinkedIn (Resumo &amp; Destaques)<\/h3>\n  <p><em>Se voc\u00ea veio pelo LinkedIn ou quer compartilhar este resumo t\u00e9cnico na sua rede, utilize o texto formatado abaixo:<\/em><\/p>\n  <pre class=\"wp-block-preformatted\" style=\"background:#f4f6f8;padding:16px;border-radius:6px;font-size:13.5px;line-height:1.5;white-space:pre-wrap;color:#191919;\"><code>Pedi ao assistente que instalei no meu firewall: &quot;fa\u00e7a um ping para o Google.&quot;\n\nEle respondeu: &quot;n\u00e3o consigo executar comandos no firewall.&quot;\n\nMinha primeira hip\u00f3tese foi de que faltava integra\u00e7\u00e3o ou conector. Fui ler o c\u00f3digo que eu mesmo escrevi e descobri:\n1. N\u00e3o havia uma \u00fanica chamada de execu\u00e7\u00e3o no projeto. O assistente n\u00e3o tinha m\u00e3os.\n2. O prompt dizia categoricamente: &quot;Voc\u00ea \u00e9 SOMENTE LEITURA, n\u00e3o consegue aplicar nenhuma mudan\u00e7a.&quot;\n\nO modelo n\u00e3o estava falhando. Estava obedecendo.\n\nA grande li\u00e7\u00e3o: instru\u00e7\u00e3o desatualizada dentro de um prompt \u00e9 defeito de produto, n\u00e3o erro de configura\u00e7\u00e3o.\n\nReescrevi a arquitetura do zero. Hoje o addon roda dentro do pfSense e o operador interage em portugu\u00eas com execu\u00e7\u00e3o real.\n\nConfira os 3 pilares dessa engenharia:\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u26a1 PILAR 1: Cat\u00e1logo Fechado de 21 Ferramentas\n\u25b8 O modelo NUNCA gera linhas de comando de shell abertas.\n\u25b8 Escolhe fun\u00e7\u00f5es de um cat\u00e1logo fechado de 21 ferramentas, com argumentos tipados e validados antes de qualquer chamada.\n\u25b8 Duas vias: REST API local (127.0.0.1\/api\/v2) para estado\/configura\u00e7\u00e3o e bin\u00e1rios nativos (drill, netstat, sockstat, pfctl, nc) para diagn\u00f3sticos profundos que a API n\u00e3o exp\u00f5e.\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udee1\ufe0f PILAR 2: Seguran\u00e7a &amp; Human-in-the-Loop\n\u25b8 A\u00e7\u00f5es que alteram o firewall (reiniciar servi\u00e7os, flush de estados, remover leases DHCP) s\u00e3o apenas propostas na conversa.\n\u25b8 Execu\u00e7\u00e3o condicionada ao clique expl\u00edcito do operador, com alerta do impacto.\n\u25b8 Documenta\u00e7\u00e3o viva gerada sob demanda e arquivamento autom\u00e1tico apenas quando h\u00e1 mudan\u00e7a real de configura\u00e7\u00e3o.\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udd0c PILAR 3: Endpoint MCP Nativo &amp; REST API Patches\n\u25b8 Servidor MCP embutido (\/suporte_ia\/mcp.php) expondo diagn\u00f3sticos e 690 opera\u00e7\u00f5es da REST API para agentes de IA externos (Claude Code, Gemini CLI, Cursor).\n\u25b8 Corre\u00e7\u00f5es submetidas na REST API oficial do pfSense para garantir estabilidade.\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udce6 Downloads &amp; Artigo T\u00e9cnico Completo:\n\ud83d\udd17 https:\/\/carloslopes.programandosolucoes.com.br\/index.php\/assistente-ia-pfsense-mcp-restapi\/<\/code><\/pre>\n<\/div><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Assistente de IA Nativo para pfSense, Endpoint MCP e Corre\u00e7\u00f5es na REST API: Como transformei um firewall em um agente aut\u00f4nomo e audit\u00e1vel. Pedi ao assistente que instalei no meu firewall: &#8220;fa\u00e7a um ping para o Google.&#8221;Ele respondeu: &#8220;n\u00e3o consigo executar comandos no firewall.&#8221; Minha primeira hip\u00f3tese foi de que faltava alguma integra\u00e7\u00e3o, conector ou [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[110,111,109,117,116,114,115,108,113,112],"class_list":["post-647","post","type-post","status-publish","format-standard","hentry","category-sem-categoria","tag-cybersecurity","tag-devops","tag-firewall","tag-ia","tag-infraestrutura","tag-mcp","tag-modelcontextprotocol","tag-pfsense","tag-php","tag-python"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"br","enabled_languages":["en","br","it"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"br":{"title":false,"content":false,"excerpt":false},"it":{"title":false,"content":false,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/posts\/647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/comments?post=647"}],"version-history":[{"count":2,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/posts\/647\/revisions"}],"predecessor-version":[{"id":655,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/posts\/647\/revisions\/655"}],"wp:attachment":[{"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/media?parent=647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/categories?post=647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/carloslopes.programandosolucoes.com.br\/br\/index.php\/wp-json\/wp\/v2\/tags?post=647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}