mcp-todo-server
mcp-todo-server
Servidor MCP (Model Context Protocol) básico que expone una lista de tareas (to-do list),
implementado en TypeScript con el SDK oficial @modelcontextprotocol/sdk.
Trabajo Extraclase 1 — Programación IV — Model Context Protocol.
Capacidades expuestas
Tipo | Nombre | Descripción |
Resource |
| Devuelve la lista completa de tareas almacenadas en |
Tool |
| Agrega una nueva tarea (nombre, descripción, prioridad) |
Tool |
| Marca una tarea existente como completada, dado su ID |
Prompt |
| Genera una plantilla de resumen del estado actual de las tareas |
Estructura del proyecto
mcp-todo-server/
├── src/
│ └── server.ts # Servidor MCP principal
├── tasks.json # Almacenamiento de tareas (base de datos simple)
├── tsconfig.json # Configuración de TypeScript
├── package.json
└── README.mdRequisitos
Node.js 18 o superior
npm
Instalación
npm installEsto instala las dependencias: @modelcontextprotocol/sdk, zod (validación de esquemas),
y como dependencias de desarrollo typescript, @types/node y tsx.
Ejecución
Modo desarrollo (ejecuta el TypeScript directamente, sin compilar):
npm run devModo producción (compila a JavaScript y luego ejecuta):
npm run build
npm startEl servidor se comunica por stdio (entrada/salida estándar), que es el transporte que usa Claude Desktop y la mayoría de clientes MCP locales. Al arrancar correctamente vas a ver en la terminal:
Servidor MCP 'mcp-todo-server' corriendo por stdio...Ese mensaje sale por stderr a propósito, para no interferir con los mensajes JSON-RPC
que van por stdout.
Cómo probarlo sin un cliente gráfico
Se puede usar el Inspector oficial de MCP, que abre una interfaz web para invocar
Resources, Tools y Prompts a mano:
npx @modelcontextprotocol/inspector npx tsx src/server.tsEjemplo de uso de cada capacidad
Leer el resource de tareas → devuelve el arreglo tasks de tasks.json en formato JSON.
Tool add_task, argumentos:
{ "name": "Repasar JSON-RPC", "description": "Leer la especificación 2.0", "priority": "media" }Tool complete_task, argumentos:
{ "id": 1 }Prompt daily_summary no recibe argumentos: arma automáticamente un resumen con
las tareas pendientes y completadas, agrupadas por prioridad.
Autor
Camila — Universidad Nacional de Costa Rica, Programación IV.