UNPKG

leshan-mcp-server

Version:

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

253 lines (211 loc) 8 kB
import logger from "../utils/loggerConfig.js"; /** * Device configuration prompt for setting up and optimizing LwM2M devices * @param {Object} params - Prompt parameters * @param {string} params.deviceId - Device endpoint to configure * @param {string} params.configurationType - Type of configuration (initial, optimization, security) * @returns {Promise<Object>} MCP prompt response */ export async function deviceConfigurationPrompt({ deviceId, configurationType = "initial" }) { const operationId = `device-configuration-${Date.now()}`; try { logger.info("Device configuration prompt requested", { operationId, deviceId, configurationType }); const prompt = `# LwM2M Device Configuration Guide You are configuring LwM2M device: **${deviceId || '[DEVICE_ID]'}** ## Configuration Type: ${configurationType.toUpperCase()} ### Configuration Objectives ${configurationType === 'initial' ? ` #### Initial Device Setup - Establish secure device registration - Configure basic communication parameters - Set up essential monitoring and observations - Optimize power management settings - Validate device functionality ` : configurationType === 'optimization' ? ` #### Performance Optimization - Optimize communication intervals and patterns - Fine-tune observation parameters - Improve power efficiency - Enhance reliability and stability - Reduce network overhead ` : configurationType === 'security' ? ` #### Security Configuration - Strengthen security credentials and certificates - Configure secure communication channels - Set up access control and permissions - Implement security monitoring - Validate security compliance ` : ` #### General Configuration - Review and update device settings - Optimize performance parameters - Ensure security best practices - Set up monitoring and alerting `} ### Configuration Areas #### 1. Server Object (1) Configuration **Key Resources to Configure:** - **Server URI (0)**: Leshan server endpoint - **Lifetime (1)**: Registration lifetime (recommended: 300-3600 seconds) - **Default Minimum Period (2)**: Minimum observation interval - **Default Maximum Period (3)**: Maximum observation interval - **Disable Timeout (5)**: Server disable timeout - **Notification Storing (6)**: Enable/disable notification storage - **Binding (7)**: Communication binding mode (U, UQ, S, SQ) #### 2. Device Object (3) Configuration **Configurable Resources:** - **Current Time (13)**: Synchronize device time - **UTC Offset (14)**: Set timezone offset - **Timezone (15)**: Configure timezone - **Supported Binding Modes (16)**: Available binding modes #### 3. Connectivity Monitoring Object (4) - If Available **Network Configuration:** - **Network Bearer (0)**: Primary network bearer - **Available Network Bearer (1)**: Alternative bearers - **Link Quality (3)**: Monitor connection quality - **Link Utilization (8)**: Track bandwidth usage #### 4. Security Configuration **Security Object (0) - Handle with Care:** - Verify security mode configuration - Validate certificate status - Check bootstrap configuration - Review access credentials (without exposing sensitive data) ### Configuration Procedures #### Initial Setup Checklist: 1. **Device Discovery & Validation** - Verify device registration and basic connectivity - Check available objects and resources - Validate device model and capabilities 2. **Basic Communication Setup** - Configure server lifetime (recommended: 1800 seconds) - Set appropriate binding mode (U for UDP, UQ for UDP with Queue) - Configure observation intervals based on use case 3. **Time Synchronization** - Set current time on device - Configure UTC offset and timezone - Verify time accuracy 4. **Power Management** - Configure sleep/wake cycles if supported - Optimize communication frequency - Set up power source monitoring 5. **Monitoring Setup** - Enable observations on critical resources - Configure notification parameters - Set up health monitoring #### Optimization Procedures: 1. **Performance Tuning** - Analyze current communication patterns - Optimize observation intervals - Reduce unnecessary network traffic - Improve response times 2. **Power Efficiency** - Minimize communication frequency - Optimize sleep patterns - Use efficient data formats - Implement smart observation strategies 3. **Reliability Enhancement** - Configure appropriate timeouts - Set up redundant communication paths - Implement error recovery mechanisms - Monitor and alert on failures ### Configuration Commands Use these MCP tools for configuration: #### Device Information: \`\`\` get-device-info --deviceId=${deviceId || '[DEVICE_ID]'} \`\`\` #### Time Configuration: \`\`\` write-resource --deviceId=${deviceId || '[DEVICE_ID]'} --objectId=3 --instanceId=0 --resourceId=13 --value=[CURRENT_TIMESTAMP] write-resource --deviceId=${deviceId || '[DEVICE_ID]'} --objectId=3 --instanceId=0 --resourceId=14 --value=[UTC_OFFSET] \`\`\` #### Server Configuration: \`\`\` write-resource --deviceId=${deviceId || '[DEVICE_ID]'} --objectId=1 --instanceId=0 --resourceId=1 --value=1800 # Lifetime write-resource --deviceId=${deviceId || '[DEVICE_ID]'} --objectId=1 --instanceId=0 --resourceId=2 --value=60 # Min Period write-resource --deviceId=${deviceId || '[DEVICE_ID]'} --objectId=1 --instanceId=0 --resourceId=3 --value=300 # Max Period \`\`\` #### Observation Setup: \`\`\` observe-resource --deviceId=${deviceId || '[DEVICE_ID]'} --objectId=3 --instanceId=0 --resourceId=9 # Battery Level observe-resource --deviceId=${deviceId || '[DEVICE_ID]'} --objectId=3 --instanceId=0 --resourceId=11 # Error Code \`\`\` ### Configuration Best Practices #### Communication Optimization: - Use appropriate lifetime values (not too short, not too long) - Configure observation intervals based on data criticality - Implement efficient notification strategies - Use queue mode for unreliable networks #### Security Best Practices: - Use strong security credentials - Regularly update certificates - Monitor security events - Implement access controls #### Power Management: - Optimize communication schedules - Use sleep modes when possible - Monitor battery levels - Implement power-aware algorithms #### Monitoring & Maintenance: - Set up comprehensive monitoring - Configure appropriate alerts - Plan regular maintenance windows - Document configuration changes ### Validation & Testing After configuration: 1. **Functional Testing** - Verify all configured parameters - Test resource read/write operations - Validate observation behavior - Check error handling 2. **Performance Testing** - Monitor communication efficiency - Check response times - Validate power consumption - Test under various conditions 3. **Security Validation** - Verify secure communication - Test access controls - Validate certificate status - Check for security vulnerabilities ## Configuration Context ${deviceId ? `Target Device: ${deviceId}` : 'Please specify the device endpoint ID.'} Configuration Type: ${configurationType} Begin by getting device information to understand current configuration, then proceed with the appropriate configuration procedures.`; logger.info("Device configuration prompt generated", { operationId, deviceId, configurationType }); return { messages: [{ role: "user", content: { type: "text", text: prompt } }] }; } catch (error) { logger.error("Device configuration prompt failed", { operationId, deviceId, configurationType, error: error.message }); return { messages: [{ role: "user", content: { type: "text", text: `Error generating device configuration prompt: ${error.message}` } }] }; } } export default deviceConfigurationPrompt;