¿Cómo funciona MCP? Por dentro, con Claude y los agentes de IA

Model Context Protocol parece magia cuando Claude lee un archivo o llama por su cuenta a una API de imágenes. Este artículo lo desmenuza: hosts, clientes y servidores, el handshake JSON-RPC, herramientas frente a recursos frente a prompts, el bucle del agente que repite llamadas a herramientas y las comprobaciones de seguridad que lo mantienen a salvo.

¿Cómo funciona MCP? Por dentro, con Claude y los agentes de IA
Cristian Da Conceicao
Fundador de Picasso IA

Escribes una petición, Claude lee un archivo, consulta una base de datos o genera una imagen, y unos segundos después el resultado aparece en el chat. Nada dentro de los pesos del modelo sabe cómo llegar a tu base de datos. Hay algo en medio, y eso es el Model Context Protocol, abreviado MCP. Si alguna vez te has preguntado cómo funciona MCP entre bastidores, aquí va la versión corta: un formato de mensajes compartido permite que una aplicación de IA pregunte a programas externos qué pueden hacer y luego los llame en nombre del modelo. El resto de este artículo sigue una sola petición desde el primer handshake hasta el resultado final de la herramienta, con formas de mensaje reales, para que puedas imaginar cada salto.

Qué es MCP realmente

MCP es un estándar abierto que Anthropic presentó en noviembre de 2024. Define cómo una aplicación de IA se conecta a herramientas y datos externos mediante un único conjunto de reglas compartidas, en lugar de una integración a medida para cada pareja de productos. Piensa en cómo USB-C permite que un solo cable sirva para un micrófono, una unidad y un monitor. MCP cumple ese papel entre los modelos de lenguaje y el software que los rodea.

El problema que resuelve

Montón enredado de cables y cargadores desiguales sobre una mesa de roble vista desde arriba

Antes de MCP, cada aplicación de IA que quisiera leer un calendario, buscar en una base de código o llamar a una API de imágenes necesitaba su propio código de pegamento. Con N aplicaciones y M herramientas, los equipos se enfrentaban a hasta N × M integraciones separadas, cada una con sus propias peculiaridades de autenticación, formatos de error y calendarios de actualización. Un fallo corregido en un conector no ayudaba a los demás, y cada nuevo modelo o herramienta multiplicaba el trabajo.

Por qué gana un solo protocolo

Manos sujetando un adaptador universal blanco de viaje con varios tipos de enchufe

Un protocolo compartido cambia la cuenta de N × M a N + M. El autor de una herramienta escribe un servidor. El autor de una aplicación escribe un cliente. Todo lo demás se conecta sin código adicional.

  • Reutilización: un solo servidor para una base de datos funciona en Claude Desktop, Claude Code, un editor o un agente a medida.
  • Libertad para cambiar: cambias el modelo que hay detrás de tu aplicación y las conexiones con las herramientas siguen funcionando.
  • Aislamiento: cada servidor se ejecuta como su propio proceso, así que un fallo o un bug queda contenido.
  • Consulta en tiempo de ejecución: los clientes preguntan a los servidores qué ofrecen al conectarse, de modo que las herramientas nuevas aparecen sin una nueva versión del host.

💡 Conviene recordarlo: MCP no hace más inteligente al modelo. Le da capacidad de actuar. El razonamiento sigue ocurriendo dentro del modelo, y el protocolo solo transporta las peticiones hacia fuera y los resultados de vuelta.

Los tres actores de cada sesión

Un camarero deslizando una nota de pedido a un chef por la ventanilla de la cocina de un restaurante

Imagina un restaurante. El comedor es el host, el camarero es el cliente y cada estación de cocina es un servidor. El comensal nunca habla con los fogones, y los fogones nunca hablan con el comensal. Todo viaja a través de un traspaso definido, que es exactamente la tarea de MCP.

Hosts

El host es la aplicación que de verdad abres: Claude Desktop, Claude Code, un editor con funciones de IA o un agente que hayas escrito tú mismo. Mantiene la conversación con el modelo, muestra las solicitudes de permiso y decide qué servidores arrancar.

Clientes

Dentro del host, un objeto cliente gestiona una conexión con un servidor. Si conectas cinco servidores, el host tiene cinco clientes. Cada cliente mantiene su propio estado de sesión, negocia las capacidades y traduce entre las llamadas internas del host y los mensajes del protocolo.

Servidores

Un servidor es un pequeño programa que expone capacidades. Puede ejecutarse en tu equipo portátil como proceso hijo o en otra máquina detrás de una URL. Uno podría envolver un sistema de archivos, una cuenta de GitHub, una base de datos o un generador de imágenes.

RolDónde viveDe qué es responsableEjemplo
HostTu dispositivo o una aplicación en la nubeConversación con el modelo, solicitudes de consentimiento, arranque del servidorClaude Desktop, Claude Code
ClienteDentro del hostUna conexión y una sesión por servidorUn objeto de conexión de un SDK de MCP
ServidorProceso local o URL remotaExponer herramientas, recursos y promptsUn servidor de sistema de archivos, un servidor de base de datos

Por dentro de los mensajes del protocolo

Cada conversación entre un cliente y un servidor es un flujo de mensajes pequeños, repetitivos y predecibles. Esa previsibilidad es precisamente el objetivo.

JSON-RPC por la red

Cada mensaje de MCP es JSON-RPC 2.0, lo que da al protocolo exactamente tres formas de mensaje:

  • Una petición lleva un id y un method, y espera una respuesta.
  • Una respuesta repite ese id y contiene un result o un error.
  • Una notificación no tiene id y no espera nada a cambio.

Así viaja una llamada a herramienta del cliente al servidor:

{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "generate_image",
    "arguments": { "prompt": "a lighthouse at dawn, 35mm film", "aspect_ratio": "16:9" }
  }
}

Y la respuesta correspondiente:

{
  "jsonrpc": "2.0",
  "id": 7,
  "result": {
    "content": [{ "type": "text", "text": "Generation accepted. predict_id: abc123" }],
    "isError": false
  }
}

El id compartido es la forma en que el cliente asocia una respuesta con su pregunta, incluso cuando hay varias llamadas en curso a la vez.

El handshake, paso a paso

Dos personas dándose la mano al otro lado de una mesa de reuniones de madera clara

Antes de que se ejecute cualquier herramienta, cliente y servidor se ponen de acuerdo sobre cómo hablar. La secuencia es corta y siempre la misma:

  1. initialize (petición): el cliente envía la versión del protocolo que quiere, las capacidades que soporta y su propio nombre y versión.
  2. initialize (respuesta): el servidor responde con la versión que usará, sus propias capacidades y unas instrucciones escritas opcionales para el modelo.
  3. notifications/initialized: el cliente lo confirma y la sesión queda abierta.
  4. tools/list, resources/list, prompts/list: el cliente pregunta qué ofrece el servidor, limitado a las capacidades que ambas partes declararon.
  5. Tráfico normal: llamadas, lecturas y, de vez en cuando, un notifications/tools/list_changed cuando un servidor añade o quita una herramienta durante la sesión.

💡 Desajuste de versión: si un servidor no soporta la versión que pidió el cliente, responde con una que sí soporta. El cliente acepta esa versión o se desconecta limpiamente.

stdio frente a Streamable HTTP

Vista desde abajo de un pasillo silencioso de un centro de datos entre racks de servidores

Los mismos mensajes JSON-RPC pueden viajar por dos transportes oficiales.

Con stdio, el host lanza el servidor como proceso hijo e intercambia JSON delimitado por saltos de línea a través de la entrada y salida estándar. Los registros deben ir a la salida de error estándar, porque un solo print a la salida estándar corrompe el flujo. Con Streamable HTTP, el servidor se encuentra detrás de una única URL, el cliente envía los mensajes con peticiones POST y el servidor responde con JSON simple o abre una respuesta en streaming cuando necesita enviar varios mensajes de vuelta. Streamable HTTP reemplazó al antiguo transporte HTTP más SSE en la revisión de la especificación de marzo de 2025.

CaracterísticastdioStreamable HTTP
Dónde se ejecuta el servidorEn tu equipo, como proceso hijoEn cualquier lugar accesible por URL
ConfiguraciónUn comando en un archivo de configuraciónUn endpoint desplegado
AutenticaciónHereda los permisos de tu usuarioAutorización basada en OAuth
Usuarios habitualesDesarrolladores individuales, herramientas localesEquipos, servicios alojados, conectores compartidos
Clientes concurrentesUnoMuchos

Una entrada típica de Claude Desktop para un servidor local tiene este aspecto:

{
  "mcpServers": {
    "files": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/projects"]
    }
  }
}

Herramientas, recursos y prompts

Panel de herramientas de un taller con martillos, llaves y alicates colgados sobre sus contornos pintados

Los servidores exponen tres bloques de construcción. Se diferencian sobre todo en quién decide cuándo usarlos.

PrimitivaControlada porFinalidadEjemploMétodos
HerramientasEl modeloRealizar una acción o ejecutar un cálculogenerate_image, run_querytools/list, tools/call
RecursosLa aplicaciónAportar contexto de solo lecturaUn archivo, el esquema de una base de datosresources/list, resources/read
PromptsEl usuarioOfrecer plantillas reutilizablesUn comando "revisa esta pull request"prompts/list, prompts/get

Las herramientas hacen cosas

Una herramienta tiene un name, una description y un inputSchema escrito en JSON Schema. La descripción es lo que el modelo lee de verdad cuando decide si llama a la herramienta, así que una descripción vaga produce llamadas erróneas u omitidas. Escríbela como un manual breve para un compañero que nunca ha visto tu sistema.

Los conectores reales muestran bien el patrón. El conector de PicassoIA en claude.ai expone herramientas como generate_image, edit_image, generate_video_picassoia, generate_video_seedance, get_generation y list_models. Una herramienta de generación devuelve un id de predicción de inmediato, y después el modelo llama una y otra vez a get_generation hasta que el estado aparece como succeeded. Eso es una sola petición del usuario convertida en varias llamadas a herramientas encadenadas, y el protocolo nunca necesitó una función especial para ello.

Los recursos aportan contexto

Los recursos se direccionan mediante una URI, como file:///project/README.md. El host decide cuáles adjuntar a la conversación, y resources/read devuelve el contenido con un tipo MIME. Los servidores también pueden publicar plantillas de recursos con parámetros, y los clientes pueden suscribirse a los cambios para que el contexto siga actualizado.

Los prompts empaquetan flujos de trabajo

Los prompts son plantillas que el usuario activa a propósito, normalmente como comandos de barra. Un prompt puede recibir argumentos y devolver un conjunto de mensajes ya preparado, de modo que un equipo puede crear una vez su mejor redacción para "resume este incidente" o "escribe las notas de la versión" y reutilizarla en todas partes.

Qué pasa cuando Claude llama a una herramienta

Ingeniero dibujando tres cajas unidas por flechas circulares en una pizarra grande

Aquí está la parte que más se suele entender mal: el modelo nunca habla MCP. Lo hace el host. Claude solo ve las definiciones de herramientas en su propio formato de uso de herramientas y emite peticiones estructuradas. Todo lo demás es fontanería.

De la pregunta a la llamada a la herramienta

  1. Tú preguntas. "Cambia el tamaño de la foto principal y guárdala en la carpeta de mi proyecto."
  2. El host envía el contexto. Reenvía tu mensaje, junto con las definiciones de herramientas reunidas de todos los servidores conectados, a la API del modelo.
  3. Claude decide. En lugar de texto final, devuelve un bloque tool_use que nombra una herramienta y sus argumentos.
  4. El host comprueba el consentimiento. Puede mostrar una solicitud de aprobación y luego dirige la llamada al cliente que posee esa herramienta.
  5. El cliente llama al servidor. Sale una solicitud tools/call, el servidor hace el trabajo y devuelve bloques content.
  6. El host informa del resultado. El resultado llega a Claude como un bloque tool_result, junto con la conversación hasta ese momento.
  7. Claude continúa. Llama a otra herramienta o escribe la respuesta final.

Dónde vive el bucle del agente

Los pasos del 3 al 7 se repiten hasta que Claude deja de pedir herramientas. Esa repetición es el bucle del agente, y vive en el host, no en el protocolo. MCP define las puertas. El host decide cuántas veces cruzarlas. Un agente de IA es simplemente un host que ejecuta este bucle con planes más largos, menos interrupciones y, a veces, agentes auxiliares propios.

💡 Costo oculto: cada definición de herramienta ocupa espacio en la ventana de contexto. Cincuenta herramientas pueden consumir miles de tokens antes de que se lea la primera palabra de tu pregunta. Los buenos hosts cargan los esquemas bajo demanda o te dejan desactivar los servidores de cada proyecto por separado.

Seguridad y permisos

Candado pesado de latón con una cadena galvanizada sobre una puerta de madera envejecida

Un servidor que puede ejecutar comandos o tocar archivos es poderoso, y por eso precisamente necesita salvaguardas.

El consentimiento va primero

La especificación pide que los hosts obtengan el consentimiento explícito del usuario antes de invocar herramientas o compartir datos, y los hosts más maduros lo cumplen con solicitudes de aprobación y listas de permitidos por herramienta. Recuerda que un servidor stdio local se ejecuta con tus permisos de usuario, así que trata su instalación como la de cualquier programa. Los servidores remotos añaden OAuth, que te permite conceder un acceso limitado y revocarlo más tarde.

Puntos habituales de fallo

  • Inyección de prompts a través de los resultados: una página web, un ticket o un correo devuelto por una herramienta puede contener texto que intente dar nuevas órdenes al modelo.
  • Descripciones de herramientas envenenadas: un servidor malicioso puede esconder instrucciones dentro de sus propias descripciones.
  • Credenciales demasiado amplias: un token que puede borrarlo todo acabará usándose para borrarlo todo. Prefiere el acceso de solo lectura.
  • Salida estándar con ruido: los prints de depuración en un servidor stdio rompen el flujo JSON.
  • Demasiadas herramientas: con decenas disponibles, el modelo elige la incorrecta con más frecuencia. Mantén cada servidor centrado.
  • Trabajos largos: una sola llamada que tarda diez minutos agota el tiempo de espera. Devuelve un id y deja que el modelo consulte el estado, como hacen los generadores de imágenes y de video.

Usa Claude Sonnet 5 en PicassoIA

Si quieres crear tu propio servidor, Claude Sonnet 5 en PicassoIA es un práctico compañero de programación. Está pensado para tareas de programación de varios pasos y de uso de herramientas, y lee imágenes, así que una captura de pantalla de un error sirve como entrada.

  1. Abre la página del modelo. Ve a la página de Claude Sonnet 5 en la colección de modelos de lenguaje (LLM).
  2. Escribe el prompt. Es el único campo obligatorio. Sé específico con el lenguaje, el SDK y la herramienta que quieres.
  3. Ajusta el esfuerzo. El valor por defecto es low, que omite el pensamiento extendido para respuestas rápidas. Súbelo para un bug que abarque varios archivos.
  4. Ajusta los límites. max_tokens tiene 8192 por defecto, y un system_prompt opcional fija un rol o un estilo de código para la sesión.
  5. Adjunta una imagen si te sirve. El campo image acepta una captura de pantalla, y max_image_resolution (por defecto 0,5 megapíxeles) la mantiene ligera.
  6. Genera y revisa. Copia el código en tu proyecto y pruébalo con el MCP Inspector antes de fiarte de él.

Un prompt que funciona bien:

Write a minimal MCP server in TypeScript using the official SDK. It exposes one tool,
word_count, that takes a string and returns the number of words. Use the stdio transport
and log only to stderr. Include the claude_desktop_config.json entry to register it.

PicassoIA también habla MCP por sí mismo. Su conector de claude.ai incluye cuatro modelos: PicassoIA Image, PicassoIA Image Editor Pro, PicassoIA Video y Seedance 2.5 Lite, que genera video con audio. Las predicciones son asíncronas, y una cuenta puede ejecutar cinco a la vez entre todas sus conexiones, así que mantén los lotes pequeños. Consulta la página de precios para ver qué incluye tu plan.

Crea tus propias imágenes hoy

Diseñador en un largo escritorio de madera editando una fotografía de paisaje con luz de hora dorada

Detrás de cada momento fluido de "Claude, hazme una imagen" hay un handshake, un esquema y un bucle. La forma más rápida de entenderlo es producir algo. Abre PicassoIA Image y describe una escena, cambia a Seedream 4.5 o FLUX 2 Pro para un aspecto distinto y luego pasa el resultado a Seedance 2.0 para convertir una imagen fija en un clip corto. Conecta el conector de PicassoIA a Claude y podrás pedirlo todo en lenguaje natural, y ver cómo se desarrollan en tiempo real las llamadas a herramientas de este artículo.

Elige una idea de las secciones anteriores, escribe una frase sobre lo que quieres ver y ejecútala. Tu primera imagen está a unos segundos en picassoia.com.

Compartir este artículo

Elige tu idioma