DanLevy.net

Tu Agente de IA es Inútil Sin Esto

Por qué MCP es el USB-C de la Inteligencia Artificial.

Has construido un agente de IA. Quizás incluso es uno bueno. Los prompts son precisos, el modelo es rápido y las respuestas se sienten naturales.

Pero entonces alguien le pide que consulte Salesforce por un registro de cliente. O que obtenga los últimos tickets de Jira. O que busque en tu documentación interna.

Y tu hermoso agente simplemente… no puede.

Este es el problema de integración que todas las plataformas de IA eventualmente enfrentan. Tu agente necesita manos. Necesita ojos en tus sistemas de negocio reales. Sin ellos, solo estás ejecutando un chatbot caro.

¿La solución tradicional? Escribir un wrapper de API personalizado para cada servicio al que quieras conectar. Leer su documentación, manejar su autenticación, lidiar con sus límites de tasa, rezar para que no cambien sus endpoints el próximo mes. Y luego hacerlo de nuevo para el siguiente servicio. Y el siguiente.

El Model Context Protocol cambia este cálculo por completo.


Lo Que MCP Realmente Resuelve

Piensa en USB antes de USB-C. Tenías Mini-USB, Micro-USB, conectores propietarios de Apple y un cajón lleno de cables que solo funcionaban con dispositivos específicos. USB-C no solo agregó un nuevo conector: estableció un estándar que significaba que cualquier cable podía funcionar con cualquier dispositivo.

MCP está haciendo lo mismo para las integraciones de herramientas de IA.

En lugar de escribir código personalizado para conectar tu agente con Salesforce, HubSpot, GitHub o cualquier otro servicio, implementas el protocolo una vez (o descargas un servidor preconstruido) y cualquier agente compatible con MCP puede comunicarse con él de inmediato.

El protocolo maneja la capa de comunicación. Tú solo defines qué hacen tus herramientas y qué datos necesitan.


Configuración de Múltiples Integraciones

Mastra tiene soporte nativo para MCP a través de su MCPClient. Puedes conectar tanto herramientas locales (ejecutándose como procesos hijo) como servicios remotos (ejecutándose en su propia infraestructura).

Aquí tienes una configuración de producción realista que conecta Google Maps para rutas, un servicio meteorológico y una búsqueda local de Wikipedia:

src/mastra/mcp/index.ts
import { MCPClient } from '@mastra/mcp';
export const mcpClient = new MCPClient({
servers: {
// Herramienta local (Stdio)
wikipedia: {
command: 'npx',
args: ['-y', 'wikipedia-mcp'],
},
// Maps y Navegación (Remoto/HTTP)
googleMaps: {
url: new URL(process.env.GOOGLE_MAPS_MCP_URL!),
requestInit: {
headers: {
Authorization: `Bearer ${process.env.GOOGLE_MAPS_API_KEY}`,
},
},
},
// Integración de Servicio Meteorológico
weather: {
url: new URL('https://mcp.weatherapi.dev/v1'),
requestInit: {
headers: {
'X-API-Key': process.env.WEATHER_API_KEY!,
},
},
},
},
});

El cliente gestiona el ciclo de vida de la conexión, maneja la generación de procesos para herramientas locales y mantiene conexiones HTTP para servidores remotos. No tocas sockets ni stdio directamente.


Conectando Herramientas a Agentes

Una vez que tienes tu cliente MCP configurado, darle esas herramientas a un agente es sencillo:

src/mastra/agents/navigation-agent.ts
import { Agent } from '@mastra/core/agent';
import { openai } from '@ai-sdk/openai';
import { mcpClient } from '../mcp';
export const navigationDirectionsAgent = new Agent({
id: 'navigation-directions-agent',
name: 'Asistente de Navegación y Direcciones',
instructions: `Eres un asistente de navegación útil que proporciona planificación de rutas y consejos de viaje.
- Siempre confirma las ubicaciones de origen y destino
- Usa las herramientas de Google Maps para encontrar rutas óptimas
- Consulta las condiciones climáticas a lo largo de la ruta
- Proporciona tiempos de viaje estimados y sugiere alternativas si el clima es malo
- Incluye detalles relevantes como tráfico, estado de las carreteras y puntos de interés
- Mantén las respuestas claras y accionables`,
model: openai('gpt-5'),
tools: await mcpClient.getTools(), // <--- Esta es la línea mágica
});

Cuando un usuario pregunta: “¿Cuál es la mejor ruta de San Francisco a Lake Tahoe, y debería preocuparme por el clima?”

El agente lee las definiciones de herramientas disponibles, se da cuenta de que tiene acceso a herramientas de rutas de Google Maps y pronóstico meteorológico, las ejecuta con los parámetros correctos y responde con una ruta óptima más las condiciones climáticas actuales en el camino.

No escribiste ni una sola línea de código de la API de Google Maps ni de integración con el servicio meteorológico.


Autenticación por Usuario

Hay un error de seguridad fácil de cometer aquí: hardcodear credenciales.

Si pones una sola clave de API de Google Maps en tus variables de entorno y das el trabajo por terminado, todos los usuarios comparten la misma cuota y los mismos límites de tasa. Más importante aún, si usas servicios que almacenan preferencias de usuario (como ubicaciones guardadas o rutas favoritas), todos verían los mismos datos. Esto funciona bien para demos. Es un pasivo en producción.

Mastra lo resuelve permitiéndote crear clientes MCP de forma dinámica con credenciales específicas por usuario:

async function handleUserRequest(userPrompt: string, userCredentials: UserCreds) {
// Crear un cliente para ESTE usuario en particular
const userMcp = new MCPClient({
servers: {
googleMaps: {
url: new URL(process.env.GOOGLE_MAPS_MCP_URL!),
requestInit: {
headers: {
// Clave de API o token específico del usuario
Authorization: `Bearer ${userCredentials.mapsApiKey}`,
'X-User-ID': userCredentials.userId,
},
},
},
},
});
const agent = mastra.getAgent('navigationDirectionsAgent');
// Inyectar herramientas en tiempo de ejecución
const response = await agent.generate(userPrompt, {
toolsets: await userMcp.getToolsets(),
});
return response;
}

Cada usuario obtiene su propio conjunto de herramientas aislado con sus propias cuotas y preferencias de API. Las ubicaciones guardadas del Usuario A permanecen privadas, el historial de rutas del Usuario B es independiente. Así es como funcionan en la práctica los agentes SaaS multi-tenant.


Construcción de Herramientas Compuestas

A veces necesitas combinar múltiples herramientas MCP en una sola operación. Quizás quieras planificar una ruta que tenga en cuenta tanto el tráfico en tiempo real como las condiciones meteorológicas en el camino.

Puedes envolver herramientas MCP en definiciones de herramientas personalizadas:

export const smartRouteTool = createTool({
id: 'smart-route-planner',
description: 'Planifica ruta óptima considerando tráfico y condiciones climáticas',
execute: async ({ context, mastra }) => {
// Obtener las herramientas raw
const tools = await mcpClient.getTools();
// 1. Obtener la ruta base de Google Maps
const routeData = await tools.googleMaps_getDirections.execute({
context: {
origin: context.origin,
destination: context.destination
}
});
// 2. Consultar el clima a lo largo de la ruta
const weatherData = await tools.weather_getForecast.execute({
context: { coordinates: routeData.waypoints }
});
// 3. Devolver la ruta mejorada con alertas meteorológicas
return {
...routeData,
weatherAlerts: weatherData.alerts,
recommendation: weatherData.severe ? 'Consider delaying trip' : 'Safe to travel'
};
},
});

Esto te da un control preciso sobre exactamente cómo interactúan las herramientas mientras aprovechas el protocolo MCP para el trabajo pesado.


Hacia Dónde Conduce Esto

Escribir clientes de API personalizados para cada servicio con el que tu agente de IA necesita comunicarse nunca fue sostenible. Escala mal, se rompe a menudo y ata tu plataforma a implementaciones específicas.

MCP no resuelve todos los desafíos de integración: la autenticación sigue siendo compleja, la limitación de tasas sigue importando y no todos los servicios tienen un servidor MCP todavía. Pero establece una base que hace que construir plataformas de agentes sea significativamente menos doloroso.

Si estás diseñando un sistema de IA que necesita interactuar con servicios externos, entender MCP probablemente valga tu tiempo.

Recursos

Lee la Serie

  1. Enrutamiento LLM
  2. Seguridad y Guardrails
  3. MCP e Integraciones de Herramientas (Esta Publicación)
  4. Flujos de Trabajo y Memoria