update-config
Update configuration settings for ESP8266/NodeMCU devices by specifying the device ID and new parameters through the NodeMCU MCP Service.
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.js:164-179 (handler)Main handler function for the 'update-config' tool in the custom MCP server implementation. Validates inputs and calls DeviceManager.updateDeviceConfig to perform the update.// 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}`); } }
- mcp_server.js:44-56 (schema)Schema definition for the 'update-config' tool, specifying parameters: deviceId (string) and config (object)."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.js:104-106 (registration)Switch case that registers and dispatches the 'update-config' tool execution to the handler method.case "update-config": result = await this.updateConfig(tool_params.deviceId, tool_params.config); break;
- mcp_server_sdk.js:122-155 (handler)Handler implementation using official MCP SDK server.tool(), includes zod schema validation inline and delegates to DeviceManager.updateDeviceConfig.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}`); } } );
- services/DeviceManager.js:161-179 (helper)Supporting method in DeviceManager that sends a 'config' command to the device via WebSocket and updates the local device configuration 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; } }