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.
68 lines (67 loc) • 2.94 kB
JavaScript
import { BaseErrorCode, McpError } from "../../../types/errors.js";
import { ResponseFormat, createToolResponse } from "../../../types/mcp.js";
import { logger, requestContextService } from "../../../utils/index.js"; // Import requestContextService
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) => {
const reqContext = context.requestContext ??
requestContextService.createRequestContext({
toolName: "atlasDatabaseClean",
});
try {
// Parse and validate input against schema (should be empty object)
const validatedInput = AtlasDatabaseCleanSchema.parse(input);
// Log the operation start
logger.warning("Executing complete database reset operation", reqContext);
// 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.warning("Database reset completed successfully", {
...reqContext,
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, {
...reqContext,
inputReceived: input,
});
// 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"}`);
}
};