NodeMCU MCP Service

by amanasmuei
Verified
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="800" height="600" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"> <!-- Background --> <rect width="800" height="600" fill="#f8f9fa" /> <!-- Title --> <text x="400" y="40" font-family="Arial" font-size="24" font-weight="bold" text-anchor="middle" fill="#00a1e9">NodeMCU MCP Architecture</text> <!-- NodeMCU Devices Zone --> <rect x="50" y="100" width="200" height="300" rx="10" ry="10" fill="#f0f0f0" stroke="#ddd" stroke-width="2" /> <text x="150" y="125" font-family="Arial" font-size="16" font-weight="bold" text-anchor="middle">IoT Devices</text> <!-- Device 1 --> <rect x="80" y="150" width="140" height="70" rx="5" ry="5" fill="#1b1c1d" /> <text x="150" y="175" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">NodeMCU - Living Room</text> <rect x="100" y="185" width="50" height="25" rx="2" ry="2" fill="#292a2b" /> <text x="125" y="202" font-family="Arial" font-size="10" text-anchor="middle" fill="#00a1e9"> ESP8266</text> <circle cx="170" cy="195" r="5" fill="#ff0000" /> <!-- Device 2 --> <rect x="80" y="240" width="140" height="70" rx="5" ry="5" fill="#1b1c1d" /> <text x="150" y="265" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">NodeMCU - Kitchen</text> <rect x="100" y="275" width="50" height="25" rx="2" ry="2" fill="#292a2b" /> <text x="125" y="292" font-family="Arial" font-size="10" text-anchor="middle" fill="#00a1e9"> ESP8266</text> <circle cx="170" cy="285" r="5" fill="#ff0000" /> <!-- Device 3 --> <rect x="80" y="330" width="140" height="70" rx="5" ry="5" fill="#1b1c1d" opacity="0.6" /> <text x="150" y="355" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">NodeMCU - Bedroom</text> <rect x="100" y="365" width="50" height="25" rx="2" ry="2" fill="#292a2b" /> <text x="125" y="382" font-family="Arial" font-size="10" text-anchor="middle" fill="#00a1e9"> ESP8266</text> <circle cx="170" cy="375" r="5" fill="#ff0000" /> <!-- MCP Server Zone --> <rect x="300" y="100" width="200" height="300" rx="10" ry="10" fill="#e6f7ff" stroke="#00a1e9" stroke-width="2" /> <text x="400" y="125" font-family="Arial" font-size="16" font-weight="bold" text-anchor="middle">NodeMCU MCP Server</text> <!-- Server components --> <rect x="320" y="150" width="160" height="40" rx="5" ry="5" fill="#00a1e9" /> <text x="400" y="175" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">WebSocket Server</text> <rect x="320" y="200" width="160" height="40" rx="5" ry="5" fill="#00a1e9" /> <text x="400" y="225" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">REST API</text> <rect x="320" y="250" width="160" height="40" rx="5" ry="5" fill="#00a1e9" /> <text x="400" y="275" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">MCP Protocol Handler</text> <rect x="320" y="300" width="160" height="40" rx="5" ry="5" fill="#00a1e9" /> <text x="400" y="325" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">Device Manager</text> <rect x="320" y="350" width="160" height="40" rx="5" ry="5" fill="#00a1e9" opacity="0.7" /> <text x="400" y="375" font-family="Arial" font-size="12" font-weight="bold" text-anchor="middle" fill="#ffffff">Authentication</text> <!-- AI Assistant Zone --> <rect x="550" y="100" width="200" height="300" rx="10" ry="10" fill="#f0f8ff" stroke="#666" stroke-width="2" /> <text x="650" y="125" font-family="Arial" font-size="16" font-weight="bold" text-anchor="middle">AI Assistants</text> <!-- Claude Desktop --> <rect x="570" y="150" width="160" height="90" rx="5" ry="5" fill="#ffffff" stroke="#00a1e9" stroke-width="2" /> <text x="650" y="175" font-family="Arial" font-size="14" font-weight="bold" text-anchor="middle">Claude Desktop</text> <rect x="590" y="185" width="120" height="45" rx="5" ry="5" fill="#f5f5f5" /> <text x="650" y="210" font-family="Arial" font-size="10" text-anchor="middle" fill="#333">MCP Client</text> <text x="650" y="225" font-family="Arial" font-size="10" text-anchor="middle" fill="#666">Runs MCP Tools</text> <!-- Custom Clients --> <rect x="570" y="260" width="160" height="90" rx="5" ry="5" fill="#ffffff" stroke="#666" stroke-width="2" /> <text x="650" y="285" font-family="Arial" font-size="14" font-weight="bold" text-anchor="middle">Custom MCP Clients</text> <rect x="590" y="295" width="120" height="45" rx="5" ry="5" fill="#f5f5f5" /> <text x="650" y="320" font-family="Arial" font-size="10" text-anchor="middle" fill="#333">MCP Protocol</text> <text x="650" y="335" font-family="Arial" font-size="10" text-anchor="middle" fill="#666">Tool Definitions</text> <!-- Web UI Zone --> <rect x="300" y="450" width="200" height="100" rx="10" ry="10" fill="#f9f9f9" stroke="#ddd" stroke-width="2" /> <text x="400" y="475" font-family="Arial" font-size="16" font-weight="bold" text-anchor="middle">Web UI</text> <rect x="325" y="485" width="150" height="55" rx="5" ry="5" fill="#fff" stroke="#00a1e9" stroke-width="1" /> <text x="400" y="515" font-family="Arial" font-size="12" text-anchor="middle">Device Management Dashboard</text> <!-- Connection Lines --> <!-- IoT Devices to Server --> <path d="M250,170 C280,170 270,170 300,170" stroke="#00a1e9" stroke-width="2" fill="none" /> <path d="M250,260 C280,260 270,220 300,220" stroke="#00a1e9" stroke-width="2" fill="none" /> <path d="M250,350 C280,350 270,320 300,320" stroke="#00a1e9" stroke-width="2" fill="none" stroke-dasharray="5,5" /> <!-- Server to Claude --> <path d="M500,270 C530,270 530,195 570,195" stroke="#00a1e9" stroke-width="2" fill="none" /> <text x="535" y="250" font-family="Arial" font-size="10" fill="#00a1e9">MCP</text> <!-- Server to Custom Clients --> <path d="M500,320 C520,320 520,305 570,305" stroke="#666" stroke-width="2" fill="none" stroke-dasharray="4,4" /> <text x="535" y="340" font-family="Arial" font-size="10" fill="#666">MCP</text> <!-- Server to Web UI --> <path d="M400,400 L400,450" stroke="#00a1e9" stroke-width="2" fill="none" /> <text x="410" y="425" font-family="Arial" font-size="10" fill="#00a1e9">HTTP</text> <!-- Data Flow Arrows --> <polygon points="295,170 300,168 300,172" fill="#00a1e9" /> <polygon points="295,220 300,218 300,222" fill="#00a1e9" /> <polygon points="295,320 300,318 300,322" fill="#00a1e9" /> <polygon points="565,195 570,193 570,197" fill="#00a1e9" /> <polygon points="565,305 570,303 570,307" fill="#666" /> <polygon points="400,445 398,450 402,450" fill="#00a1e9" /> <!-- Legend --> <rect x="50" y="450" width="200" height="100" rx="5" ry="5" fill="#ffffff" stroke="#ddd" stroke-width="1" /> <text x="150" y="470" font-family="Arial" font-size="14" font-weight="bold" text-anchor="middle"> Legend</text> <line x1="70" y1="485" x2="90" y2="485" stroke="#00a1e9" stroke-width="2" /> <text x="150" y="490" font-family="Arial" font-size="12" fill="#333">Active Connection</text> <line x1="70" y1="510" x2="90" y2="510" stroke="#666" stroke-width="2" stroke-dasharray="4,4" /> <text x="150" y="515" font-family="Arial" font-size="12" fill="#333">Optional Connection</text> <rect x="70" y="525" width="15" height="15" fill="#00a1e9" /> <text x="150" y="537" font-family="Arial" font-size="12" fill="#333">MCP Service Component</text> <!-- Flowchart explanation --> <text x="400" y="570" font-family="Arial" font-size="12" text-anchor="middle" fill="#666"> NodeMCU Devices ↔ MCP Server ↔ Claude Desktop/MCP Clients </text> </svg>