Skip to main content
Glama
MxrxnxX

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)

Maintenance

ActivityMaintained
ResponsivenessNo issues