TODO MCP CLI y servidor
Este repositorio contiene una implementación mínima del Protocolo de contexto de modelo (MCP) para una aplicación de lista de tareas pendientes, que incluye:
Servidor FastAPI (
server/): expone un punto final/toolspara el descubrimiento de herramientas y un punto final/rpcpara llamadas JSON-RPC para realizar operaciones en tareas.Cliente CLI (
client/cli.py): una interfaz de línea de comandos de Python que interactúa con un LLM (a través de OpenAI) y el servidor MCP para crear, enumerar y completar tareas mediante llamadas de función.
Características
Agregar tareas con título, contenido y fecha de vencimiento opcional
Enumerar todas las tareas
Marcar tareas como completadas
Generación de ID de tareas del lado del servidor
Cumplimiento de JSON-RPC 2.0 para la invocación de herramientas
Prerrequisitos
Python 3.10+
pipenv o
venvpara entornos virtualesUna clave API de OpenAI
Instalación
Clonar el repositorio:
git clone https://github.com/oseni99/todo-mcp cd todo-mcpCrear y activar un entorno virtual:
python3 -m venv .venv source .venv/bin/activateInstalar dependencias:
pip install -r requirements.txtCrea un
.enven la raíz del proyecto:OPENAI_API_KEY=sk-... MCP_SERVER=http://127.0.0.1:8000
Estructura del directorio
todoMCP/
├── client/ # CLI client code
│ └── cli.py # Main entrypoint for the MCP-CLI
├── server/ # FastAPI server code
│ ├── handlers.py # Business logic for add, list, complete
│ ├── tools.py # JSON-Schema tool manifest
│ └── main.py # FastAPI app with /tools and /rpc
├── .env # Environment variables (not committed)
├── requirements.txt # Python dependencies
└── README.md # This fileEjecución del servidor
fastapi dev server/main.pyVisite http://127.0.0.1:8000/docs para obtener documentos de API interactivos.
Ejecución de la CLI
Desde la raíz del proyecto:
python -m client.cliEscriba comandos en lenguaje natural en el indicador, por ejemplo:
> Create a task titled "Write blog post" with content "Outline first draft" due 2025-05-20
> List my tasks
> Mark the first task as done
> Thanks!
> exitLa CLI imprimirá invocaciones de herramientas y respuestas LLM.