UNPKG

leshan-mcp-server

Version:

A standards-compliant MCP server for Leshan LwM2M, exposing Leshan as Model Context Protocol tools.

157 lines (128 loc) 4.77 kB
import logger from "../utils/loggerConfig.js"; /** * Device monitoring setup prompt for continuous device surveillance * @param {Object} params - Prompt parameters * @param {string} params.deviceId - Device endpoint to monitor * @param {string} params.monitoringType - Type of monitoring (basic, advanced, custom) * @returns {Promise<Object>} MCP prompt response */ export async function deviceMonitoringPrompt({ deviceId, monitoringType = "basic" }) { const operationId = `device-monitoring-${Date.now()}`; try { logger.info("Device monitoring prompt requested", { operationId, deviceId, monitoringType }); const prompt = `# LwM2M Device Monitoring Setup You are configuring continuous monitoring for LwM2M device: **${deviceId || '[DEVICE_ID]'}** ## Monitoring Configuration: ${monitoringType.toUpperCase()} ### Monitoring Objectives Set up comprehensive monitoring to: - Track device health and performance metrics - Detect connectivity issues and failures - Monitor resource changes and anomalies - Ensure optimal device operation - Generate alerts for critical conditions ### Monitoring Levels #### Basic Monitoring (Default) - Device registration status and lifetime - Battery level and power source status - Error codes and device reboot counter - Network connectivity status - Firmware version tracking #### Advanced Monitoring - All basic monitoring metrics - Memory usage and available storage - Signal strength and link quality - Temperature and environmental sensors - Application-specific resource monitoring - Performance metrics and response times #### Custom Monitoring - User-defined resource combinations - Specific threshold-based alerting - Custom observation intervals - Tailored notification strategies ### Recommended Monitoring Resources #### Device Object (3) - Critical Resources: - **Battery Level (9)**: Monitor power status - **Available Power Sources (6)**: Track power source changes - **Error Code (11)**: Detect device errors - **Device Reboot Counter (12)**: Track stability - **Memory Free (10)**: Monitor memory usage #### Connectivity Monitoring Object (4) - If Available: - **Network Bearer (0)**: Track network type - **Available Network Bearer (1)**: Monitor network options - **Radio Signal Strength (2)**: Signal quality - **Link Quality (3)**: Connection stability - **IP Addresses (4)**: Network configuration #### Server Object (1) - Configuration Monitoring: - **Lifetime (1)**: Registration lifetime - **Notification Storing (6)**: Notification settings - **Binding (7)**: Communication binding mode ### Monitoring Strategy 1. **Initial Setup**: - Get device information and available objects - Identify critical resources for monitoring - Set up observations on key resources - Configure appropriate observation intervals 2. **Continuous Monitoring**: - Regular health checks every 5-15 minutes - Real-time observation of critical resources - Periodic full device status assessment - Automated alert generation for anomalies 3. **Alert Conditions**: - Battery level below 20% - Error codes detected - Device offline for > 30 minutes - Memory usage above 80% - Unexpected device reboots ### Implementation Steps Use these MCP tools to implement monitoring: 1. **Device Discovery**: \`get-device-info\` - Get complete device profile 2. **Resource Monitoring**: \`observe-resource\` - Set up observations 3. **Health Checks**: \`read-resource\` - Periodic status reads 4. **Alert Management**: Monitor observation responses ### Monitoring Configuration ${deviceId ? `Target Device: ${deviceId}` : 'Please specify the device endpoint ID to monitor.'} Monitoring Type: ${monitoringType} Begin by getting device information, then set up the appropriate monitoring configuration based on available objects and resources. ### Expected Deliverables 1. Complete monitoring setup plan 2. List of observed resources with intervals 3. Alert thresholds and conditions 4. Monitoring dashboard recommendations 5. Maintenance and review schedule`; logger.info("Device monitoring prompt generated", { operationId, deviceId, monitoringType }); return { messages: [{ role: "user", content: { type: "text", text: prompt } }] }; } catch (error) { logger.error("Device monitoring prompt failed", { operationId, deviceId, monitoringType, error: error.message }); return { messages: [{ role: "user", content: { type: "text", text: `Error generating device monitoring prompt: ${error.message}` } }] }; } } export default deviceMonitoringPrompt;