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