Servidor del Administrador de tareas MCP
Un servidor de Protocolo de Contexto de Modelo (MCP) local que proporciona herramientas de backend para la gestión de proyectos y tareas impulsados por el cliente mediante una base de datos SQLite.
Descripción general
Este servidor actúa como un backend persistente para clientes locales de MCP (como agentes de IA o scripts) que necesitan gestionar datos estructurados de tareas en distintos proyectos. Gestiona el almacenamiento de datos y proporciona un conjunto estandarizado de herramientas para la interacción, mientras que la lógica estratégica del flujo de trabajo reside en el cliente.
Características principales:
Basado en proyectos: las tareas se organizan dentro de proyectos distintos.
Persistencia de SQLite: utiliza un archivo SQLite local (
./data/taskmanager.dbde forma predeterminada) para un almacenamiento de datos simple y autónomo.Orientado al cliente: proporciona herramientas para los clientes; no dicta el flujo de trabajo.
Compatible con MCP: se adhiere al Protocolo de contexto de modelo para la definición y comunicación de herramientas.
Gestión de tareas: admite la creación de proyectos, la adición de tareas, la enumeración/visualización de tareas, la actualización del estado, la expansión de tareas en subtareas y la identificación de la próxima tarea procesable.
Importar/Exportar: Permite exportar datos del proyecto a JSON e importar desde JSON para crear nuevos proyectos.
Related MCP server: SQLite MCP Server
Herramientas MCP implementadas
Las siguientes herramientas están disponibles para los clientes de MCP:
createProject:Descripción: Crea un nuevo proyecto vacío.
Parámetros:
projectName(cadena, opcional, máximo 255)Devuelve:
{ project_id: string }
addTask:Descripción: Agrega una nueva tarea a un proyecto.
Parámetros:
project_id(cadena, obligatorio, UUID),description(cadena, obligatorio, 1-1024),dependencies(cadena[], opcional, máximo 50),priority(enumeración 'alta'|'media'|'baja', opcional, predeterminado 'media'),status(enumeración 'todo'|'en progreso'|'revisión'|'listo', opcional, predeterminado 'todo')Devuelve: objeto
TaskDatacompleto de la tarea creada.
listTasks:Descripción: Enumera las tareas de un proyecto, con filtrado opcional e inclusión de subtareas.
Parámetros:
project_id(cadena, obligatorio, UUID),status(enumeración 'todo'|'en progreso'|'revisión'|'terminado', opcional),include_subtasks(booleano, opcional, predeterminado falso)Devuelve: Matriz de objetos
TaskDataoStructuredTaskData.
showTask:Descripción: Recupera detalles completos de una tarea específica, incluidas dependencias y subtareas directas.
Parámetros:
project_id(cadena, obligatorio, UUID),task_id(cadena, obligatorio)Devuelve: objeto
FullTaskData.
setTaskStatus:Descripción: Actualiza el estado de una o más tareas.
Parámetros:
project_id(cadena, obligatorio, UUID),task_ids(cadena[], obligatorio, 1-100),status(enumeración 'todo'|'en progreso'|'revisión'|'terminado', obligatorio)Devoluciones:
{ success: true, updated_count: number }
expandTask:Descripción: Divide una tarea principal en subtareas y, opcionalmente, reemplaza las existentes.
Parámetros:
project_id(cadena, obligatorio, UUID),task_id(cadena, obligatorio),subtask_descriptions(cadena[], obligatorio, 1-20, cada 1-512),force(booleano, opcional, predeterminado falso)Devoluciones: objeto padre
FullTaskDataactualizado incluidas nuevas subtareas.
getNextTask:Descripción: Identifica la próxima tarea procesable en función del estado ('todo'), las dependencias ('hecho'), la prioridad y la fecha de creación.
Parámetros:
project_id(cadena, obligatorio, UUID)Devuelve: objeto
FullTaskDatade la próxima tarea, onullsi no hay ninguna lista.
exportProject:Descripción: Exporta datos completos del proyecto como una cadena JSON.
Parámetros:
project_id(cadena, obligatorio, UUID),format(enumeración 'json', opcional, predeterminado 'json')Devuelve: cadena JSON que representa el proyecto.
importProject:Descripción: Crea un nuevo proyecto a partir de una cadena JSON exportada.
Parámetros:
project_data(cadena, obligatorio, JSON),new_project_name(cadena, opcional, máximo 255)Devuelve:
{ project_id: string }del proyecto recién creado.
updateTask:Descripción: Actualiza detalles específicos (descripción, prioridad, dependencias) de una tarea existente.
Parámetros:
project_id(cadena, obligatorio, UUID),task_id(cadena, obligatorio, UUID),description(cadena, opcional, 1-1024),priority(enumeration 'high'|'medium'|'low', opcional),dependencies(cadena[], opcional, máx. 50, reemplaza las existentes)Devuelve: objeto
FullTaskDataactualizado.
deleteTask:Descripción: Elimina una o más tareas (y sus subtareas/enlaces de dependencia mediante cascada).
Parámetros:
project_id(cadena, obligatorio, UUID),task_ids(cadena[], obligatorio, 1-100)Devoluciones:
{ success: true, deleted_count: number }
deleteProject:Descripción: Elimina permanentemente un proyecto y todos los datos asociados. ¡Úselo con precaución!
Parámetros:
project_id(cadena, obligatorio, UUID)Devuelve:
{ success: true }
(Nota: Consulte los archivos
Empezando
Prerrequisitos: Node.js (se recomienda LTS), npm.
Dependencias de instalación:
npm installEjecutar en modo de desarrollo: (Utiliza
ts-nodeynodemonpara recarga automática)npm run devEl servidor se conectará mediante stdio. Los registros (formato JSON) se imprimirán en stderr. La base de datos SQLite se creará/actualizará en
./data/taskmanager.db.Construir para producción:
npm run buildEjecutar compilación de producción:
npm start
Configuración
Ruta de la base de datos: La ubicación del archivo de base de datos de SQLite se puede sobrescribir configurando la variable de entorno
DATABASE_PATH. El valor predeterminado es./data/taskmanager.db.Nivel de registro: El nivel de registro se puede configurar mediante la variable de entorno
LOG_LEVEL(p. ej.,debug,info,warn,error). El valor predeterminado esinfo.
Estructura del proyecto
/src: Código fuente./config: Gestión de la configuración./db: Administrador de base de datos y esquema (schema.sql)./repositories: Capa de acceso a datos (interacción con SQLite)./services: Lógica empresarial básica./tools: definiciones de herramientas MCP (*Params.ts) e implementación (*Tool.ts)./types: Interfaces TypeScript compartidas (actualmente mínimas, principalmente en repositorios/servicios)./utils: Registro, errores personalizados, etc.createServer.ts: Creación de instancia de servidor.server.ts: Punto de entrada de la aplicación principal.
/dist: Salida JavaScript compilada./docs: Documentación del proyecto (PRD, especificaciones de características, RFC)./data: Ubicación predeterminada para el archivo de base de datos SQLite (creado automáticamente).tasks.md: Archivo de seguimiento manual de tareas para desarrollo.Archivos de configuración (
package.json,tsconfig.json,.eslintrc.json, etc.)
Pelusa y formato
Pelusa:
npm run lintFormato:
npm run format
(El código se formatea y revisa automáticamente al confirmar mediante Husky/lint-staged).