DoneTick MCP Server
🚀 DoneTick MCP Server (Model Context Protocol SSE)
Un servidor Model Context Protocol (MCP) completo y listo para producción que implementa HTTP Server-Sent Events (SSE) para DoneTick (gestión de quehaceres y tareas autoalojada).
Compatible con Mistral Le Chat, Claude Desktop, LibreChat, n8n, Open WebUI y cualquier cliente MCP.
📋 Características
El servidor proporciona 57 herramientas MCP especializadas que cubren la API de DoneTick, incluidos el historial de finalización y el seguimiento de tiempo. Cada endpoint se verifica contra una instancia en vivo mediante npm run smoke.
1. 📝 Quehaceres y tareas (donetick_*)
donetick_list_chores: Lista tareas con filtros (búsqueda, proyecto, estado).donetick_get_chore: Detalles completos de la tarea: recurrencia, asignados, subtareas, etiquetas, disparadores, además delastCompletedDate,lastCompletedByytimeSpentSeconds.donetick_create_chore: Crea un quehacer con fecha de vencimiento, recurrencia, prioridad, puntos, proyecto, subtareas, etiquetas, notificaciones, aprobación y disparadores de sensores.donetick_update_chore: Actualizaciones parciales o completas. Se aborta en lugar de escribir a ciegas si el quehacer no se puede leer primero.donetick_complete_chore: Completa un quehacer y programa su próxima recurrencia.donetick_undo_chore: Deshace la última finalización.donetick_delete_chore: Elimina permanentemente un quehacer (prefiere archivar).donetick_set_due_date: Establece, cambia o borra una fecha de vencimiento.donetick_set_priority: Establece la prioridad: 1 es la más alta (P1), 4 la más baja, 0 ninguna.donetick_skip_chore: Omite la recurrencia actual.donetick_nudge_chore: Envía un recordatorio al asignado.donetick_set_chore_notifications: Configura recordatorios (fecha de vencimiento, previo al vencimiento, insistencia, finalización).donetick_set_chore_project,donetick_set_chore_assignee: Reasigna un quehacer.
2. 📊 Historial de finalización (donetick_*)
donetick_get_chore_history: Cada finalización, omisión, reprogramación y fallo de un quehacer, con unstatusNamelegible y un resumen. Esta es la única forma fiable de distinguir "hecho" de "editado":updatedAtlos confunde.donetick_get_history: Actividad de todo el círculo, filtrable por rango de fechas y estado.donetick_modify_history_entry: Corrige cuándo se registró una finalización o sus notas.donetick_delete_history_entry: Elimina una entrada errónea.
3. ⏱️ Seguimiento de tiempo (donetick_*)
donetick_start_chore/donetick_pause_chore: Ejecuta el temporizador por quehacer.donetick_get_chore_timer: Tiempo total invertido más cada sesión de trabajo.donetick_reset_chore_timer: Borra el tiempo acumulado.donetick_adjust_time_session/donetick_delete_time_session: Corrige el historial a posteriori.
4. 🧩 Subtareas (donetick_*)
donetick_set_subtasks: Reemplaza toda la lista. Destructivo, pero conserva los ids y el estado de finalización al coincidir por nombre.donetick_add_subtask: Añade una subtarea, dejando las demás intactas.donetick_complete_subtask/donetick_uncomplete_subtask: Marca una subtarea, por id o por nombre.donetick_remove_subtask: Elimina una subtarea sin reescribir la lista.
Nota: completar un quehacer recurrente borra sus subtareas en lugar de marcarlas. Ese es el comportamiento propio de DoneTick, preparando la siguiente ocurrencia.
5. 🗄️ Archivado y aprobación (donetick_*)
donetick_list_archived_chores,donetick_archive_chore,donetick_unarchive_chore: Alternativa reversible a la eliminación.donetick_approve_chore,donetick_reject_chore: Revisa las finalizaciones en quehaceres conrequireApproval.
6. 🏷️ Etiquetas y tags (donetick_*)
donetick_list_labels: Lista etiquetas, recurriendo a extraerlas de los quehaceres si es necesario.donetick_create_label,donetick_update_label,donetick_delete_label: Consulta la limitación a continuación: requieren un JWT.donetick_set_chore_labels,donetick_add_chore_label: Adjunta etiquetas a un quehacer.
7. ⚡ Cosas inteligentes y disparadores de eventos (donetick_*)
donetick_list_things,donetick_create_thing,donetick_update_thing,donetick_delete_thing.donetick_set_thing_state: Actualiza un sensor o contador, disparando automáticamente las tareas vinculadas.donetick_get_thing_history: Cada estado que una cosa ha tenido, y cuándo.donetick_link_thing_chore/donetick_unlink_thing_chore: Condiciones de disparo (eq,neq,gt,lt,gte,lte).
8. 📁 Proyectos (donetick_*)
donetick_list_projects,donetick_create_project,donetick_update_project,donetick_delete_project.
9. 👥 Círculos, miembros y filtros (donetick_*)
donetick_get_circle_info,donetick_list_members,donetick_list_filters.
Related MCP server: Deferno MCP Server
📅 Fechas y prioridades
Fechas. DoneTick vincula cada fecha a un time.Time de Go, por lo que solo acepta RFC3339. El conector además acepta YYYY-MM-DD y YYYY-MM-DD HH:mm, resolviéndolos en DONETICK_TIMEZONE (por defecto UTC) a las DONETICK_DEFAULT_DUE_TIME (por defecto 18:00). Establece ambos si quieres que "que vence mañana" signifique una hora local razonable en lugar de la medianoche UTC.
Prioridades. DoneTick cuenta hacia abajo: 1 es la prioridad más alta, mostrada como un P1 rojo en la interfaz web, y 4 es la más baja; 0 significa sin prioridad. Las versiones anteriores a 2.0.0 documentaban esto al revés, por lo que los quehaceres creados con las descripciones antiguas pueden tener valores invertidos.
⚠️ Limitaciones conocidas
Las etiquetas no se pueden crear ni editar con una clave de API. DoneTick monta
/api/v1/labelsdetrás de un middleware solo JWT, a diferencia de todas las demás rutas. La lectura recurre a extraer etiquetas de los quehaceres; adminístralas en la interfaz web.No se puede registrar una duración arbitraria.
POST /chores/{id}/dono acepta ningún valor de tiempo invertido, y el manejador de duración manual de DoneTick está definido pero nunca enrutado. Usa iniciar/pausar, o ajusta los límites de una sesión después.Las ventanas de historial están en días. El
limitde DoneTick es un número de días, no de filas;since/untilse aplican en el lado del cliente después de la obtención.
🔒 Seguridad y endurecimiento OWASP
OWASP A01 y A07 (Control de acceso y ataques de temporización): validación de token de autenticación en tiempo constante (
crypto.timingSafeEqual).OWASP A02 (Fallos criptográficos y fuga de información): redacción de secretos en registros y telemetría segura de
/healthsin credenciales.OWASP A03 (Inyección y SSRF): saneamiento estricto de protocolo (
http:,https:) que previene la inyección de protocolo o SSRF (file://,gopher://).OWASP A04 (Denegación de servicio): límites estrictos de carga útil JSON (
1mb) y límites de sesiones SSE activas con poda de conexiones.OWASP A05 (Configuración de seguridad incorrecta): cabeceras HTTP endurecidas (
X-Content-Type-Options: nosniff,X-Frame-Options: DENY,X-XSS-Protection: 0,Referrer-Policy: no-referrer,X-Powered-Bydeshabilitado). Ejecución de Docker sin root (USER node).
🐳 Inicio rápido con Docker
1. Crea un docker-compose.yml
services:
mcp-donetick:
image: ghcr.io/bibiwan/mcp_donetick:latest
container_name: mcp-donetick
restart: unless-stopped
ports:
- "3000:3000"
environment:
- PORT=3000
- HOST=0.0.0.0
- DONETICK_URL=http://donetick:2021
- DONETICK_TOKEN=
# Resolves date-only inputs such as "2026-08-30" to a local hour
- DONETICK_TIMEZONE=Europe/Paris
- DONETICK_DEFAULT_DUE_TIME=18:00
- MCP_AUTH_TOKEN=
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"]
interval: 30s
timeout: 5s
retries: 32. Lanza el contenedor
docker compose up -d🤖 Conéctate con Mistral Le Chat
En Mistral Le Chat, ve a Configuración ➔ Herramientas y MCP (o Conectores).
Haz clic en "Añadir servidor MCP".
Completa los ajustes de conexión:
Nombre:
DoneTickURL:
https://<your-server-host>:3000/sseAutenticación:
Bearer TokenToken:
<Your DoneTick API Token>(generado en DoneTick ➔ Configuración ➔ Token de API)
¡Guarda y empieza a chatear!
Ejemplos de indicaciones:
"¿Qué quehaceres están vencidos o vencen hoy?"
"Crea un quehacer 'Limpiar máquina de espresso' para el próximo domingo con prioridad alta y subtareas: 'Retrolavado del grupo', 'Descalcificar caldera'."
"Vincula el quehacer #21 a mi contador de café (Cosa #11) para que se dispare cuando el contador sea >= 100."
"Marca la tarea #5 como completada con 20 puntos."
🧪 Desarrollo y pruebas
# Install dependencies
npm install
# Run the test suite with coverage.
# Enforces an 80% floor on statements, branches, functions and lines.
npm test
# Build TypeScript
npm run build
# Start local server
npm startPrueba de humo en vivo
La suite de pruebas unitarias simula axios, por lo que demuestra que los payloads tienen la forma prevista, no que DoneTick los acepte. Antes de etiquetar una versión, ejecuta la prueba de humo contra una instancia real:
DONETICK_URL=https://donetick.example DONETICK_TOKEN=xxx npm run smokeCrea solo objetos con el prefijo [mcp-test], ejercita cada endpoint que usa el conector, elimina lo que creó y se niega a eliminar cualquier cosa que no tenga ese prefijo. Los quehaceres existentes nunca se modifican.
📄 Licencia
Licencia MIT. Siéntete libre de usar, modificar y distribuir.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables management of TickTick tasks and projects through the Model Context Protocol, supporting deployment on Vercel with SSE capabilities. Users can list, create, update, and complete tasks directly within AI clients like Claude.1
- AlicenseBqualityBmaintenanceExposes the Deferno task-manager backend to AI agents, enabling them to read, create, update, and manage tasks, habits, chores, events, and daily plans.81MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage TickTick tasks, projects, habits, and focus sessions through the MCP server.140MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Yandex Tracker tasks with tools for creating, reading, updating, and transitioning issues via a Streamable HTTP endpoint.
Related MCP Connectors
Hosted NeuroDock — stateless communication and planning tools over OAuth-secured Streamable HTTP.
16 AI-native tools with dual SSE + streamable-http transport. Free tier available.
Create, test, publish, and manage Dreamlit notification workflows from AI clients.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bibiwan/mcp_donetick'
If you have feedback or need assistance with the MCP directory API, please join our Discord server