Prompteo

Unidad 2 · 1 min

Tu primer servidor por stdio

Montar el proyecto en TypeScript, instalar el SDK y registrar la primera herramienta sin autenticación.

Tu primer servidor por stdio

El SDK oficial de TypeScript vive en el repositorio modelcontextprotocol/typescript-sdk y publica el paquete @modelcontextprotocol/server (versión 2.0.0), junto con @modelcontextprotocol/client.

El tutorial oficial arranca así, con Node.js 20 o superior:

npm install @modelcontextprotocol/server zod
npm install -D @types/node typescript

En package.json hace falta "type": "module".

El servidor mínimo

import { McpServer } from "@modelcontextprotocol/server";
import { StdioServerTransport } from "@modelcontextprotocol/server/stdio";
import { z } from "zod";

const server = new McpServer({
  name: "weather",
  version: "1.0.0",
});

server.registerTool(
  "get_alerts",
  {
    description: "Get weather alerts for a state",
    inputSchema: z.object({ /* ... */ }),
  },
  async (args) => ({ content: [{ type: "text", text: "..." }] }),
);

const transport = new StdioServerTransport();
await server.connect(transport);

Tres piezas: se crea el McpServer con su nombre y versión, se registran herramientas con registerTool(name, config, handler), y se conecta un transporte.

La regla de oro de stdio

En stdio, la salida estándar es el canal del protocolo. Todo mensaje de diagnóstico va a stderr — por eso el tutorial escribe su línea de arranque con console.error(...). Un console.log mal puesto rompe la conexión.

Este servidor no tiene autenticación, y está bien: la especificación dice que las implementaciones stdio no deberían seguir el flujo de autorización, sino tomar las credenciales del entorno.