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
JavaScript
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;