UNPKG

atlas-mcp-server

Version:

ATLAS (Adaptive Task & Logic Automation System): An MCP server enabling LLM agents to manage projects, tasks, and knowledge via a Neo4j-backed, three-tier architecture. Facilitates complex workflow automation and project management through LLM Agents.

201 lines (200 loc) 8.91 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod"; import { OperationContext } from "../utils/internal/requestContext.js"; export type ToolContext = OperationContext; import { McpToolResponse } from "./mcp.js"; export interface ToolExample { input: Record<string, unknown>; output: string; description?: string; } export type EntityType = "project" | "task" | "knowledge"; export type TaskType = "research" | "generation" | "analysis" | "integration" | string; export type ProjectStatus = "active" | "pending" | "in-progress" | "completed" | "archived"; export type TaskStatus = "backlog" | "todo" | "in-progress" | "completed"; export type PriorityLevel = "low" | "medium" | "high" | "critical"; export type KnowledgeDomain = "technical" | "business" | "scientific" | string; export interface ToolMetadata { examples?: ToolExample[]; returnSchema?: z.ZodType<any>; requiredPermission?: string; entityType?: EntityType | EntityType[]; rateLimit?: { windowMs: number; maxRequests: number; }; supportsBulkOperations?: boolean; } type BaseToolHandler = (input: unknown, context: ToolContext) => Promise<McpToolResponse>; export declare const registerTool: (server: McpServer, name: string, description: string, schema: z.ZodRawShape, handler: BaseToolHandler, metadata?: ToolMetadata) => void; export declare const createToolExample: (input: Record<string, unknown>, output: string, description?: string) => ToolExample; export declare const createToolMetadata: (metadata: ToolMetadata) => ToolMetadata; /** * Atlas Platform specific interfaces to represent the core data model * These interfaces match the database objects described in the Atlas Platform Reference Guide */ export interface Project { /** Optional client-generated ID; system will generate if not provided */ id?: string; /** Descriptive project name (1-100 characters) */ name: string; /** Comprehensive project overview explaining purpose and scope */ description: string; /** Current project state */ status: ProjectStatus; /** Relevant URLs with descriptive titles for reference materials */ urls?: Array<{ title: string; url: string; }>; /** Specific, measurable criteria that indicate project completion */ completionRequirements: string; /** Array of existing project IDs that must be completed before this project can begin */ dependencies?: string[]; /** Required format specification for final project deliverables */ outputFormat: string; /** Classification of project purpose */ taskType: TaskType; /** Timestamp when the project was created */ createdAt: string; /** Timestamp when the project was last updated */ updatedAt: string; } export interface Task { /** Optional client-generated ID; system will generate if not provided */ id?: string; /** ID of the parent project this task belongs to */ projectId: string; /** Concise task title clearly describing the objective (5-150 characters) */ title: string; /** Detailed explanation of the task requirements and context */ description: string; /** Importance level */ priority: PriorityLevel; /** Current task state */ status: TaskStatus; /** ID of entity responsible for task completion */ assignedTo?: string; /** Relevant URLs with descriptive titles for reference materials */ urls?: Array<{ title: string; url: string; }>; /** Categorical labels for organization and filtering */ tags?: string[]; /** Specific, measurable criteria that indicate task completion */ completionRequirements: string; /** Array of existing task IDs that must be completed before this task can begin */ dependencies?: string[]; /** Required format specification for task deliverables */ outputFormat: string; /** Classification of task purpose */ taskType: TaskType; /** Timestamp when the task was created */ createdAt: string; /** Timestamp when the task was last updated */ updatedAt: string; } export interface Knowledge { /** Optional client-generated ID; system will generate if not provided */ id?: string; /** ID of the parent project this knowledge belongs to */ projectId: string; /** Main content of the knowledge item (can be structured or unstructured) */ text: string; /** Categorical labels for organization and filtering */ tags?: string[]; /** Primary knowledge area or discipline */ domain: KnowledgeDomain; /** Array of reference sources supporting this knowledge (URLs, DOIs, etc.) */ citations?: string[]; /** Timestamp when the knowledge item was created */ createdAt: string; /** Timestamp when the knowledge item was last updated */ updatedAt: string; } /** * Operation request interfaces based on the API Reference * These interfaces can be used as a foundation for building tool input schemas */ export interface ProjectCreateRequest { /** Operation mode - 'single' for one project, 'bulk' for multiple projects */ mode?: "single" | "bulk"; /** Optional client-generated project ID (required for mode='single') */ id?: string; /** Descriptive project name (1-100 characters) (required for mode='single') */ name?: string; /** Comprehensive project overview explaining purpose and scope (required for mode='single') */ description?: string; /** Current project state (Default: active) */ status?: ProjectStatus; /** Array of relevant URLs with descriptive titles for reference materials */ urls?: Array<{ title: string; url: string; }>; /** Specific, measurable criteria that indicate project completion (required for mode='single') */ completionRequirements?: string; /** Array of existing project IDs that must be completed before this project can begin */ dependencies?: string[]; /** Required format specification for final project deliverables (required for mode='single') */ outputFormat?: string; /** Classification of project purpose (required for mode='single') */ taskType?: TaskType; /** Array of project objects with the above fields (required for mode='bulk') */ projects?: Partial<Project>[]; } export interface TaskCreateRequest { /** Operation mode - 'single' for one task, 'bulk' for multiple tasks */ mode?: "single" | "bulk"; /** Optional client-generated task ID */ id?: string; /** ID of the parent project this task belongs to (required for mode='single') */ projectId?: string; /** Concise task title clearly describing the objective (5-150 characters) (required for mode='single') */ title?: string; /** Detailed explanation of the task requirements and context (required for mode='single') */ description?: string; /** Importance level (Default: medium) */ priority?: PriorityLevel; /** Current task state (Default: todo) */ status?: TaskStatus; /** ID of entity responsible for task completion */ assignedTo?: string; /** Array of relevant URLs with descriptive titles for reference materials */ urls?: Array<{ title: string; url: string; }>; /** Array of categorical labels for organization and filtering */ tags?: string[]; /** Specific, measurable criteria that indicate task completion (required for mode='single') */ completionRequirements?: string; /** Array of existing task IDs that must be completed before this task can begin */ dependencies?: string[]; /** Required format specification for task deliverables (required for mode='single') */ outputFormat?: string; /** Classification of task purpose (required for mode='single') */ taskType?: TaskType; /** Array of task objects with the above fields (required for mode='bulk') */ tasks?: Partial<Task>[]; } export interface KnowledgeAddRequest { /** Operation mode - 'single' for one knowledge item, 'bulk' for multiple items */ mode?: "single" | "bulk"; /** Optional client-generated knowledge ID */ id?: string; /** ID of the parent project this knowledge belongs to (required for mode='single') */ projectId?: string; /** Main content of the knowledge item (can be structured or unstructured) (required for mode='single') */ text?: string; /** Array of categorical labels for organization and filtering */ tags?: string[]; /** Primary knowledge area or discipline (required for mode='single') */ domain?: KnowledgeDomain; /** Array of reference sources supporting this knowledge (URLs, DOIs, etc.) */ citations?: string[]; /** Array of knowledge objects with the above fields (required for mode='bulk') */ knowledge?: Partial<Knowledge>[]; } export {};