Skip to main content

do_memory_mcp/server/tools/
advanced.rs

1// Advanced tool handlers
2//!
3//! This module contains advanced tool handlers: advanced_pattern_analysis and quality_metrics.
4
5use anyhow::Result;
6use serde_json::json;
7use std::sync::Arc;
8use tracing::debug;
9
10impl crate::server::MemoryMCPServer {
11    /// Execute the advanced_pattern_analysis tool
12    ///
13    /// # Arguments
14    ///
15    /// * `input` - Analysis input parameters
16    ///
17    /// # Returns
18    ///
19    /// Returns comprehensive analysis results
20    pub async fn execute_advanced_pattern_analysis(
21        &self,
22        input: crate::mcp::tools::advanced_pattern_analysis::AdvancedPatternAnalysisInput,
23    ) -> Result<serde_json::Value> {
24        self.track_tool_usage("advanced_pattern_analysis").await;
25
26        debug!(
27            "Executing advanced pattern analysis: {:?}",
28            input.analysis_type
29        );
30
31        let tool = crate::mcp::tools::advanced_pattern_analysis::AdvancedPatternAnalysisTool::new(
32            Arc::clone(&self.memory),
33        );
34
35        let result = tool.execute(input).await?;
36
37        // Convert result to JSON
38        Ok(json!(result))
39    }
40
41    /// Execute the quality_metrics tool
42    ///
43    /// # Arguments
44    ///
45    /// * `input` - Quality metrics input parameters
46    ///
47    /// # Returns
48    ///
49    /// Returns quality metrics and noise reduction statistics
50    pub async fn execute_quality_metrics(
51        &self,
52        input: crate::mcp::tools::quality_metrics::QualityMetricsInput,
53    ) -> Result<serde_json::Value> {
54        self.track_tool_usage("quality_metrics").await;
55
56        debug!(
57            "Executing quality metrics query: time_range={}, include_trends={}",
58            input.time_range, input.include_trends
59        );
60
61        let tool =
62            crate::mcp::tools::quality_metrics::QualityMetricsTool::new(Arc::clone(&self.memory));
63
64        let result = tool.execute(input).await?;
65
66        // Convert result to JSON
67        Ok(json!(result))
68    }
69}