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.

66 lines (65 loc) 2.82 kB
import { BaseErrorCode, McpError } from "../../../types/errors.js"; import { ResponseFormat, createToolResponse } from "../../../types/mcp.js"; import { logger } from "../../../utils/logger.js"; import { formatDatabaseCleanResponse } from "./responseFormat.js"; import { AtlasDatabaseCleanSchema } from "./types.js"; import { neo4jDriver } from "../../../services/neo4j/driver.js"; /** * Execute a complete database reset operation * This permanently removes all data from the Neo4j database * * @param input No input parameters required * @param context Tool execution context * @returns Formatted response with operation results */ export const atlasDatabaseClean = async (input, context) => { try { // Parse and validate input against schema (should be empty object) const validatedInput = AtlasDatabaseCleanSchema.parse(input); // Log the operation start logger.warn("Executing complete database reset operation", { requestId: context.requestContext?.requestId }); // Track execution metrics const startTime = Date.now(); try { // Execute a very simple query that will delete all relationships and nodes await neo4jDriver.executeQuery("MATCH (n) DETACH DELETE n"); // Calculate execution duration const executionTime = Date.now() - startTime; // Log successful operation logger.warn("Database reset completed successfully", { requestId: context.requestContext?.requestId, executionTime: `${executionTime}ms`, }); const result = { success: true, message: "Database has been completely reset - all nodes and relationships removed", timestamp: new Date().toISOString(), }; // Conditionally format response if (validatedInput.responseFormat === ResponseFormat.JSON) { return createToolResponse(JSON.stringify(result, null, 2)); } else { return formatDatabaseCleanResponse(result); } } catch (error) { throw new Error(`Failed to execute database reset: ${error instanceof Error ? error.message : String(error)}`); } } catch (error) { // Log error logger.error("Failed to reset database", { error, requestId: context.requestContext?.requestId }); // Handle specific error cases if (error instanceof McpError) { throw error; } // Convert generic errors to McpError throw new McpError(BaseErrorCode.INTERNAL_ERROR, `Error resetting database: ${error instanceof Error ? error.message : 'Unknown error'}`); } };