MCP Model Context Protocol en TypeScript: diseñá tools portables entre Claude, GPT y modelos locales
La mayoría de los tutoriales de MCP empiezan con npm install @anthropic-ai/sdk y en el tercer bloque de código ya tienen lógica de negocio acoplada al cliente de Anthropic. Sí, leíste bien: te enseñan el protocolo de portabilidad usando código que no es portable. Y eso cambia completamente cómo terminás diseñando tus tools cuando necesitás moverlas.
Mi tesis es simple y la defiendo desde el diseño: el error central al implementar MCP tools no es sintáctico ni de configuración — es de acoplamiento. Metés lógica dentro del handler del SDK, y lo que debería ser un contrato universal se convierte en código que solo funciona con un proveedor. La ):
Tools: funciones que el modelo puede invocar con parámetros estructurados
Resources: datos que el servidor expone para que el modelo los lea
Prompts: templates reutilizables con argumentos
Lo que la spec no define es cómo implementás la lógica interna de una tool. No dice que tenés que usar el SDK de Anthropic. No dice que el handler tiene que conocer qué modelo lo llamó. No dice que la respuesta tiene que tener formato propietario.
Una tool en MCP tiene esta forma lógica:
// Contrato mínimo que define la spec — agnóstico al proveedor
interface MCPTool {
name: string; // identificador único de la tool
description: "string; // qué hace, para que el modelo entienda cuándo usarla"
inputSchema: { // JSON Schema estricto del input
type: "object";
properties: Record<string, unknown>;
required: string[];
};
}
// El handler recibe input validado y devuelve contenido estructurado
type ToolHandler = (input: Record<string, unknown>) => Promise<{
content: Array<{ type: "text"; text: string }>;
isError?: boolean;
}>;
Eso es todo lo que el protocolo garantiza. El content es un array tipado, isError es opcional. Si diseñás dentro de esos límites, la tool es portable.
El contrato de input/output que hace o rompe la portabilidad
Acá está la fricción real. Cuando un desarrollador arranca con el ejemplo del SDK oficial de Anthropic ( no menciona a ningún modelo específico en su definición de primitivas.
¿Necesito @anthropic-ai/sdk para implementar MCP tools?
No necesariamente. Necesitás el SDK de Anthropic si tu cliente (el que llama al modelo) es Claude. Pero el servidor MCP — donde viven las tools — puede implementarse con cualquier librería compatible o incluso desde cero si seguís el protocolo de transporte. El , este es el siguiente paso natural: una vez que el agente sabe qué hacer, las tools tienen que estar diseñadas para no acoplarse a quién lo ejecuta.
Y si estás empezando a pensar en rate limiting para estas tools expuestas como endpoints,
SOCIAL SHARE CARD GENERATOR