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);
Probar con MCP Inspector
Prueba tu servidor en tiempo real corriendo npx @modelcontextprotocol/inspector node dist/index.js. Podrás invocar get_weather desde la interfaz gráfica de depuración.
Ejercicio Práctico Ninja 🥷
- Crea la carpeta
mcp-weathery compila el código TypeScript. - Inicia el Inspector oficial de MCP.
- Ejecuta la herramienta
get_weatherenviando{ "city": "Cusco" }y verifica la respuesta JSON.