{"id":713,"date":"2026-07-05T03:08:59","date_gmt":"2026-07-05T01:08:59","guid":{"rendered":"https:\/\/atlaszn.com\/blog\/?p=713"},"modified":"2026-07-05T04:22:12","modified_gmt":"2026-07-05T02:22:12","slug":"model-context-protocol","status":"publish","type":"post","link":"https:\/\/atlaszn.com\/blog\/model-context-protocol\/","title":{"rendered":"Model Context Protocol (MCP): Estandarizaci\u00f3n de herramientas"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">El problema: Integraci\u00f3n propietaria<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cada framework de agentes define sus propias herramientas de forma propietaria. LangChain tiene sus Tools. CrewAI tiene sus propias abstracciones. Google ADK tiene su implementaci\u00f3n. Si cambias de framework, reescribes todas las integraciones. Si quieres compartir una herramienta entre dos agentes distintos, duplicas c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Model Context Protocol (MCP) estandariza esta conexi\u00f3n. Es un protocolo abierto cliente-servidor donde cualquier LLM puede descubrir, conectarse y usar herramientas externas sin c\u00f3digo de integraci\u00f3n personalizado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero conviene ser precisos sobre qu\u00e9 es y qu\u00e9 no es. MCP no es arquitectura de agentes. No es un framework de reasoning. No es un sistema inteligente. Es una capa de interoperabilidad para tool-use en sistemas LLM, similar a lo que REST o gRPC son para APIs web. Estandariza el acceso a herramientas, no el cerebro del agente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Arquitectura cliente-servidor<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP usa una arquitectura simple: el cliente (la aplicaci\u00f3n que hostea al LLM) se conecta a servidores que exponen capacidades. El servidor no sabe qu\u00e9 LLM lo usa. El cliente no sabe qu\u00e9 herramientas existen hasta que las consulta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El flujo es directo:<\/p>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li><strong>Discovery.<\/strong> El cliente consulta el servidor para aprender qu\u00e9 herramientas, recursos y prompts est\u00e1n disponibles.<\/li>\n\n\n\n<li><strong>Request formulation.<\/strong> El LLM decide qu\u00e9 herramienta usar y formula los par\u00e1metros.<\/li>\n\n\n\n<li><strong>Client communication.<\/strong> El cliente MCP env\u00eda una llamada estandarizada al servidor.<\/li>\n\n\n\n<li><strong>Server execution.<\/strong> El servidor autentica, valida y ejecuta la acci\u00f3n.<\/li>\n\n\n\n<li><strong>Response.<\/strong> El resultado vuelve al LLM, actualizando su contexto.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Tres tipos de recursos: <strong>Tools<\/strong> (funciones ejecutables como enviar email o consultar una base de datos), <strong>Resources<\/strong> (datos est\u00e1ticos para lectura como archivos PDF o registros de base de datos), y <strong>Prompts<\/strong> (plantillas interactivas que gu\u00edan la interacci\u00f3n del LLM).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los mecanismos de transporte son STDIO para comunicaci\u00f3n inter-proceso local, y HTTP con Server-Sent Events para conexiones remotas persistentes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Descubrimiento semi-din\u00e1mico, no plug-and-play<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El descubrimiento din\u00e1mico es la promesa de MCP: el cliente consulta qu\u00e9 herramientas existen en tiempo de ejecuci\u00f3n. En teor\u00eda, eso elimina la necesidad de hardcodear herramientas en el c\u00f3digo del agente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la pr\u00e1ctica, el descubrimiento es semi-din\u00e1mico. Muchos sistemas MCP siguen requiriendo configuraci\u00f3n est\u00e1tica del cliente: permisos predefinidos, pol\u00edticas de acceso, schemas validados, validaci\u00f3n fuerte de inputs y outputs. El agente descubre qu\u00e9 herramientas existen, pero no puede usar cualquier herramienta sin autorizaci\u00f3n previa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La distinci\u00f3n importa. MCP reduce el coste de a\u00f1adir herramientas nuevas sin volver a desplegar el agente, pero no elimina la configuraci\u00f3n de infraestructura. Los permisos, las pol\u00edticas y los schemas siguen siendo responsabilidad del dise\u00f1ador del sistema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 es realmente MCP: traducci\u00f3n arquitect\u00f3nica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP no es un sistema de agentes. Es una capa de interoperabilidad para tool invocation en sistemas LLM. La traducci\u00f3n arquitect\u00f3nica es directa:<\/p>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li><strong>Tool<\/strong> = funci\u00f3n de API<\/li>\n\n\n\n<li><strong>Server<\/strong> = microservicio<\/li>\n\n\n\n<li><strong>Client<\/strong> = runtime del LLM<\/li>\n\n\n\n<li><strong>Discovery<\/strong> = registry din\u00e1mico<\/li>\n\n\n\n<li><strong>MCP<\/strong> = HTTP + schema + tool registry para LLMs<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">La consecuencia es clara: MCP no cambia c\u00f3mo razona el modelo, c\u00f3mo planifica, ni c\u00f3mo coordina agentes. Solo cambia c\u00f3mo accede a herramientas externas. Es infraestructura de tooling, no capa cognitiva.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Interoperabilidad parcial, no completa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP estandariza el acceso a herramientas. No estandariza el resto del agente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los frameworks siguen teniendo formas distintas de tool routing, sistemas de memoria diferentes, agent loops distintos, y estrategias de error handling propias. MCP conecta el agente a las herramientas; no conecta el agente al agente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El resultado es interoperabilidad parcial: las herramientas son compartibles entre frameworks, pero la l\u00f3gica del agente, su memoria y su flujo de control siguen siendo propietarios. Eso es suficiente para resolver el problema de integraci\u00f3n de herramientas, pero no convierte MCP en un est\u00e1ndar universal para agentes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">MCP vs Tool Use directo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tool Use directo es un enlace propietario uno-a-uno entre un LLM y una funci\u00f3n espec\u00edfica definida en tu aplicaci\u00f3n. MCP es un protocolo abierto con descubrimiento semi-din\u00e1mico: el cliente consulta qu\u00e9 capacidades existen y decide en tiempo de ejecuci\u00f3n cu\u00e1les usar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La diferencia importa cuando el conjunto de herramientas cambia. Con Tool Use directo, a\u00f1adir una herramienta requiere modificar el c\u00f3digo del agente y redeployar. Con MCP, el servidor expone la nueva herramienta y el cliente la descubre sin cambios en el c\u00f3digo del agente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero MCP no es gratuito. A\u00f1ade una capa de abstracci\u00f3n, latencia de descubrimiento, y complejidad operativa. Para aplicaciones con tres o cuatro funciones fijas, Tool Use directo es m\u00e1s eficiente. MCP brilla cuando la complejidad de integraci\u00f3n supera el overhead del protocolo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y hay un contexto que conviene mencionar: MCP est\u00e1 en fase de estandarizaci\u00f3n emergente. Compite conceptualmente con tool calling nativo de OpenAI, Anthropic y Google, adem\u00e1s de las integraciones propietarias de cada framework. Su \u00e9xito depende de adopci\u00f3n, no solo de dise\u00f1o. El riesgo real es que MCP se convierta en otro est\u00e1ndar m\u00e1s, no en el est\u00e1ndar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FastMCP: servidores en minutos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">FastMCP es un framework Python de alto nivel para construir servidores MCP r\u00e1pidamente. Usa decoradores para definir herramientas, genera schemas autom\u00e1ticamente desde type hints y docstrings, y soporta composici\u00f3n de servidores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La ventaja es la velocidad de desarrollo. Una funci\u00f3n Python con type hints y docstring se convierte en una herramienta MCP accesible por cualquier cliente compatible sin boilerplate adicional.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">MCP en c\u00f3digo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP es un patr\u00f3n de arquitectura. FastMCP, Google ADK MCPToolset, o los servidores de referencia son implementaciones del patr\u00f3n, no el patr\u00f3n en s\u00ed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Servidor MCP con FastMCP<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from fastmcp import FastMCP\n\nmcp_server = FastMCP()\n\n@mcp_server.tool\ndef search_knowledge_base(query: str, limit: int = 5) -&gt; list:\n    \"\"\"Busca en la base de conocimiento y devuelve resultados relevantes.\"\"\"\n    results = &#91;]  # L\u00f3gica de b\u00fasqueda aqu\u00ed\n    return results&#91;:limit]\n\n@mcp_server.tool\ndef get_user_preferences(user_id: str) -&gt; dict:\n    \"\"\"Obtiene las preferencias almacenadas de un usuario.\"\"\"\n    return {}  # L\u00f3gica de retrieval aqu\u00ed\n\nif __name__ == \"__main__\":\n    mcp_server.run(transport=\"http\", host=\"127.0.0.1\", port=8000)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dos decoradores, dos herramientas MCP. Los type hints y docstrings generan autom\u00e1ticamente los schemas que el cliente necesita para descubrir y usar las herramientas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Agente conectado a servidor MCP<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.agents import LlmAgent\nfrom google.adk.tools.mcp_tool.mcp_toolset import (\n    MCPToolset, HttpServerParameters\n)\n\nroot_agent = LlmAgent(\n    model='gemini-2.0-flash',\n    name='knowledge_agent',\n    instruction='Usa las herramientas disponibles para responder preguntas.',\n    tools=&#91;\n        MCPToolset(\n            connection_params=HttpServerParameters(\n                url=\"http:\/\/localhost:8000\"\n            ),\n            tool_filter=&#91;'search_knowledge_base']  # Subset de seguridad\n        )\n    ],\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El agente se conecta al servidor MCP, descubre las herramientas disponibles, y usa <code>tool_filter<\/code> para restringir el acceso a un subconjunto espec\u00edfico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conexi\u00f3n local v\u00eda STDIO<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.tools.mcp_tool.mcp_toolset import (\n    MCPToolset, StdioServerParameters\n)\nimport os\n\nTARGET_FOLDER = os.path.join(os.path.dirname(__file__), \"files\")\nos.makedirs(TARGET_FOLDER, exist_ok=True)\n\nfilesystem_agent = LlmAgent(\n    model='gemini-2.0-flash',\n    name='filesystem_agent',\n    instruction=f'Gestionas archivos en: {TARGET_FOLDER}',\n    tools=&#91;\n        MCPToolset(\n            connection_params=StdioServerParameters(\n                command='npx',\n                args=&#91;\"-y\", \"@modelcontextprotocol\/server-filesystem\",\n                      TARGET_FOLDER],\n            ),\n            tool_filter=&#91;'list_directory', 'read_file']\n        )\n    ],\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Conexi\u00f3n local v\u00eda STDIO a un servidor de filesystem pre-construido. El agente solo puede listar directorios y leer archivos dentro de una carpeta espec\u00edfica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Seguridad: tool_filter es solo una capa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El <code>tool_filter<\/code> de MCP restringe qu\u00e9 herramientas ve un agente. Es \u00fatil, pero no es una soluci\u00f3n de seguridad completa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El tool_filter no sustituye permisos RBAC reales, sandboxing fuerte, validaci\u00f3n de inputs y outputs, o aislamiento de ejecuci\u00f3n. En sistemas reales, MCP es superficie de ataque adicional si no se dise\u00f1a bien, no una mejora autom\u00e1tica de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MCP en s\u00ed no incluye autenticaci\u00f3n ni autorizaci\u00f3n. La seguridad depende de la implementaci\u00f3n del servidor. Exponer herramientas y datos v\u00eda MCP sin controles de acceso es un riesgo. La autenticaci\u00f3n, la validaci\u00f3n de inputs, el sandboxing y el aislamiento de ejecuci\u00f3n son responsabilidad del dise\u00f1ador del sistema, no del protocolo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La primera vez que implementamos MCP, lo hicimos exponiendo todas las herramientas del servidor a todos los agentes. Parec\u00eda razonable: cada agente decide qu\u00e9 usar. Funcion\u00f3 mal. Un agente de soporte t\u00e9cnico ten\u00eda acceso a herramientas de administraci\u00f3n de base de datos. No las usaba mal, pero la superficie de ataque era innecesariamente amplia. Implementamos <code>tool_filter<\/code> por rol, autenticaci\u00f3n por token, y sandboxing para herramientas que ejecutaban comandos. La superficie de ataque se redujo significativamente, pero el tool_filter solo fue la primera capa de una defensa en profundidad.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Observabilidad<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e9tricas operativas: tool discovery latency (tiempo de descubrimiento de herramientas), tool call success rate (porcentaje de llamadas exitosas), tool call latency (tiempo de ejecuci\u00f3n por herramienta).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e9tricas de seguridad: unauthorized access attempts (intentos de acceso no autorizado), tool_filter violations (intentos de usar herramientas filtradas), server authentication failures (fallos de autenticaci\u00f3n del servidor).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Formato de log: <code>{tool_name, client_id, action, status, duration_ms, auth_result}<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">MCP combinado con otros patrones<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Tool Use<\/strong>, MCP es la capa de estandarizaci\u00f3n sobre la que Tool Use opera. El agente usa herramientas; MCP define c\u00f3mo se descubren y conectan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Multi-Agent<\/strong>, diferentes agentes pueden conectar al mismo servidor MCP y compartir acceso a herramientas. El servidor es un recurso compartido; cada agente usa <code>tool_filter<\/code> para acceder solo a lo que necesita.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Memory<\/strong>, los recursos MCP pueden servir como fuente de memoria a largo plazo. Un servidor MCP que expone una base de conocimiento act\u00faa como memoria sem\u00e1ntica externa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Planning<\/strong>, el plan puede incluir llamadas a herramientas MCP. El planificador decide qu\u00e9 herramientas son necesarias y en qu\u00e9 orden invocarlas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cu\u00e1ndo NO usar MCP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aplicaciones con tres o cuatro funciones fijas donde Tool Use directo es m\u00e1s eficiente. Entornos donde la latencia de descubrimiento y la capa adicional de abstracci\u00f3n son inaceptables. Sistemas donde las herramientas no cambian y la interoperabilidad entre frameworks no es un requisito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El coste de MCP supera el beneficio si el sistema es peque\u00f1o o controlado. La prueba pr\u00e1ctica es directa: si puedes definir todas las herramientas en un archivo y no cambian frecuentemente, MCP a\u00f1ade complejidad sin beneficio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Anti-patrones<\/h2>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li><strong>Envolver APIs legacy sin adaptaci\u00f3n<\/strong>: una API que devuelve un registro a la vez sin filtrado produce agentes lentos e ineficientes. Dise\u00f1a APIs con operaciones por batch y filtrado.<\/li>\n\n\n\n<li><strong>Formatos incompatibles<\/strong>: exponer PDFs crudos o binarios cuando el agente necesita texto. Convierte a Markdown o texto plano en el servidor.<\/li>\n\n\n\n<li><strong>Tool_filter como \u00fanica capa de seguridad<\/strong>: el tool_filter restringe herramientas visibles, pero no sustituye RBAC, sandboxing, validaci\u00f3n de inputs o aislamiento de ejecuci\u00f3n.<\/li>\n\n\n\n<li><strong>Sin autenticaci\u00f3n<\/strong>: exponer herramientas MCP sin controles de acceso es un riesgo de seguridad. Implementa auth y authz en el servidor.<\/li>\n\n\n\n<li><strong>Ignorar manejo de errores<\/strong>: las llamadas MCP fallan por problemas de red, requests inv\u00e1lidos o servicios indisponibles. Define c\u00f3mo los errores vuelven al LLM para que pueda reintentar o adaptarse.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1ndo debo usar MCP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando hay m\u00faltiples clientes, m\u00faltiples herramientas din\u00e1micas, y necesidad de estandarizaci\u00f3n organizacional. Para aplicaciones simples con funciones fijas, Tool Use directo es m\u00e1s eficiente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1l es la diferencia entre MCP y Tool Use?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tool Use es el concepto general de que un LLM invoque funciones externas. MCP es un protocolo espec\u00edfico que estandariza c\u00f3mo se descubren y conectan esas herramientas. MCP no mejora la inteligencia del agente; reduce el coste de conectar herramientas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfMCP es seguro?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MCP en s\u00ed no incluye autenticaci\u00f3n ni autorizaci\u00f3n. El tool_filter es solo una capa de seguridad. Implementa controles de acceso, valida inputs, usa sandboxing, y a\u00edsla la ejecuci\u00f3n. MCP a\u00f1ade superficie de ataque si no se dise\u00f1a bien.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 es FastMCP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un framework Python para construir servidores MCP r\u00e1pidamente. Usa decoradores para definir herramientas, genera schemas desde type hints y docstrings, y soporta composici\u00f3n de servidores.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfPuedo usar MCP con modelos locales?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed. MCP es independiente del modelo LLM. Los mecanismos de transporte son STDIO para conexiones locales y HTTP+SSE para conexiones remotas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfMCP reemplaza a LangChain Tools o CrewAI Tools?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No reemplaza, complementa. MCP estandariza la conexi\u00f3n entre cliente y servidor. LangChain y CrewAI pueden consumir herramientas MCP a trav\u00e9s de integraciones espec\u00edficas. MCP es el protocolo; los frameworks son los clientes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP resuelve un problema de integraci\u00f3n que cada framework de agentes intentaba solucionar por su cuenta. Antes de MCP, cada agente ten\u00eda sus propias herramientas propietarias. Despu\u00e9s de MCP, las herramientas son recursos compartidos que cualquier agente puede descubrir y usar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero la promesa de interoperabilidad total es optimista. MCP estandariza el acceso a herramientas, no el resto del agente. El descubrimiento es semi-din\u00e1mico, no plug-and-play. La seguridad requiere defensa en profundidad, no solo tool_filter. Y el protocolo est\u00e1 en fase de estandarizaci\u00f3n emergente, compitiendo con tool calling nativo de los principales proveedores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MCP no mejora la inteligencia del agente. Solo reduce el coste de conectar herramientas. Es infraestructura de tooling, no capa cognitiva. Eso es suficiente para resolver un problema real, pero no convierte a MCP en un est\u00e1ndar universal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La decisi\u00f3n real es directa: pocos tools estables, Tool Use directo. Muchos tools cambiantes, MCP. Ecosistema multi-framework, MCP tiene sentido estrat\u00e9gico. La pregunta que define si vale la pena es simple: \u00bfvas a reescribir estas integraciones tres veces? Si la respuesta es s\u00ed, MCP es la inversi\u00f3n correcta. Si es no, Tool Use directo es m\u00e1s eficiente.<br><\/p>\n\n\n<div class=\"acb-callout acb-callout--default\"><div class=\"acb-callout__content\"><a href=\"https:\/\/atlaszn.com\/blog\/patrones-agenticos\/\">Patrones ag\u00e9nticos:<\/a> Una serie sobre los patrones de dise\u00f1o para construir sistemas inteligentes con modelos de lenguaje. Cada patr\u00f3n aborda un problema espec\u00edfico de arquitectura y se apoya en los anteriores.<br><br><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>MCP: Arquitectura cliente-servidor, descubrimiento semi-din\u00e1mico de herramientas, FastMCP, y c\u00f3mo conectar agentes LLM a fuentes de datos externas.<\/p>\n","protected":false},"author":1,"featured_media":721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[135,50,6],"tags":[125,121,154,155,85,138,153,136],"class_list":["post-713","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agentes","category-fundamentos","category-ia-automatizacion","tag-agentes-ia","tag-agentic-patterns","tag-fastmcp","tag-herramientas-llm","tag-llm","tag-mcp","tag-model-context-protocol","tag-tool-use"],"_links":{"self":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts\/713","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/comments?post=713"}],"version-history":[{"count":5,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts\/713\/revisions"}],"predecessor-version":[{"id":811,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts\/713\/revisions\/811"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/media\/721"}],"wp:attachment":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/media?parent=713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/categories?post=713"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/tags?post=713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}