MCP vs API: cuándo convertir una API en herramienta para agentes de IA

MCP no sustituye tu API ni tu backend: añade un contrato descubrible para que hosts y agentes usen capacidades existentes con límites, identidad y respuestas estructuradas.

Compartir
MCP vs API: cuándo convertir una API en herramienta para agentes de IA

MCP vs API no es una elección excluyente. Una API es el contrato operativo que aplicaciones, servicios y SDKs usan para leer o cambiar datos. MCP es una capa de contrato, descubrimiento y transporte que presenta capacidades seleccionadas a hosts y agentes de IA. La API sigue siendo el backend; MCP es un adaptador controlado hacia él.

La API define cómo se ejecuta una operación; MCP define cómo una capacidad puede descubrirse y usarse en un flujo agentic. La identidad, política y acceso a datos deben vivir en capas confiables fuera del prompt.

Por qué conviven API y MCP

Reutilizar el cliente de dominio evita duplicar reglas. El servidor MCP valida argumentos, obtiene identidad del contexto confiable y llama a un servicio existente. Ese servicio comprueba tenant, permisos, estado y consistencia. Si cambia la API interna, el adaptador absorbe el cambio.

Una API puede tener cientos de endpoints genéricos; MCP puede publicar tres tools de alto nivel que un modelo seleccione mejor. Mantén ambos contratos: el de API protege consumidores deterministas y el de MCP protege discovery y exposición gradual.

No uses MCP como gateway universal ni como API administrativa para el modelo. Diseña una superficie pequeña de intenciones, con versión, owner y resultados validables.

Checklist

Tools, resources y prompts

Una tool representa una intención acotada, no un proxy como call_api(path, body). get_invoice_summary es más fácil de autorizar y evaluar que aceptar cualquier método y URL. Limita filtros, paginación, campos y tamaño.

Un resource encaja para documentación, estado o contexto de solo lectura. No escondas mutaciones detrás de una lectura. Un prompt ayuda a interactuar, pero no es frontera de seguridad: el servidor repite comprobaciones.

Devuelve resultados estructurados con campos estables, identificadores y estado. Los mensajes para el modelo acompañan, pero no sustituyen un contrato. outputSchema y structuredContent ayudan a encadenar tools.

¿Te está sirviendo? Hay una dosis cada semana

Te resumo herramientas de IA para devs, agentes, MCP, seguridad y workflows en un email de 5 minutos. En español y sin ruido.

Suscribirme gratis

Arquitectura de referencia

El flujo recomendado es host/agente → cliente MCP → servidor MCP → servicio de dominio → cliente API o repositorio → backend. En el borde MCP filtras tools, validas esquemas, aplicas límites y conectas identidad. En dominio compruebas tenant, autorización, estado y reglas.

Puntos a revisar

Lo que conviene comprobar

Para lecturas devuelve el mínimo dato necesario. Para mutaciones crea una intención explícita, exige aprobación cuando corresponda, usa una clave de idempotencia y persiste auditoría. Un timeout no demuestra que no hubo efecto: marca estado desconocido y reconcilia.

La imagen resume la frontera: dos rutas llegan al backend compartido, pero solo MCP añade discovery y contrato para agentes. MCP no es una base de datos ni una segunda fuente de verdad.

Ejemplo TypeScript

Este ejemplo registra una tool real. El host crea el servidor con un TrustedContext cerrado por sesión; el modelo solo aporta los argumentos declarados. La identidad, tenant y capacidades no entran por el schema.

import { z } from "zod";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

const Input = {
  orderId: z.string().uuid(),
  includeLines: z.boolean().default(false),
};
type TrustedContext = Readonly<{
  subject: string; tenantId: string; capabilities: ReadonlySet<string>;
}>;

export function createServer(ctx: TrustedContext) {
  const server = new McpServer({ name: "orders", version: "1.0.0" });
  server.registerTool("read_order", {
    description: "Lee el resumen de un pedido del tenant autenticado",
    inputSchema: Input,
  }, async ({ orderId, includeLines }) => {
    if (!ctx.capabilities.has("orders:read"))
      throw new Error("capability_denied");
    const result = await ordersApi.getSummary({
      orderId, tenantId: ctx.tenantId, includeLines,
    });
    const structuredContent = {
      orderId: result.id, status: result.status, total: result.total,
      lines: includeLines ? result.lines : undefined,
    };
    return {
      structuredContent,
      content: [{ type: "text", text: JSON.stringify(structuredContent) }],
    };
  });
  return server;
}

El adaptador de sesión autentica al host y pasa un contexto cerrado; no acepta tenant, subject, scopes ni tokens del modelo. Para una tool mutante añade idempotencia ligada a la intención, política independiente y aprobación humana.

Pruebas y operación

Prueba listado de tools, schemas inválidos, campos desconocidos, capability denied, tenant incorrecto, resource inexistente y resultados parciales. Ejecuta también la API directa para demostrar las mismas reglas.

Mide latencia por capa, validaciones, denegaciones, tamaño, reintentos y timeouts. Conserva trace_id, tenant redactado, tool/version, hash de argumentos y política; nunca tokens.

Evalúa trayectorias: tool elegida, argumentos, aprobación, allowlist y manejo de errores. Versiona schemas y descripciones porque una descripción puede cambiar la selección. Usa MCP Inspector en manual y CI en casos críticos.

Checklist

Plan incremental

Inventaría APIs y clasifica operaciones como lectura, escritura reversible o mutación crítica. Elige una lectura estrecha, crea cliente de dominio y define identidad, allowlist, schema y resultado.

Conecta un host en entorno sintético. Compara MCP con API directa, añade logs, fixtures y casos de prompt injection. Después expón una operación reversible con idempotencia y aprobación.

Versiona contrato, documenta owners, rota credenciales, añade CI de schemas y amplía por capacidad. Retira MCP cuando no aporte discovery real.

Preguntas frecuentes

¿MCP reemplaza una API REST?

No. Presenta capacidades; la API o dominio sigue ejecutando reglas y accediendo a datos.

¿Puedo exponer todos los endpoints como tools?

No es recomendable. Diseña tools de intención estrecha, allowlist, límites y resultados validables.

¿Dónde se comprueba el usuario?

En contexto autenticado y backend confiable, nunca en un campo que rellene el modelo.

¿MCP solo sirve para tools?

No. También define resources y prompts, pero ninguno sustituye autorización o validación.

¿Necesito MCP con un solo agente?

Solo si discovery o separación host/backend justifican el coste; API directa puede ser mejor.

¿Qué hago tras un timeout de mutación?

Marca intención desconocida, reconcilia por clave y no repitas hasta saber si fue aceptada.

Cómo convertir una API en una tool MCP sin duplicar el backend

  1. Elegir capacidad. selecciona una lectura estrecha y documenta owner, datos, riesgo y consumidor.
  2. Definir contrato. crea schema de input, resultado estructurado, límites, errores y versión.
  3. Construir adaptador. registra tool MCP y llama al servicio de dominio o cliente API existente.
  4. Conectar identidad. deriva subject, tenant y capacidades del contexto autenticado.
  5. Aplicar política. usa allowlists, scopes mínimos, rate limits y separación lectura/mutación.
  6. Probar y observar. ejecuta casos negativos con Inspector/CI y compara con API directa.
  7. Ampliar. añade aprobación e idempotencia para mutaciones y elimina MCP cuando no aporte discovery.
Arquitectura donde las rutas API y MCP atraviesan contratos distintos hacia un backend y servicio de dominio compartidos
API y MCP pueden convivir: MCP añade descubrimiento y contrato para agentes, mientras el backend compartido conserva negocio, autorización y verdad de datos.

Fuentes y referencias

También te puede interesar

MCP en producción: seguridad, permisos y supply chainMCP outputSchema y structuredContentMCP Streamable HTTP: servidores remotosOAuth 2.1 para MCP: autorizaciónMCP Inspector: testing y depuración

Recibe una lectura semanal de herramientas IA para devs

Cada semana te resumo herramientas de IA para devs, agentes, MCP, seguridad y workflows en un email de 5 minutos. En español y sin ruido.

Suscribirme gratis

Lo mejor de la IA para desarrolladores, cada martes

Newsletter en español, gratis. Las herramientas, modelos y trucos de IA para devs que de verdad importan — sin ruido.