update-config
Modify configuration settings for specific NodeMCU/ESP8266 IoT devices remotely via the NodeMCU MCP Service, ensuring efficient device management and control.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Configuration parameters to update | |
| deviceId | Yes | The ID of the device to update configuration for |
Implementation Reference
- mcp_server_sdk.js:122-155 (handler)Primary handler implementation using official MCP SDK. Registers the tool with Zod schema validation and executes by calling deviceManager.updateDeviceConfig, returning formatted response.server.tool( "update-config", { deviceId: z.string().describe("The ID of the device to update configuration for"), config: z.record(z.any()).describe("Configuration parameters to update") }, async ({ deviceId, config }) => { try { if (!deviceId) { throw new Error('Device ID is required'); } if (!config || Object.keys(config).length === 0) { throw new Error('Configuration is required'); } const result = await deviceManager.updateDeviceConfig(deviceId, config); return { content: [{ type: "text", text: JSON.stringify({ success: true, deviceId, updatedConfig: result }, null, 2) }] }; } catch (error) { console.error('Error updating config:', error); throw new Error(`Failed to update configuration: ${error.message}`); } } );
- mcp_server.js:164-179 (handler)Alternative custom handler for update-config tool execution, delegates to deviceManager.// Tool implementation: Update device configuration async updateConfig(deviceId, config) { if (!deviceId) { throw new Error('Device ID is required'); } if (!config || Object.keys(config).length === 0) { throw new Error('Configuration is required'); } try { return await deviceManager.updateDeviceConfig(deviceId, config); } catch (error) { throw new Error(`Failed to update configuration: ${error.message}`); } }
- services/DeviceManager.js:161-179 (helper)Core helper method that implements config update by sending a 'config' command over WebSocket and updating local device state.async updateDeviceConfig(deviceId, config = {}) { try { const result = await this.sendCommand(deviceId, 'config', config); // Update stored device config if (this.devices.has(deviceId)) { const device = this.devices.get(deviceId); device.config = { ...device.config, ...config }; this.devices.set(deviceId, device); } return result; } catch (error) { throw error; } }
- mcp_server.js:44-56 (schema)Tool schema definition for update-config in custom server."update-config": { description: "Update the configuration of a NodeMCU device", parameters: { deviceId: { type: "string", description: "The ID of the device to update configuration for" }, config: { type: "object", description: "Configuration parameters to update" } } }
- mcp_server_sdk.js:124-127 (schema)Zod schema for update-config parameters in SDK implementation.{ deviceId: z.string().describe("The ID of the device to update configuration for"), config: z.record(z.any()).describe("Configuration parameters to update") },