{"id":1070,"date":"2026-09-03T08:00:00","date_gmt":"2026-09-03T11:00:00","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/?p=1070"},"modified":"2026-08-13T14:26:52","modified_gmt":"2026-08-13T17:26:52","slug":"mcp-model-context-protocol-conectando-ia-ferramentas","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/mcp-model-context-protocol-conectando-ia-ferramentas\/","title":{"rendered":"MCP (Model Context Protocol): Conectando IA \u00e0s Suas Ferramentas de Verdade"},"content":{"rendered":"<p>Imagine a seguinte cena. Voc\u00ea est\u00e1 usando um assistente de IA para acelerar seu trabalho e pede algo simples: &#8220;verifique se existe algum ticket aberto no nosso sistema de suporte relacionado a esse erro de timeout&#8221;. A resposta vem educada, bem escrita, mas completamente in\u00fatil: &#8220;n\u00e3o tenho acesso ao seu sistema de suporte, mas posso te ajudar a pensar em poss\u00edveis causas do erro&#8221;. Voc\u00ea copia manualmente informa\u00e7\u00f5es do ticket, cola no chat, espera a an\u00e1lise, copia a resposta, cola de volta no sistema. Repita esse ciclo dez vezes ao dia, com dez ferramentas diferentes \u2014 Jira, banco de dados, GitHub, planilhas, sistema de logs \u2014 e voc\u00ea percebe que est\u00e1 gastando mais tempo fazendo a ponte entre a IA e suas ferramentas do que efetivamente sendo ajudado por ela.<\/p>\n<p>Esse \u00e9 o problema estrutural que a maioria dos assistentes de IA carregava at\u00e9 pouco tempo atr\u00e1s: eles s\u00e3o excelentes para raciocinar sobre texto, mas isolados do mundo real das ferramentas que voc\u00ea usa todos os dias. Cada integra\u00e7\u00e3o era um projeto pr\u00f3prio, com autentica\u00e7\u00e3o pr\u00f3pria, formato de dados pr\u00f3prio e manuten\u00e7\u00e3o pr\u00f3pria. N\u00e3o existia um padr\u00e3o comum \u2014 era como se cada fabricante de eletr\u00f4nico exigisse um plugue diferente na parede.<\/p>\n<p>O <strong>Model Context Protocol (MCP)<\/strong> nasceu exatamente para resolver isso. \u00c9 um protocolo aberto, criado pela Anthropic e hoje adotado por diversos players do ecossistema, que define uma forma padronizada de conectar modelos de IA a fontes de dados e ferramentas externas. Neste artigo, vamos entender o que \u00e9 o MCP, como ele funciona por dentro, e construir exemplos pr\u00e1ticos de servidores e clientes MCP em c\u00f3digo.<\/p>\n<h2>O problema da integra\u00e7\u00e3o fragmentada<\/h2>\n<p>Antes de entrar no MCP propriamente, vale entender por que ele existe. Historicamente, quando voc\u00ea queria que um LLM interagisse com um sistema externo \u2014 um banco de dados, uma API de terceiros, o sistema de arquivos local \u2014 voc\u00ea tinha duas op\u00e7\u00f5es:<\/p>\n<ul>\n<li><strong>Function calling propriet\u00e1rio<\/strong>: cada provedor de LLM (OpenAI, Anthropic, Google) tem seu pr\u00f3prio formato de defini\u00e7\u00e3o de ferramentas, exigindo c\u00f3digo de integra\u00e7\u00e3o espec\u00edfico para cada plataforma.<\/li>\n<li><strong>Plugins ou extens\u00f5es fechadas<\/strong>: solu\u00e7\u00f5es amarradas a uma ferramenta espec\u00edfica de IA, sem reaproveitamento em outros contextos.<\/li>\n<\/ul>\n<p>O resultado pr\u00e1tico era o que na engenharia de software chamamos de <em>problema N\u00d7M<\/em>: se voc\u00ea tem N assistentes de IA e M ferramentas, seria necess\u00e1rio construir N\u00d7M integra\u00e7\u00f5es diferentes. Toda vez que surgia um novo assistente, era preciso reescrever as integra\u00e7\u00f5es do zero.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> o problema N\u00d7M \u00e9 o mesmo motivo pelo qual o USB substituiu conectores propriet\u00e1rios no mundo do hardware, e por que o SQL padronizou o acesso a bancos de dados relacionais diferentes. Padr\u00f5es abertos reduzem custo de integra\u00e7\u00e3o de forma multiplicativa, n\u00e3o apenas somada. Veja a especifica\u00e7\u00e3o oficial em <a href=\"https:\/\/modelcontextprotocol.io\" target=\"_blank\" rel=\"noopener\">modelcontextprotocol.io<\/a>.<\/p><\/blockquote>\n<h2>O que \u00e9 o MCP, na pr\u00e1tica<\/h2>\n<p>O MCP resolve o problema N\u00d7M transformando-o em um problema N+M. Em vez de cada assistente de IA precisar conhecer os detalhes de cada ferramenta, existe um protocolo comum: qualquer ferramenta que &#8220;fale&#8221; MCP pode ser usada por qualquer assistente que &#8220;entenda&#8221; MCP.<\/p>\n<p>A arquitetura tem tr\u00eas pe\u00e7as centrais:<\/p>\n<ul>\n<li><strong>Host<\/strong>: a aplica\u00e7\u00e3o de IA que o usu\u00e1rio interage diretamente (Claude Desktop, Claude Code, um editor com IA integrada, um agente customizado).<\/li>\n<li><strong>Client MCP<\/strong>: o componente embutido no host que gerencia a comunica\u00e7\u00e3o com os servidores MCP, mantendo uma conex\u00e3o dedicada com cada um.<\/li>\n<li><strong>Server MCP<\/strong>: um processo independente que exp\u00f5e capacidades \u2014 dados, ferramentas, prompts \u2014 seguindo o protocolo. \u00c9 o servidor que sabe conversar com o Postgres, com o GitHub, com o sistema de arquivos, etc.<\/li>\n<\/ul>\n<p>A comunica\u00e7\u00e3o segue o padr\u00e3o <strong>JSON-RPC 2.0<\/strong>, podendo trafegar via stdin\/stdout (para servidores locais) ou HTTP com Server-Sent Events (para servidores remotos). O protocolo define tr\u00eas tipos principais de capacidades que um servidor pode expor:<\/p>\n<ul>\n<li><strong>Tools<\/strong>: fun\u00e7\u00f5es que o modelo pode invocar, como <code>query_database<\/code> ou <code>create_issue<\/code>.<\/li>\n<li><strong>Resources<\/strong>: dados que podem ser lidos e injetados no contexto, como o conte\u00fado de um arquivo ou o resultado de uma consulta.<\/li>\n<li><strong>Prompts<\/strong>: templates reutiliz\u00e1veis que padronizam intera\u00e7\u00f5es comuns, como um prompt de revis\u00e3o de c\u00f3digo com par\u00e2metros pr\u00e9-definidos.<\/li>\n<\/ul>\n<h3>Uma analogia \u00fatil<\/h3>\n<p>Pense no MCP como o padr\u00e3o HTTP para navegadores. O navegador (host) n\u00e3o precisa saber os detalhes internos de cada site; ele apenas fala HTTP, e qualquer servidor que implemente HTTP corretamente \u00e9 acess\u00edvel. O MCP faz o mesmo para assistentes de IA e ferramentas: o assistente n\u00e3o precisa de c\u00f3digo customizado para cada integra\u00e7\u00e3o, apenas precisa saber falar MCP.<\/p>\n<h2>Construindo seu primeiro servidor MCP<\/h2>\n<p>Vamos construir um exemplo pr\u00e1tico em Python, usando o SDK oficial. O cen\u00e1rio: um servidor MCP simples que exp\u00f5e uma ferramenta para consultar o status de builds em um pipeline de CI fict\u00edcio.<\/p>\n<pre><code># pip install mcp\n\nfrom mcp.server.fastmcp import FastMCP\n\nmcp = FastMCP(\"ci-status-server\")\n\n# Simula\u00e7\u00e3o de um banco de dados de builds\nBUILDS = {\n    \"build-101\": {\"status\": \"success\", \"branch\": \"main\", \"duration_seconds\": 142},\n    \"build-102\": {\"status\": \"failed\", \"branch\": \"feature\/mcp\", \"duration_seconds\": 58},\n}\n\n@mcp.tool()\ndef get_build_status(build_id: str) -&gt; dict:\n    \"\"\"Retorna o status de um build espec\u00edfico do pipeline de CI.\"\"\"\n    build = BUILDS.get(build_id)\n    if not build:\n        return {\"error\": f\"Build {build_id} n\u00e3o encontrado\"}\n    return build\n\n@mcp.tool()\ndef list_failed_builds() -&gt; list:\n    \"\"\"Lista todos os builds com status de falha.\"\"\"\n    return [\n        {\"id\": build_id, **info}\n        for build_id, info in BUILDS.items()\n        if info[\"status\"] == \"failed\"\n    ]\n\nif __name__ == \"__main__\":\n    mcp.run(transport=\"stdio\")\n<\/code><\/pre>\n<p>Esse c\u00f3digo, com poucas linhas, j\u00e1 exp\u00f5e duas ferramentas que qualquer host compat\u00edvel com MCP pode descobrir e invocar automaticamente. N\u00e3o \u00e9 necess\u00e1rio escrever prompts explicando &#8220;aqui est\u00e3o as fun\u00e7\u00f5es dispon\u00edveis&#8221; \u2014 o protocolo cuida da descoberta e da negocia\u00e7\u00e3o de capacidades.<\/p>\n<p>O SDK oficial est\u00e1 documentado em <a href=\"https:\/\/github.com\/modelcontextprotocol\/python-sdk\" target=\"_blank\" rel=\"noopener\">github.com\/modelcontextprotocol\/python-sdk<\/a>, e h\u00e1 tamb\u00e9m vers\u00f5es para <a href=\"https:\/\/github.com\/modelcontextprotocol\/typescript-sdk\" target=\"_blank\" rel=\"noopener\">TypeScript<\/a>, ampliando o alcance para quem trabalha no ecossistema Node.<\/p>\n<h3>Conectando o servidor a um host<\/h3>\n<p>Para usar esse servidor no Claude Desktop, por exemplo, basta declarar sua execu\u00e7\u00e3o no arquivo de configura\u00e7\u00e3o:<\/p>\n<pre><code>{\n  \"mcpServers\": {\n    \"ci-status\": {\n      \"command\": \"python\",\n      \"args\": [\"\/caminho\/para\/ci_server.py\"]\n    }\n  }\n}\n<\/code><\/pre>\n<p>Ao reiniciar o host, ele inicia o processo do servidor, realiza o handshake do protocolo e passa a expor as ferramentas <code>get_build_status<\/code> e <code>list_failed_builds<\/code> como op\u00e7\u00f5es que o modelo pode acionar durante a conversa, sem que voc\u00ea precise reescrever prompts a cada sess\u00e3o.<\/p>\n<h2>Servidores MCP para casos reais de desenvolvimento<\/h2>\n<p>A for\u00e7a do MCP est\u00e1 no ecossistema de servidores j\u00e1 dispon\u00edveis para as ferramentas que voc\u00ea provavelmente j\u00e1 usa. Alguns exemplos mantidos oficialmente ou pela comunidade:<\/p>\n<ul>\n<li><strong>Filesystem<\/strong>: leitura e escrita controlada de arquivos locais \u2014 <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/filesystem\" target=\"_blank\" rel=\"noopener\">reposit\u00f3rio oficial<\/a>.<\/li>\n<li><strong>GitHub<\/strong>: consulta e manipula\u00e7\u00e3o de issues, pull requests e reposit\u00f3rios \u2014 <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/github\" target=\"_blank\" rel=\"noopener\">servidor GitHub<\/a>.<\/li>\n<li><strong>PostgreSQL<\/strong>: execu\u00e7\u00e3o de queries em bancos relacionais com controle de acesso \u2014 <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/postgres\" target=\"_blank\" rel=\"noopener\">servidor Postgres<\/a>.<\/li>\n<li><strong>Puppeteer<\/strong>: automa\u00e7\u00e3o de navegador para scraping ou testes end-to-end.<\/li>\n<\/ul>\n<p>A lista completa de servidores de refer\u00eancia est\u00e1 em <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers\" target=\"_blank\" rel=\"noopener\">github.com\/modelcontextprotocol\/servers<\/a>, e vale revisitar periodicamente, j\u00e1 que o ecossistema cresce r\u00e1pido.<\/p>\n<h3>Exemplo: consultando um banco de dados via MCP<\/h3>\n<p>Suponha que voc\u00ea queira que seu assistente de IA responda perguntas sobre o schema e os dados do seu banco Postgres sem que voc\u00ea precise copiar e colar resultados de query manualmente. Com o servidor de Postgres configurado, a intera\u00e7\u00e3o fica assim, do ponto de vista do host:<\/p>\n<pre><code>{\n  \"mcpServers\": {\n    \"postgres\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@modelcontextprotocol\/server-postgres\",\n        \"postgresql:\/\/usuario:senha@localhost:5432\/meubanco\"\n      ]\n    }\n  }\n}\n<\/code><\/pre>\n<p>A partir da\u00ed, uma pergunta como &#8220;quais s\u00e3o as tabelas com mais de um milh\u00e3o de registros no schema public?&#8221; \u00e9 traduzida pelo modelo em chamadas de ferramentas expostas pelo servidor \u2014 sem que voc\u00ea precise escrever a query manualmente nem alternar de contexto para o terminal do banco.<\/p>\n<h2>MCP e agentes: por que isso importa mais do que parece<\/h2>\n<p>Se voc\u00ea j\u00e1 experimentou construir ou usar agentes de IA para tarefas de desenvolvimento, sabe que a maior limita\u00e7\u00e3o pr\u00e1tica n\u00e3o \u00e9 o racioc\u00ednio do modelo \u2014 \u00e9 o acesso confi\u00e1vel e padronizado a ferramentas externas. Um agente que n\u00e3o consegue consultar o estado real de um sistema \u00e9 um agente que &#8220;alucina&#8221; contexto, respondendo com suposi\u00e7\u00f5es em vez de fatos.<\/p>\n<p>O MCP resolve isso ao fornecer uma camada de acesso a ferramentas que \u00e9:<\/p>\n<ul>\n<li><strong>Descoberta autom\u00e1tica<\/strong>: o host pergunta ao servidor quais capacidades ele oferece, sem hardcoding.<\/li>\n<li><strong>Tipada<\/strong>: cada ferramenta declara seu schema de entrada e sa\u00edda, reduzindo erros de interpreta\u00e7\u00e3o pelo modelo.<\/li>\n<li><strong>Independente de linguagem<\/strong>: um servidor escrito em Python pode ser consumido por um host escrito em TypeScript, e vice-versa.<\/li>\n<li><strong>Reaproveit\u00e1vel<\/strong>: o mesmo servidor MCP funciona em diferentes clientes \u2014 Claude Desktop, Claude Code, editores de c\u00f3digo, agentes customizados \u2014 sem altera\u00e7\u00f5es.<\/li>\n<\/ul>\n<h3>Exemplo: um servidor MCP para um sistema legado<\/h3>\n<p>Um cen\u00e1rio comum no dia a dia de quem trabalha com sistemas corporativos: um ERP legado, sem API REST moderna, mas com um banco de dados acess\u00edvel. \u00c9 poss\u00edvel expor opera\u00e7\u00f5es seguras desse sistema via MCP sem alterar o legado, criando uma camada de leitura controlada:<\/p>\n<pre><code>from mcp.server.fastmcp import FastMCP\nimport pyodbc\n\nmcp = FastMCP(\"erp-legado-server\")\n\ndef get_connection():\n    return pyodbc.connect(\n        \"DRIVER={ODBC Driver 17 for SQL Server};\"\n        \"SERVER=servidor_erp;DATABASE=ERP_PROD;\"\n        \"UID=usuario_leitura;PWD=senha_segura\"\n    )\n\n@mcp.tool()\ndef consultar_estoque(codigo_produto: str) -&gt; dict:\n    \"\"\"Consulta a quantidade em estoque de um produto pelo c\u00f3digo.\"\"\"\n    conn = get_connection()\n    cursor = conn.cursor()\n    cursor.execute(\n        \"SELECT DESCRICAO, QUANTIDADE FROM ESTOQUE WHERE CODIGO = ?\",\n        codigo_produto,\n    )\n    row = cursor.fetchone()\n    conn.close()\n    if not row:\n        return {\"error\": \"Produto n\u00e3o encontrado\"}\n    return {\"descricao\": row.DESCRICAO, \"quantidade\": row.QUANTIDADE}\n\nif __name__ == \"__main__\":\n    mcp.run(transport=\"stdio\")\n<\/code><\/pre>\n<p>Note que o usu\u00e1rio de conex\u00e3o \u00e9 de leitura, e a ferramenta \u00e9 intencionalmente restrita a uma \u00fanica consulta parametrizada. Isso ilustra um ponto essencial ao expor sistemas legados ou cr\u00edticos via MCP: o protocolo d\u00e1 poder de acesso, mas a responsabilidade de limitar esse poder ao m\u00ednimo necess\u00e1rio continua sendo do desenvolvedor que constr\u00f3i o servidor.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> ao projetar servidores MCP para produ\u00e7\u00e3o, trate cada ferramenta exposta como uma rota de API p\u00fablica. Aplique o princ\u00edpio do menor privil\u00e9gio, valide entradas rigorosamente e nunca exponha opera\u00e7\u00f5es destrutivas (DELETE, DROP, comandos de shell irrestritos) sem camadas expl\u00edcitas de confirma\u00e7\u00e3o. A pr\u00f3pria especifica\u00e7\u00e3o de seguran\u00e7a do protocolo trata desse tema em detalhe: <a href=\"https:\/\/modelcontextprotocol.io\/specification\/2025-06-18\/basic\/security_best_practices\" target=\"_blank\" rel=\"noopener\">boas pr\u00e1ticas de seguran\u00e7a do MCP<\/a>.<\/p><\/blockquote>\n<h2>Consumindo MCP diretamente em c\u00f3digo: o lado cliente<\/h2>\n<p>Al\u00e9m de criar servidores, \u00e9 \u00fatil entender como um cliente consome o protocolo, especialmente se voc\u00ea est\u00e1 construindo um agente customizado. Um exemplo m\u00ednimo em Python usando o SDK cliente:<\/p>\n<pre><code>import asyncio\nfrom mcp import ClientSession, StdioServerParameters\nfrom mcp.client.stdio import stdio_client\n\nasync def main():\n    server_params = StdioServerParameters(\n        command=\"python\",\n        args=[\"ci_server.py\"],\n    )\n\n    async with stdio_client(server_params) as (read, write):\n        async with ClientSession(read, write) as session:\n            await session.initialize()\n\n            # Descobre as ferramentas dispon\u00edveis dinamicamente\n            tools = await session.list_tools()\n            print(\"Ferramentas dispon\u00edveis:\", [t.name for t in tools.tools])\n\n            # Invoca uma ferramenta espec\u00edfica\n            result = await session.call_tool(\n                \"get_build_status\", arguments={\"build_id\": \"build-102\"}\n            )\n            print(\"Resultado:\", result.content)\n\nasyncio.run(main())\n<\/code><\/pre>\n<p>Esse trecho mostra o n\u00facleo do valor do MCP: o cliente n\u00e3o precisa saber, em tempo de compila\u00e7\u00e3o, quais ferramentas existem. Ele descobre isso em tempo de execu\u00e7\u00e3o, via <code>list_tools()<\/code>, e invoca dinamicamente. Isso \u00e9 o que permite que um mesmo agente se adapte a diferentes conjuntos de servidores sem altera\u00e7\u00e3o de c\u00f3digo.<\/p>\n<h2>Onde o MCP se encaixa no seu fluxo de trabalho<\/h2>\n<p>Se voc\u00ea j\u00e1 usa ferramentas como Claude Code para desenvolvimento assistido, o MCP \u00e9 a camada que expande o alcance do assistente para al\u00e9m do c\u00f3digo-fonte local: ele passa a poder consultar o Jira para entender o contexto de uma tarefa, verificar o status de um deploy, ler documenta\u00e7\u00e3o interna, ou consultar m\u00e9tricas de observabilidade \u2014 tudo dentro da mesma conversa, sem trocar de janela.<\/p>\n<p>Vale refor\u00e7ar que o MCP n\u00e3o \u00e9 exclusivo de um \u00fanico fornecedor de IA. \u00c9 um protocolo aberto, com especifica\u00e7\u00e3o p\u00fablica, e a expectativa \u00e9 que ele se torne um padr\u00e3o de mercado semelhante ao que LSP (Language Server Protocol) representou para editores de c\u00f3digo: uma camada de integra\u00e7\u00e3o que qualquer editor, e agora qualquer assistente de IA, pode implementar.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> a analogia com o LSP n\u00e3o \u00e9 acidental \u2014 o Model Context Protocol foi conscientemente inspirado nesse modelo de sucesso. Assim como o LSP libertou editores de c\u00f3digo de precisarem implementar suporte espec\u00edfico para cada linguagem, o MCP liberta assistentes de IA de precisarem implementar suporte espec\u00edfico para cada ferramenta. Leia mais sobre a origem do LSP em <a href=\"https:\/\/microsoft.github.io\/language-server-protocol\/\" target=\"_blank\" rel=\"noopener\">microsoft.github.io\/language-server-protocol<\/a>.<\/p><\/blockquote>\n<h2>Participe da Comunidade Dev&#8217;s AI<\/h2>\n<p>Entender o MCP na teoria \u00e9 o primeiro passo, mas o verdadeiro aprendizado acontece quando voc\u00ea constr\u00f3i seus pr\u00f3prios servidores, integra ferramentas do seu dia a dia e troca experi\u00eancias com quem est\u00e1 enfrentando os mesmos desafios de integra\u00e7\u00e3o de IA em ambientes reais de desenvolvimento. Na <a href=\"https:\/\/adrianosantos.link\/ComunidadeDevAI\" target=\"_blank\" rel=\"noopener\">Comunidade Dev&#8217;s AI<\/a> discutimos exatamente isso: implementa\u00e7\u00f5es pr\u00e1ticas de MCP, agentes de IA aplicados ao desenvolvimento de software, e casos de uso reais compartilhados por desenvolvedores de diferentes linguagens e stacks. Se voc\u00ea quer sair da teoria e colocar a m\u00e3o no protocolo, essa \u00e9 a sua pr\u00f3xima parada.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>O Model Context Protocol resolve um problema estrutural que travava a evolu\u00e7\u00e3o pr\u00e1tica dos assistentes de IA: a fragmenta\u00e7\u00e3o de integra\u00e7\u00f5es. Ao padronizar a forma como modelos descobrem e invocam ferramentas, dados e prompts, o MCP transforma assistentes de IA de &#8220;conversadores isolados&#8221; em agentes capazes de operar com contexto real sobre os sistemas que voc\u00ea efetivamente usa no trabalho.<\/p>\n<p>Como todo protocolo de integra\u00e7\u00e3o poderoso, ele exige responsabilidade no design dos servidores \u2014 especialmente quando eles tocam sistemas de produ\u00e7\u00e3o. Mas o ganho de produtividade de eliminar c\u00f3pias manuais de dados entre a IA e suas ferramentas, e de reaproveitar integra\u00e7\u00f5es entre diferentes hosts e agentes, justifica o investimento em entender e aplicar o protocolo hoje. O ecossistema est\u00e1 em expans\u00e3o acelerada, e quem come\u00e7ar a construir e consumir servidores MCP agora estar\u00e1 em vantagem quando essa camada de integra\u00e7\u00e3o se tornar, como tudo indica, um padr\u00e3o consolidado do mercado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagine a seguinte cena. Voc\u00ea est\u00e1 usando um assistente de IA para acelerar seu trabalho e pede algo simples: &#8220;verifique se existe algum ticket aberto no nosso sistema de suporte relacionado a esse erro de timeout&#8221;. A resposta vem educada, bem escrita, mas completamente in\u00fatil: &#8220;n\u00e3o tenho acesso ao seu sistema de suporte, mas posso [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":1071,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1070","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1070"}],"version-history":[{"count":1,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1070\/revisions"}],"predecessor-version":[{"id":1072,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1070\/revisions\/1072"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1071"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}