@mseep/atlas-mcp-server
Version:
A Model Context Protocol (MCP) server for ATLAS, a Neo4j-powered task management system for LLM Agents - implementing a three-tier architecture (Projects, Tasks, Knowledge) to manage complex workflows.
113 lines (112 loc) • 4.45 kB
TypeScript
import { Neo4jTask, PaginatedResult, TaskFilterOptions } from './types.js';
/**
* Service for managing Task entities in Neo4j
*/
export declare class TaskService {
/**
* Create a new task and optionally assign it to a user.
* @param task Task data, including optional assignedTo for relationship creation
* @returns The created task
*/
static createTask(task: Omit<Neo4jTask, 'id' | 'createdAt' | 'updatedAt'> & {
id?: string;
assignedTo?: string;
}): Promise<Neo4jTask>;
/**
* Link a Task to a Knowledge item with a specified relationship type.
* @param taskId ID of the source Task item
* @param knowledgeId ID of the target Knowledge item
* @param relationshipType The type of relationship to create (e.g., 'ADDRESSES', 'REFERENCES') - Validation needed
* @returns True if the link was created successfully, false otherwise
*/
static linkTaskToKnowledge(taskId: string, knowledgeId: string, relationshipType: string): Promise<boolean>;
/**
* Get a task by ID, including the assigned user ID via relationship.
* @param id Task ID
* @returns The task with assignedToUserId property, or null if not found.
*/
static getTaskById(id: string): Promise<(Neo4jTask & {
assignedToUserId: string | null;
}) | null>;
/**
* Check if all dependencies of a task are completed
* @param taskId Task ID to check dependencies for
* @returns True if all dependencies are completed, false otherwise
*/
static areAllDependenciesCompleted(taskId: string): Promise<boolean>;
/**
* Update a task's properties and handle assignment changes via relationships.
* @param id Task ID
* @param updates Task updates, including optional assignedTo for relationship changes
* @returns The updated task (without assignedTo property)
*/
static updateTask(id: string, updates: Partial<Omit<Neo4jTask, 'id' | 'projectId' | 'createdAt' | 'updatedAt'>> & {
assignedTo?: string | null;
}): Promise<Neo4jTask>;
/**
* Delete a task
* @param id Task ID
* @returns True if deleted, false if not found
*/
static deleteTask(id: string): Promise<boolean>;
/**
* Get tasks for a project with optional filtering and server-side pagination.
* Includes assigned user ID via relationship.
* @param options Filter and pagination options
* @returns Paginated list of tasks including assignedToUserId
*/
static getTasks(options: TaskFilterOptions): Promise<PaginatedResult<Neo4jTask & {
assignedToUserId: string | null;
}>>;
/**
* Add a dependency relationship between tasks
* @param sourceTaskId ID of the dependent task (source)
* @param targetTaskId ID of the dependency task (target)
* @returns The IDs of the two tasks and the relationship ID
*/
static addTaskDependency(sourceTaskId: string, targetTaskId: string): Promise<{
id: string;
sourceTaskId: string;
targetTaskId: string;
}>;
/**
* Remove a dependency relationship between tasks
* @param dependencyId The ID of the dependency relationship to remove
* @returns True if removed, false if not found
*/
static removeTaskDependency(dependencyId: string): Promise<boolean>;
/**
* Get task dependencies (both dependencies and dependents)
* @param taskId Task ID
* @returns Object containing dependencies and dependents
*/
static getTaskDependencies(taskId: string): Promise<{
dependencies: {
id: string;
taskId: string;
title: string;
status: string;
priority: string;
}[];
dependents: {
id: string;
taskId: string;
title: string;
status: string;
priority: string;
}[];
}>;
/**
* Assign a task to a user by creating an ASSIGNED_TO relationship.
* @param taskId Task ID
* @param userId User ID
* @returns The updated task (without assignedTo property)
*/
static assignTask(taskId: string, userId: string): Promise<Neo4jTask>;
/**
* Unassign a task by deleting the ASSIGNED_TO relationship.
* @param taskId Task ID
* @returns The updated task (without assignedTo property)
*/
static unassignTask(taskId: string): Promise<Neo4jTask>;
}