@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
JavaScript
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'}`);
}
};