Beta FundadoresPrecio de fundador: US$ 9,90/mes fijo mientras sigas suscrito.→
InicioBlogDicasCómo crear un servidor MCP en TypeScript desde cero
Marca oficial del Model Context Protocol sobre fondo negro, con el símbolo blanco y el nombre completo del protocolo.
Imagen: Model Context Protocol
Dicas6 minConfirmado oficialmente

Cómo crear un servidor MCP en TypeScript desde cero

Crea y prueba un servidor MCP en TypeScript con el SDK actual, una herramienta simple, validación de entrada y conexión local antes de conectarlo a un agente.

Marcelo Santiago

Marcelo Santiago

Criador do bridgecode

Un MCP server es un programa que ofrece herramientas y contexto a un agente a través del Model Context Protocol. En lugar de crear una integración distinta para cada modelo o aplicación, implementas una interfaz estandarizada y dejas que el host negocie la conexión.

La mayor newsletter de IA del Mundo

Recibe artículos sobre IA en tu correo

Selección técnica sobre modelos, agentes y herramientas de código. Sin spam, cancela cuando quieras.

Cada día a las 8:00 y a las 16:00 de Brasilia. Sin spam.

En este tutorial vamos crear un servidor pequeño en TypeScript, anunciar una herramienta llamada somar y probarla con un cliente MCP local. El ejemplo no accede a archivos, red ni cuentas externas, así que es un comienzo seguro para entender el ciclo completo.

En este artículo vas a ver:

Qué es un MCP server y dónde encaja

MCP significa Model Context Protocol, un protocolo abierto para conectar aplicaciones de IA a herramientas y fuentes de contexto. El host es la aplicación que la persona usa, como un asistente o editor. Crea un cliente MCP, que se comunica con el servidor responsable de exponer recursos y herramientas.

Diagrama del Model Context Protocol con aplicaciones de IA a la izquierda, el protocolo en el centro y sistemas de datos y herramientas a la derecha, conectados por flujos bidireccionales.
Imagem: Model Context Protocol

El diagrama oficial de la arquitectura MCP muestra esta separación. Tu servidor no es, por sí mismo, un agente que decide qué hacer. Publica capacidades descritas para que un host compatible pueda descubrirlas y llamarlas.

Esto ayuda a mantener la integración organizada. Un servicio puede exponer una búsqueda, otro puede consultar tareas y otro puede leer datos autorizados. El host decide cuándo llamar a cada herramienta según la conversación y los permisos disponibles.

Antes de crear un MCP server en TypeScript

Necesitas Node.js 20 o superior y un proyecto TypeScript ejecutado con tsx. El 27 de octubre de 2026, las versiones actuales del SDK MCP para servidor y cliente eran 2.4.0, y el paquete declara compatibilidad con Node.js a partir de la versión 20.

El ejemplo usa Zod para validar los argumentos recibidos. Esta validación evita aceptar valores fuera del contrato esperado y deja la descripción de los parámetros disponible para el cliente MCP.

Crea un directorio e inicializa el paquete. Luego usa esta package.json como base y ejecuta npm install:

JSON · package.json
{
  "name": "mcp-server-demo",
  "private": true,
  "type": "module",
  "scripts": {
    "start": "tsx src/server.ts",
    "test": "tsx src/client.ts"
  },
  "dependencies": {
    "@modelcontextprotocol/client": "2.4.0",
    "@modelcontextprotocol/server": "2.4.0",
    "zod": "4.2.0"
  },
  "devDependencies": {
    "tsx": "4.23.15"
  }
}

El type activa los módulos ES en Node.js. Los scripts llaman al servidor y al cliente sin requerir una etapa separada de compilación. La documentación actual del SDK TypeScript del Model Context Protocol reúne ejemplos y notas de migración de la versión 2.

Paso 1: prepara el proyecto del MCP server

Crea src/server.ts y registra una herramienta con dos números de entrada. El servidor usa transporte STDIO, en el que los mensajes del protocolo pasan por el flujo estándar del proceso local.

TypeScript · src/server.ts
import { McpServer } from "@modelcontextprotocol/server";
import { serveStdio } from "@modelcontextprotocol/server/stdio";
import { z } from "zod/v4";

serveStdio(() => {
  const server = new McpServer({ name: "servidor-mcp-demo", version: "1.0.0" });

  server.registerTool(
    "somar",
    {
      description: "Soma dois números e devolve o resultado.",
      inputSchema: z.object({
        a: z.number().describe("Primeiro número"),
        b: z.number().describe("Segundo número")
      })
    },
    async ({ a, b }) => ({
      content: [{ type: "text", text: String(a + b) }]
    })
  );

  return server;
});

McpServer organiza las capacidades publicadas por el proceso. registerTool define el nombre, la descripción, el esquema de entrada y la función que se ejecutará. La función devuelve un bloque de texto en el formato esperado por el protocolo.

La herramienta de ejemplo solo calcula la suma. En una aplicación real, reemplaza esa lógica por una tarea delimitada, como consultar un pedido o buscar información interna. Comienza con lectura y mantén las operaciones que alteran datos fuera del primer prototipo.

Paso 2: registrar la herramienta sumar

Para confirmar que el servidor responde, crea src/client.ts. Ese cliente inicia el proceso por el transporte STDIO, lista las herramientas publicadas y llama a somar con los valores 2 y 3.

TypeScript · src/client.ts
import { Client } from "@modelcontextprotocol/client";
import { StdioClientTransport } from "@modelcontextprotocol/client/stdio";

const client = new Client({ name: "mcp-server-test", version: "1.0.0" });
const transport = new StdioClientTransport({
  command: process.execPath,
  args: ["--import", "tsx", "src/server.ts"]
});

try {
  await client.connect(transport);
  const { tools } = await client.listTools();
  console.log(`tools=${tools.map((tool) => tool.name).join(",")}`);
  const result = await client.callTool({ name: "somar", arguments: { a: 2, b: 3 } });
  console.log(`result=${result.content.map((part) => part.type === "text" ? part.text : "").join("")}`);
} finally {
  await client.close();
}

Ejecuta npm test. El resultado esperado en este ejemplo es tools=somar y result=5. El listado confirma que el cliente descubrió la herramienta; la segunda línea confirma que el servidor procesó la llamada y devolvió el contenido.

Si el proceso se cierra sin respuesta, revisa primero si el directorio contiene src/server.ts y src/client.ts, si los paquetes están instalados y si Node.js cumple con el requisito mínimo. Los mensajes de diagnóstico deben ir a stderr, no a stdout, porque el transporte STDIO reserva el flujo estándar para el protocolo.

Cómo conectar el MCP server a un host

Después de la prueba local, registra el proceso en un host compatible con MCP. Cada aplicación tiene su propio formato de configuración y política de aprobación, así que sigue la documentación específica del host en lugar de copiar un ejemplo de otro editor.

En la guía para configurar MCP en VS Code, ve cómo agregar un servidor al cliente. Para entender un caso de herramienta MCP orientada a agentes, lee también sobre el Retrieve de Work IQ.

Antes de compartir el servidor, define qué datos puede leer, quién puede llamarlo y qué acciones requieren confirmación. No coloques tokens ni contraseñas en el código, en los argumentos de la herramienta ni en mensajes de log. Si una herramienta modifica archivos, envía mensajes o activa pagos, limita el alcance y prueba la confirmación humana.

Mantén las descripciones cortas y específicas. Una herramienta llamada somar con entradas a y b comunica mejor su intención que una herramienta genérica llamada executar. Para cada herramienta, indica qué hace, qué argumentos acepta y qué ocurre en caso de error.

Preguntas frecuentes sobre crear un servidor MCP en TypeScript

¿Qué es un servidor MCP?

Es un proceso que publica herramientas a través del Model Context Protocol para que un host compatible pueda descubrirlas y llamarlas.

¿Qué versión del SDK de TypeScript usar?

El 27 de octubre de 2026, la versión más reciente consultada del SDK MCP para cliente y servidor era 2.4.0, compatible con Node.js 20 o superior.

¿Necesito un cliente MCP para probar el servidor?

El tutorial usa un cliente local para listar la herramienta y hacer una llamada de prueba. También puedes conectar el servidor a un host compatible con MCP.

¿Cómo probar un servidor MCP localmente?

Crea los archivos del servidor y del cliente, instala las dependencias y ejecuta npm test. El ejemplo lista sumar y devuelve 5 para los argumentos 2 y 3.

Un MCP server pequeño facilita validar la integración

El flujo probado fue: declarar el contrato, registrar la función, conectar un cliente, listar la herramienta y llamarla. El resultado 5 confirma la comunicación local, pero no sustituye pruebas de seguridad, autorización o comportamiento en producción.

Ahora que la integración tiene un contrato claro, puedes dividir la planificación, la implementación y la revisión entre agentes. ¿Tienes una idea estancada? Pon el MCP server a trabajar y arma tu squad de agentes de IA en bridgecode.

Fuente: Model Context Protocol

Comparte este artículo

Añadir bridgecode como fuente en Google
Tags:#MCP#Model Context Protocol#TypeScript#servidor MCP#agentes de IA
Marcelo Santiago
Marcelo Santiago·Creador de bridgecode

Desarrollador y creador de bridgecode, un entorno de desarrollo agéntico para orquestar squads de agentes de IA. Ayuda a quienes van del vibe coding al desarrollo profesional a pasar de la idea al producto entregado.

La mayor newsletter de IA del Mundo

¿Te gustó este contenido? Mantente al día en ingeniería con IA.

Análisis de código, arquitectura multiagente, benchmarks de tokens y herramientas seleccionadas por desarrolladores para desarrolladores.

Cada día a las 8:00 y a las 16:00 de Brasilia. Sin spam.