UNPKG

mcp-webbit

Version:

MCP service for generating WebBit MicroPython code

256 lines (189 loc) 5.5 kB
# WebBit MCP Service 這是一個基於 Model Context Protocol (MCP) 的服務,可以根據需求自動生成 WebBit MicroPython 程式碼。 ## 功能特色 - 🤖 **智能程式生成**:根據繁體中文需求描述自動生成完整的 MicroPython 程式 - 📚 **完整 API 支援**:涵蓋 WebBit 所有功能,包括 LED 矩陣、感測器、按鈕、MQTT 等 - 🎯 **智能需求分析**:自動識別需求中的關鍵詞並生成對應功能 - 💡 **詳細註解**:提供清楚的程式說明和 API 使用指南 - 🔧 **模組化設計**:使用 ES6 模組和現代 JavaScript 特性 ## 🚀 快速安裝 (npx) **最簡單的方式:** ```bash npx https://github.com/marty5499/mcp-webbit ``` 或在 Claude Desktop / Cursor IDE 配置中使用: ```json { "mcpServers": { "mcp-webbit": { "command": "npx", "args": ["-y", "https://github.com/marty5499/mcp-webbit"] } } } ``` > 📋 詳細的 npx 安裝指南請參考 [NPX_INSTALL.md](./NPX_INSTALL.md) ## 安裝與設定 ### 方法一:直接從 GitHub 安裝(推薦) #### 在 Cursor IDE 中安裝 1. 打開 Cursor IDE 2.`Cmd+Shift+P` (macOS) 或 `Ctrl+Shift+P` (Windows/Linux) 打開命令面板 3. 輸入 "MCP" 並選擇 "MCP: Install Server" 4. 輸入此 repository 的 URL: ``` https://github.com/marty5499/mcp-webbit ``` #### 手動配置 Claude Desktop 1. 複製以下配置到 Claude Desktop 配置文件: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "mcp-webbit": { "command": "npx", "args": ["-y", "https://github.com/marty5499/mcp-webbit"] } } } ``` ### 方法二:本地開發安裝 #### 1. Clone 專案 ```bash git clone https://github.com/marty5499/mcp-webbit.git cd mcp-webbit ``` #### 2. 安裝依賴 ```bash npm install ``` #### 3. 啟動服務 ```bash npm start ``` #### 4. 開發模式 ```bash npm run dev ``` #### 5. 配置 Claude Desktop(本地版本) ```json { "mcpServers": { "mcp-webbit": { "command": "node", "args": ["/path/to/mcp-webbit/index.js"] } } } ``` ## 使用方式 ### MCP 工具調用 這個服務提供一個 MCP 工具:`generate_webbit_code` #### 參數 - `requirements` (必需): 程式需求描述(繁體中文) - `include_comments` (可選): 是否包含詳細註解(預設為 true) #### 範例調用 ```json { "name": "generate_webbit_code", "arguments": { "requirements": "按下按鈕A顯示愛心,按下按鈕B顯示哭臉,同時按下AB顯示開心", "include_comments": true } } ``` ## 支援的功能 ### LED 矩陣顯示 - ✅ 圖形顯示 (`matrix`) - ✅ 全屏顯示 (`showAll`) - ✅ 跑馬燈 (`scroll`) - ✅ 單顆 LED 控制 (`show`) ### 輸入控制 - ✅ 按鈕 A/B (`btnA`, `btnB`) - ✅ 觸摸感測 (`touchP0`, `touchP1`, `touchP2`) ### 感測器 - ✅ 溫度感測 (`temp`) - ✅ 光度感測 (`leftLight`, `rightLight`) - ✅ DHT11 溫濕度感測器 (`dht11`) - ✅ 超音波距離感測 (`ultrasonic`) - ✅ 聲音偵測 (`soundDetect`) - ✅ 震動偵測 (`vibration`) ### 控制輸出 - ✅ GPIO 控制 (`setPin`, `readPin`) - ✅ 類比輸入 (`adc`) - ✅ 伺服馬達 (`sg90`) - ✅ 音樂播放 (`play`) ### 網路功能 - ✅ MQTT 訊息傳送/接收 (`pub`, `sub`) ## 圖形名稱對照 服務內建完整的圖形名稱對照表,支援以下圖形: - 表情:開心、難過 - 手勢:剪刀、石頭、布 - 愛心:愛心1、愛心2、愛心3 - 箭頭:上箭頭、下箭頭、左箭頭、右箭頭等 - 幾何圖形:三角形、正方形、圓形、菱形、星星 - 其他:音符、旗子、飛機、皇冠等 ## 範例需求 ### 基礎 LED 控制 ``` "顯示開心圖案" "全部燈亮白色" "跑馬燈顯示 Hello 文字" ``` ### 按鈕互動 ``` "按下按鈕A顯示愛心,按下按鈕B顯示星星" "同時按下AB按鈕顯示皇冠" ``` ### 感測器應用 ``` "讀取溫度並顯示在LED上" "使用超音波感測器測距離" "DHT11感測器讀取溫濕度" ``` ### 馬達控制 ``` "控制伺服馬達轉動90度" "按鈕控制馬達旋轉角度" ``` ### MQTT 通訊 ``` "接收MQTT訊息並顯示在LED矩陣" "按鈕按下時傳送MQTT訊息" ``` ## 生成的程式結構 所有生成的程式都基於以下結構: ```python import uasyncio from webduino.webbit import WebBit # 自動生成的函數(如需要) def callback_function(): # 回調函數邏輯 pass async def main(): # WebBit 初始化 wbit = WebBit(mqtt=False) # 根據需求自動設定 # 設定(腳位配置、感測器初始化等) while True: # 主要邏輯迴圈 await uasyncio.sleep_ms(10) uasyncio.run(main()) ``` ## 技術細節 - **語言**: Node.js (ES6 modules) - **MCP SDK**: @modelcontextprotocol/sdk - **支援的 Node.js 版本**: >= 18.0.0 - **程式碼生成**: 基於需求關鍵詞分析和模組化組合 ## 開發指南 ### 新增功能支援 1.`analyzeRequirements` 方法中新增關鍵詞偵測 2. 實作對應的程式碼生成邏輯 3. 更新註解和文件 ### 自訂圖形 修改 `SHAPE_MAPPING` 物件以新增或更改圖形名稱對照。 ## 注意事項 - 生成的程式碼需要在實際 WebBit 硬體上執行 - 腳位設定可能需要根據實際硬體連接進行調整 - MQTT 功能需要網路連線和正確的 broker 設定 ## License MIT