Saltar al contenido principal
MDev Env Pro
Curso: MCPs + Skills43% Completado

En este módulo aprenderás:

  • Construye un servidor MCP desde cero con el SDK oficial de TypeScript para consultar datos.
  • Comandos y configuraciones clave para 03. Creando tu primer servidor MCP en TypeScript
  • Ejercicios prácticos listos para probar en tu terminal local

Tu Primer Servidor MCP desde Cero

Mano, crear un servidor MCP en TypeScript toma menos de 20 líneas de código gracias al SDK oficial @modelcontextprotocol/sdk.

1. Inicializar el Proyecto

mkdir mcp-weather && cd mcp-weather
npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node

2. Escribir el Servidor (src/index.ts)

src/index.tstypescript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
ListToolsRequestSchema,
CallToolRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';

// 1. Instanciar el servidor MCP
const server = new Server(
{ name: 'weather-server', version: '1.0.0' },
{ capabilities: { tools: {} } }
);

// 2. Registrar la lista de herramientas disponibles (Tools)
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
  {
    name: 'get_weather',
    description: 'Obtener el clima actual de una ciudad en Perú',
    inputSchema: {
      type: 'object',
      properties: {
        city: { type: 'string', description: 'Nombre de la ciudad (ej: Lima, Cusco)' },
      },
      required: ['city'],
    },
  },
],
}));

// 3. Manejar la ejecución de la herramienta
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === 'get_weather') {
  const city = String(request.params.arguments?.city);
  return {
    content: [
      {
        type: 'text',
        text: `El clima en ${city} es de 22°C con cielo despejado ☀️`,
      },
    ],
  };
}
throw new Error('Herramienta no encontrada');
});

// 4. Iniciar el transporte por stdio
const transport = new StdioServerTransport();
await server.connect(transport);

Ejercicio Práctico Ninja 🥷

  1. Crea la carpeta mcp-weather y compila el código TypeScript.
  2. Inicia el Inspector oficial de MCP.
  3. Ejecuta la herramienta get_weather enviando { "city": "Cusco" } y verifica la respuesta JSON.