Todoist
Se integra con la API de Todoist para gestionar tus tareas y proyectos.
Documentación
Servidor MCP de Todoist
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona integración con la API de Todoist para asistentes de IA.
Descripción General
El Servidor MCP de Todoist permite a los asistentes de IA interactuar con Todoist, permitiéndoles gestionar tareas y proyectos en nombre de los usuarios. Este servidor implementa el Protocolo de Contexto de Modelo (MCP), proporcionando una interfaz estandarizada para que los sistemas de IA accedan a la funcionalidad de Todoist.
Características
-
Gestión de Tareas
- Obtener reglas de filtrado y ejemplos para el filtrado de tareas
- Obtener tareas con opciones de filtrado
- Obtener detalles de tareas
- Crear nuevas tareas
- Actualizar tareas existentes
- Marcar tareas como completadas
- Eliminar tareas
-
Gestión de Proyectos
- Obtener todos los proyectos
- Obtener detalles de proyectos
Instalación
Requisitos Previos
- Go 1.21 o posterior (para compilar desde el código fuente)
- Docker (para instalación mediante Docker)
- Token de API de Todoist
Compilación desde el Código Fuente
- Clonar el repositorio:
git clone https://github.com/naotama2002/todoist-go-mcp-server.git
cd todoist-go-mcp-server
- Instalar dependencias:
go mod download
- Compilar el binario:
make build
Usando Docker
También puedes ejecutar todoist-mcp-server usando Docker, lo que proporciona un entorno consistente y un despliegue más sencillo.
Descargar desde GitHub Container Registry
# Pull the latest image
docker pull ghcr.io/naotama2002/todoist-go-mcp-server:latest
# Or pull a specific version
docker pull ghcr.io/naotama2002/todoist-go-mcp-server:{TAG}
Compilar localmente
# Build the Docker image
docker build -t todoist-mcp-server .
Configuración
Configura tu token de API de Todoist:
Crea un archivo .envrc en el directorio raíz con el siguiente contenido:
export TODOIST_API_TOKEN=your_todoist_api_token
Si estás usando direnv, ejecuta:
direnv allow
Alternativamente, puedes establecer la variable de entorno directamente:
export TODOIST_API_TOKEN=your_todoist_api_token
Uso
Ejecutando el Servidor
Uso del Binario
Modo HTTP
Ejecuta el servidor en modo HTTP:
go run cmd/todoist-mcp-server/main.go --mode http --addr :8080
O usando el binario compilado:
./build/todoist-mcp-server --mode http --addr :8080
Modo de Entrada/Salida Estándar
Ejecuta el servidor en modo stdio para integración con clientes MCP:
go run cmd/todoist-mcp-server/main.go --mode stdio
O usando el binario compilado:
./build/todoist-mcp-server --mode stdio
Uso con Docker
Modo HTTP
# Basic usage with Docker
docker run --rm -it -p 8080:8080 -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode http --addr :8080
# With custom port
docker run --rm -it -p 3000:3000 -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode http --addr :3000
# Using locally built image
docker run --rm -it -p 8080:8080 -e TODOIST_API_TOKEN=your_todoist_api_token \
todoist-mcp-server --mode http --addr :8080
Modo de Entrada/Salida Estándar
# For stdio mode (used with MCP clients)
docker run --rm -i -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode stdio
# Using locally built image
docker run --rm -i -e TODOIST_API_TOKEN=your_todoist_api_token \
todoist-mcp-server --mode stdio
Opciones de Línea de Comandos
El servidor admite las siguientes opciones de línea de comandos:
--mode <mode>: Modo del servidor, ya sea 'http' o 'stdio' (predeterminado: "http")http: Ejecutar como servidor HTTPstdio: Ejecutar usando entrada/salida estándar para comunicación MCP
--addr <address>: Dirección para escuchar en modo HTTP (predeterminado: ":8080")--token <token>: Token de API de Todoist (también se puede configurar mediante la variable de entorno TODOIST_API_TOKEN)
Ejemplos:
# Run HTTP server on port 3000
go run cmd/todoist-mcp-server/main.go --mode http --addr :3000
# Run with a specific Todoist API token
go run cmd/todoist-mcp-server/main.go --mode http --token your_todoist_api_token
# Run in stdio mode
go run cmd/todoist-mcp-server/main.go --mode stdio
Probando con el Cliente MCP
Puedes probar el servidor usando el cliente de prueba incluido:
go run cmd/test-mcp-client/main.go
Herramientas Disponibles
Gestión de Tareas
todoist_get_task_filter_rules
Obtener reglas de filtrado y ejemplos para filtros de tareas de Todoist. Esta herramienta ayuda a traducir consultas en lenguaje natural a la sintaxis de filtros de Todoist para la herramienta todoist_get_tasks.
Parámetros: Ninguno
Ejemplo de respuesta (formato Markdown):
# Introduction to Filters
Filters in Todoist are custom views that display tasks based on specific criteria. You can filter tasks by name, date, project, label, priority, creation date, and more.
## Creating Filters
1. Select "Filters & Labels" in the sidebar
2. Click the add icon next to Filters
3. Enter a name for your filter and change its color (optional)
4. Enter your filter query
5. Click "Add" to save your filter
## Filter Symbols
| Symbol | Meaning | Example |
|--------|---------|--------|
| \| | OR | today \| overdue |
| & | AND | today & p1 |
| ! | NOT | !subtask |
| () | Priority processing | (today \| overdue) & #work |
## Advanced Queries
### Keyword-Based Filters
| Description | Query |
|-------------|-------|
| Tasks containing "meeting" | search: meeting |
| Tasks containing "meeting" scheduled for today | search: meeting & today |
### Date-Based Filters
| Description | Query |
|-------------|-------|
| Tasks for a specific date | date: jan 3 |
| Tasks before a specific date | before: may 5 |
| Tasks with no date | no date |
## Useful Filter Examples
| Description | Query |
|-------------|-------|
| Overdue or today's tasks in "Work" project | (today \| overdue) & #work |
| Tasks with no date | no date |
| Tasks with @waiting label in the next 7 days | 7 days & @waiting |
#### `todoist_get_tasks`
Get a list of tasks with filtering options.
Parameters:
- `projectId` (string, optional): Filter tasks by project ID
- `filter` (string, optional): Todoist filter query using the Todoist filter syntax
Example:
```json
{
"projectId": "2203306141",
"filter": "today"
}
todoist_get_task
Obtener detalles de una tarea específica.
Parámetros:
id(cadena, obligatorio): El identificador único de la tarea
Ejemplo:
{
"id": "2995104339"
}
todoist_create_task
Crear una nueva tarea.
Parámetros:
content(cadena, obligatorio): El contenido de la tareadescription(cadena, opcional): Descripción detallada o notas para la tareaprojectId(cadena, opcional): ID del proyecto al que asignar la tareaparentId(cadena, opcional): ID de la tarea padre para crear subtareasorder(entero, opcional): Valor de orden para posicionar la tareapriority(entero, opcional): Prioridad de la tarea: 1 (normal), 2 (media), 3 (alta), 4 (urgente)dueString(cadena, opcional): Fecha de vencimiento en lenguaje natural, p. ej., 'hoy', 'mañana'dueDate(cadena, opcional): Fecha de vencimiento en formato AAAA-MM-DDdueDatetime(cadena, opcional): Fecha y hora de vencimiento en formato RFC3339
Ejemplo:
{
"content": "Buy groceries",
"description": "Need to buy milk, eggs, and bread",
"projectId": "2203306141",
"priority": 2,
"dueString": "tomorrow at 10am"
}
todoist_update_task
Actualizar una tarea existente.
Parámetros:
id(cadena, obligatorio): El identificador único de la tarea a actualizarcontent(cadena, opcional): El nuevo contenido de la tareadescription(cadena, opcional): Descripción detallada o notas para la tareapriority(entero, opcional): Prioridad de la tarea: 1 (normal), 2 (media), 3 (alta), 4 (urgente)dueString(cadena, opcional): Fecha de vencimiento en lenguaje naturaldueDate(cadena, opcional): Fecha de vencimiento en formato AAAA-MM-DDdueDatetime(cadena, opcional): Fecha y hora de vencimiento en formato RFC3339
Ejemplo:
{
"id": "2995104339",
"content": "Buy groceries and household items",
"priority": 1
}
todoist_close_task
Marcar una tarea como completada.
Parámetros:
id(cadena, obligatorio): El identificador único de la tarea a marcar como completada
Ejemplo:
{
"id": "2995104339"
}
todoist_delete_task
Eliminar una tarea.
Parámetros:
id(cadena, obligatorio): El identificador único de la tarea a eliminar
Ejemplo:
{
"id": "2995104339"
}
Gestión de Proyectos
todoist_get_projects
Obtener una lista de todos los proyectos.
Parámetros: Ninguno
todoist_get_project
Obtener detalles de un proyecto específico.
Parámetros:
id(cadena, obligatorio): El identificador único del proyecto
Ejemplo:
{
"id": "2203306141"
}
Integración con Claude Desktop
Para usar el Servidor MCP de Todoist con Claude Desktop, debes agregarlo a la configuración de Claude Desktop.
Descargar desde GitHub Releases
La forma más fácil de comenzar es descargar un binario precompilado desde la página de GitHub Releases:
-
Ve a la página de Releases y descarga la última versión para tu plataforma:
- Linux:
todoist-mcp-server_Linux_x86_64.tar.gzotodoist-mcp-server_Linux_arm64.tar.gz - macOS:
todoist-mcp-server_Darwin_x86_64.tar.gzotodoist-mcp-server_Darwin_arm64.tar.gz - Windows:
todoist-mcp-server_Windows_x86_64.zip
- Linux:
-
Extrae el archivo para obtener el binario
todoist-mcp-server:# For Linux/macOS tar -xzf todoist-mcp-server_*_*.tar.gz # For Windows # Extract the zip file using Windows Explorer or a tool like 7-Zip -
Haz que el binario sea ejecutable (solo Linux/macOS):
chmod +x todoist-mcp-server -
Opcionalmente, mueve el binario a una ubicación en tu PATH:
# Linux/macOS sudo mv todoist-mcp-server /usr/local/bin/ # Windows # Move the .exe file to a location in your PATH
Compilar desde el código fuente
Alternativamente, puedes compilar el binario desde el código fuente:
# Build the binary
make build
Configuración
Agrega el Servidor MCP de Todoist a tu configuración de Claude Desktop:
Modo HTTP
- Ejecuta el Servidor MCP de Todoist en modo HTTP:
todoist-mcp-server --mode http --addr :8080
- Agrega la siguiente configuración a la configuración de Claude Desktop:
{
"name": "Todoist",
"description": "Manage Todoist tasks and projects",
"endpoint": "http://localhost:8080",
"tools": [
{
"name": "todoist_get_task_filter_rules",
"description": "Get filter rules and examples for Todoist task filters"
},
{
"name": "todoist_get_tasks",
"description": "Get a list of tasks with filtering options"
},
{
"name": "todoist_get_task",
"description": "Get details of a specific task"
},
{
"name": "todoist_create_task",
"description": "Create a new task"
},
{
"name": "todoist_update_task",
"description": "Update an existing task"
},
{
"name": "todoist_close_task",
"description": "Mark a task as completed"
},
{
"name": "todoist_delete_task",
"description": "Delete a task"
},
{
"name": "todoist_get_projects",
"description": "Get a list of all projects"
},
{
"name": "todoist_get_project",
"description": "Get details of a specific project"
}
]
}
Modo Stdio
Usando Binario
Claude Desktop / Cline, Roo Cline / Windsurf
{
"mcpServers": {
"todoist": {
"command": "/path/to/todoist-mcp-server",
"args": ["--mode", "stdio"],
"env": {
"TODOIST_API_TOKEN": "<YOUR_TODOIST_API_TOKEN>"
}
}
}
}
VSCode
{
"mcp": {
"servers": {
"todoist": {
"command": "/path/to/todoist-mcp-server",
"args": ["--mode", "stdio"],
"env": {
"TODOIST_API_TOKEN": "<YOUR_TODOIST_API_TOKEN>"
}
}
}
}
}
Usando Docker
Claude Desktop / Cline, Roo Cline / Windsurf
{
"mcpServers": {
"todoist": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"TODOIST_API_TOKEN=<YOUR_TODOIST_API_TOKEN>",
"ghcr.io/naotama2002/todoist-go-mcp-server:latest",
"--mode",
"stdio"
]
}
}
}
VSCode
{
"mcp": {
"servers": {
"todoist": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"TODOIST_API_TOKEN=<YOUR_TODOIST_API_TOKEN>",
"ghcr.io/naotama2002/todoist-go-mcp-server:latest",
"--mode",
"stdio"
]
}
}
}
}
Reemplaza /path/to/todoist-mcp-server con la ruta real al binario y <YOUR_TODOIST_API_TOKEN> con tu token de API de Todoist.
-
En Claude Desktop, ve a Configuración > Herramientas > Agregar Herramienta, y pega la configuración JSON apropiada.
-
Guarda la configuración y reinicia Claude Desktop si es necesario.
Ahora puedes pedirle a Claude que gestione tus tareas y proyectos de Todoist usando lenguaje natural.
Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).
Solución de Problemas
Problemas con Docker
Puerto Ya en Uso
Si obtienes un error de "puerto ya en uso", detén el servicio en conflicto o usa un puerto diferente:
# Use a different port
docker run --rm -it -p 3335:8080 -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode http --addr :8080
Problemas de Red con Clientes MCP
Si los clientes MCP no pueden conectarse al contenedor Docker, intenta usar redes de host:
# Use host networking mode
docker run --rm -i --net=host -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode stdio
Problemas con Variables de Entorno
Asegúrate de que tu token de API de Todoist esté configurado correctamente:
# Check if the token is set correctly
docker run --rm -i -e TODOIST_API_TOKEN=your_actual_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode stdio
Limpiar Datos de Autenticación
Si tienes problemas con la autenticación, verifica tu token de API de Todoist:
- Ve a Integraciones de Todoist
- Copia tu token de API
- Asegúrate de que esté configurado correctamente en tu entorno
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENCIA para más detalles.
Agradecimientos
Desarrollo
Estructura del Proyecto
todoist-go-mcp-server/
├── cmd/
│ ├── test-client/ # Test client for the Todoist API
│ ├── test-mcp-client/ # Test client for the MCP server
│ └── todoist-mcp-server/ # Main MCP server application
├── docs/ # Documentation
├── pkg/
│ ├── log/ # Logging utilities
│ ├── todoist/ # Todoist API client and tools
│ └── toolsets/ # MCP toolset definitions
└── todo/ # Implementation plans and notes
Ejecutando Pruebas
make test