Servidor MCP de tareas
by MxrxnxX
README.md
# Servidor MCP de tareas
Proyecto del **Trabajo Extraclase 1 de Programación IV**. Implementa un servidor
Model Context Protocol (MCP) que administra tareas en un archivo JSON local y
expone un recurso, dos herramientas y un prompt.
## Capacidades
- **Resource `tasks://pending`**: devuelve únicamente las tareas no completadas.
- **Tool `add_task`**: agrega una tarea con nombre, descripción y prioridad
(`alta`, `media` o `baja`).
- **Tool `complete_task`**: marca como completada una tarea existente por ID.
- **Prompt `daily_summary`**: construye una plantilla con el estado actual para
generar un resumen diario.
El servidor utiliza transporte **stdio**. El host o cliente lo inicia como
subproceso y los mensajes MCP viajan por `stdin` y `stdout`.
## Requisitos
- Python 3.11 o superior.
- Acceso a una terminal.
- Claude Desktop, MCP Inspector u otro cliente MCP compatible para la integración.
## Instalación
### Windows (PowerShell)
```powershell
cd C:\RUTA\mcp-todo-server
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
```
### macOS o Linux
```bash
cd /RUTA/mcp-todo-server
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
```
## Ejecución
El servidor `stdio` espera que un cliente envíe el primer mensaje; por eso, al
ejecutarlo directamente no imprime un menú ni abre un puerto:
```bash
python server.py
```
Use `Ctrl+C` para detenerlo.
## Cliente de demostración
`client_demo.py` es un cliente MCP compatible construido con el SDK oficial. Se
conecta por `stdio`, descubre las capacidades y ejecuta todas las operaciones
pedidas en el ejercicio:
```bash
python client_demo.py --reset
```
Para guardar una transcripción UTF-8:
```bash
python client_demo.py --reset --output evidence/client_demo_output.txt
```
La opción `--reset` restaura los dos registros iniciales antes de la prueba. La
demostración consulta el Resource, agrega dos tareas, completa una, obtiene el
Prompt y vuelve a consultar el Resource.
## Pruebas automatizadas
```bash
python -m pytest -q
```
La suite comprueba:
1. Descubrimiento del Resource, Tools y Prompt.
2. Lectura exclusiva de tareas pendientes.
3. Creación y finalización de tareas.
4. Contenido dinámico de `daily_summary`.
5. Manejo del error al completar un ID inexistente.
## MCP Inspector
Con Node.js instalado, se puede abrir la interfaz oficial:
```bash
npx @modelcontextprotocol/inspector .venv/Scripts/python.exe server.py
```
En macOS o Linux cambie el ejecutable por `.venv/bin/python`.
## Configuración de Claude Desktop
1. Abra `claude_desktop_config.example.json`.
2. Reemplace `C:\\RUTA\\mcp-todo-server` por la ruta absoluta del proyecto.
3. Copie la entrada `mcpServers` al archivo de configuración de Claude Desktop.
En Windows normalmente se encuentra en:
`%APPDATA%\Claude\claude_desktop_config.json`.
4. Cierre completamente Claude Desktop y vuelva a abrirlo.
Ejemplo:
```json
{
"mcpServers": {
"todo-server": {
"command": "C:\\RUTA\\mcp-todo-server\\.venv\\Scripts\\python.exe",
"args": ["C:\\RUTA\\mcp-todo-server\\server.py"]
}
}
}
```
No use rutas relativas: el host puede iniciar el servidor desde otro directorio.
## Estructura
```text
mcp-todo-server/
server.py
client_demo.py
tasks.json
requirements.txt
claude_desktop_config.example.json
tests/
test_server.py
diagramas/
arquitectura_mcp_ecommerce.mmd
flujo_consulta_inventario.mmd
evidence/
client_demo_output.txt
01_inspector_connected.png
02_add_task_result.png
03_complete_task_result.png
04_resource_pending.png
05_daily_summary_prompt.png
```
## Publicación en Git
```bash
git init
git add .
git commit -m "Implementar servidor MCP de tareas"
git branch -M main
git remote add origin URL_DEL_REPOSITORIO
git push -u origin main
```
La URL final del repositorio debe añadirse al informe antes de entregar.
## Referencias técnicas
- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)
- [MCP Specification](https://modelcontextprotocol.io/specification/2026-07-28)
- [MCP Inspector](https://github.com/modelcontextprotocol/inspector)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues