UNPKG

@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.

187 lines (186 loc) 4.35 kB
/** * Common type definitions for the Neo4j service */ /** * Neo4j entity base interface * Common properties for all Neo4j entities */ export interface Neo4jEntity { id: string; createdAt: string; updatedAt: string; } /** * Project entity in Neo4j */ export interface Neo4jProject extends Neo4jEntity { name: string; description: string; status: string; urls?: Array<{ title: string; url: string; }>; completionRequirements: string; outputFormat: string; taskType: string; } /** * Task entity in Neo4j */ export interface Neo4jTask extends Neo4jEntity { projectId: string; title: string; description: string; priority: string; status: string; urls?: Array<{ title: string; url: string; }>; tags?: string[]; completionRequirements: string; outputFormat: string; taskType: string; } /** * Knowledge entity in Neo4j */ export interface Neo4jKnowledge extends Neo4jEntity { projectId: string; text: string; tags?: string[]; } /** * User entity in Neo4j */ export interface Neo4jUser extends Neo4jEntity { username: string; displayName: string; email?: string; } /** * TaskType entity in Neo4j */ export interface Neo4jTaskType { name: string; description?: string; } /** * Domain entity in Neo4j */ export interface Neo4jDomain { name: string; description?: string; } /** * Citation entity in Neo4j */ export interface Neo4jCitation extends Neo4jEntity { source: string; title?: string; author?: string; date?: string; } /** * Relationship types used in the Neo4j database */ export declare enum RelationshipTypes { CONTAINS_TASK = "CONTAINS_TASK", CONTAINS_KNOWLEDGE = "CONTAINS_KNOWLEDGE", DEPENDS_ON = "DEPENDS_ON", ASSIGNED_TO = "ASSIGNED_TO", CITES = "CITES", RELATED_TO = "RELATED_TO", HAS_TYPE = "HAS_TYPE", BELONGS_TO_DOMAIN = "BELONGS_TO_DOMAIN", BELONGS_TO_PROJECT = "BELONGS_TO_PROJECT" } /** * Node labels used in the Neo4j database */ export declare enum NodeLabels { Project = "Project", Task = "Task", Knowledge = "Knowledge", User = "User", TaskType = "TaskType", Domain = "Domain", Citation = "Citation" } /** * Pagination options for querying Neo4j */ export interface PaginationOptions { page?: number; limit?: number; } /** * Result with pagination metadata */ export interface PaginatedResult<T> { data: T[]; total: number; page: number; limit: number; totalPages: number; } /** * Filter options for Project queries */ export interface ProjectFilterOptions extends PaginationOptions { status?: 'active' | 'pending' | 'in-progress' | 'completed' | 'archived' | ('active' | 'pending' | 'in-progress' | 'completed' | 'archived')[]; taskType?: string; searchTerm?: string; } /** * Filter options for Task queries */ export interface TaskFilterOptions extends PaginationOptions { projectId: string; status?: 'backlog' | 'todo' | 'in-progress' | 'completed' | ('backlog' | 'todo' | 'in-progress' | 'completed')[]; priority?: 'low' | 'medium' | 'high' | 'critical' | ('low' | 'medium' | 'high' | 'critical')[]; assignedTo?: string; tags?: string[]; taskType?: string; sortBy?: 'priority' | 'createdAt' | 'status'; sortDirection?: 'asc' | 'desc'; } /** * Filter options for Knowledge queries */ export interface KnowledgeFilterOptions extends PaginationOptions { projectId: string; tags?: string[]; domain?: string; search?: string; } /** * Specific types for project dependencies stored within the DEPENDS_ON relationship properties. */ export declare enum ProjectDependencyType { REQUIRES = "requires", EXTENDS = "extends", IMPLEMENTS = "implements", REFERENCES = "references" } /** * Project dependency relationship type */ export interface ProjectDependency { sourceProjectId: string; targetProjectId: string; type: ProjectDependencyType; description: string; } /** * Search options for unified search */ export interface SearchOptions extends PaginationOptions { property?: string; value: string; entityTypes?: ('project' | 'task' | 'knowledge')[]; caseInsensitive?: boolean; fuzzy?: boolean; taskType?: string; }