RisalDash 是 AI Skill Hub 本期精选MCP工具之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
RisalDash 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
RisalDash 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/ziyarago/RisalDash
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"risaldash": {
"command": "npx",
"args": ["-y", "risaldash"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 RisalDash 执行以下任务... Claude: [自动调用 RisalDash MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"risaldash": {
"command": "npx",
"args": ["-y", "risaldash"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
Beautiful real-time web dashboards for ESP32 / ESP8266 — in a few lines of C++.
<p align="center"><img src="https://raw.githubusercontent.com/ziyarago/RisalDash/main/assets/hero.gif" alt="A few lines of C++ become a live RisalDash dashboard" width="860"></p>
Describe widgets; RisalDash generates the HTML, CSS, JS and the WebSocket protocol for you. The dashboard is served by the device itself in an OKLCH "liquid glass" style (translucent cards, iOS-like status bar, a Settings gear for language/theme/accent, swipe-up multi-page layouts), updates live over WebSocket, and works offline-first — including a captive portal for first-boot Wi-Fi setup. Zero front-end code.
🌐 dash.risal.io · MIT · ESP32 + ESP8266
#include <RisalUI.h>
RisalUI dash("Greenhouse");
float temp = 24.3, volts = 12.1; int bright = 128; bool pump = false;
void setup() {
dash.gauge ("Voltage", &volts, 0, 14, "V");
dash.chart ("Temperature", &temp, "C");
dash.slider("Brightness", &bright, 0, 255, [](int v){ analogWrite(LED_PIN, v); });
dash.toggle("Pump", &pump, [](bool on){ digitalWrite(PUMP_PIN, on); });
dash.begin(); // saved Wi-Fi → connect; first boot → captive setup portal
}
void loop() {
temp = readTemp(); volts = readVolts();
dash.update(); // pushes changed values to the browser
}
Arduino IDE — Library Manager → search "RisalDash".
PlatformIO — platformio.ini:
lib_deps =
RisalDash
esp32async/ESPAsyncWebServer
esp32async/AsyncTCP ; ESP32
; esp32async/ESPAsyncTCP ; ESP8266
ESP-IDF (Arduino as a component) — from the Component Registry:
idf.py add-dependency "shaxzodahmedov/risaldash"
Prototype and debug the whole dashboard with nothing plugged in. #include <RisalFake.h> gives you realistic drifting readings — a slow trend + wobble + a little noise, not a flat sine — so the UI looks live while you iterate on layout and logic.
#include <RisalFake.h>
RisalFakeEnv env; // temperature / humidity / pressure / soil / air quality
void setup() { env.begin(); /* ...declare widgets bound to temp/hum/... ... */ }
void loop() {
env.update();
temp = env.temperature(); // °C — later: aht.readTemperature()
hum = env.humidity(); // %
pres = env.pressure(); // hPa
dash.update();
}
Need one value of any other quantity? RisalFake(center, amp, noise):
RisalFake volts(12.4, 0.3, 0.05); // 12.4 V, ±0.3 drift, a little jitter
voltage = volts.read();
When the real sensor arrives, swap the reads for your driver's — same variable names, the rest of the sketch is unchanged. Opt-in and Zero-Waste: nothing is compiled unless you include it. Works on ESP8266 and ESP32. The ESP32-C6-LCD-1.47 example ships with it.
- Minimal — a few widgets over an access point. - FirstBoot — captive-portal Wi-Fi provisioning (signal levels, timezone), then your network. - WifiSetup — the full provisioning circle, incl. dash.forgetWiFi() back to the portal. - Layouts — multi-page dashboard with the swipe-up page switcher + accent()/timezone(). - Tabs — switchable tab panels, with cards pinned above them. - AllWidgets — every widget type across five pages, from gauges to the robot face, map, 3D cube, terminal and thermal heatmap. - WidgetSizes — the cell grid: the same reading at RSIZE_S / RSIZE_M / RSIZE_L, compact gauges, and a sensor preset resized as a group. - FakeSensors — the whole <RisalFake.h> toolbox: drifting values, the day/night greenhouse, GPS route playback, a fake BLE scan and record-&-replay — no hardware attached. - SensorTemplates — dash.sensor("bme280", …) presets, tuned with .chart() / .size(). - LiveWeather — real conditions for any city from Open-Meteo (no key), fetched in a background task; the web City field re-geocodes as you type. <RisalWeather.h>, ESP32-only for live data. - UiKit — the interface skeleton: pages, groups, separators, sizes, icons, .gear(), chrome. - Multilingual — dash.translate(): the whole UI (your titles included) switches EN/RU/UZ/AR. - ESP32-C6-LCD-1.47 — the big showcase: web dashboard + a 13-slide LCD carousel, real BLE scan, live weather, robot eyes; split into display.h / led.h / i18n.h / sensors.h / weather.h / ble.h so the sketch stays readable. - ESP32-S3-DualCore — a heavy worker on core 0 while the dashboard stays smooth on core 1. - Wemos-D1-Mini — all-real-hardware ESP8266 showcase: onboard LED, A0, live heap/RSSI.
#include <RisalWeather.h> pulls the current conditions from Open-Meteo (free, no key) and turns a city name into coordinates for you. Both calls block on an HTTPS request, so run them from a background FreeRTOS task — never loop(). ESP32-only (TLS); a graceful no-op elsewhere.
#include <RisalWeather.h>
RisalWeather wx;
float wxTemp; int wxCode; String city = "Tashkent";
// …inside a FreeRTOS task, off loop():
wx.geocode(city); // city name -> lat/lon (auto-detected)
if (wx.poll()) { // fetch current weather for that location
wxTemp = wx.temperature(); // °C
wxCode = wx.code(); // WMO code -> RisalWeather::codeText()
}
Bind the city to a text field and it re-geocodes whenever the user types a new one; the dash.weather("Sky", &wxCode) widget shows a matching sky icon next to a `dash.stat("Outside", &wxTemp, "C")`. The ESP32-C6-LCD-1.47 example wires the task, a persisted City field and an LCD slide end-to-end.
dash.enableMCP("risal_pat_token"); // GET /api/mcp/manifest → AI tools (see tools/risal-mcp-bridge)
dash.enableOTA(); // /update page + "Update firmware" button in Settings (OTA)
dash.mqtt("broker.local", 1883, "greenhouse"); // needs -D RISAL_ENABLE_MQTT + PubSubClient
dash.enableHomeAssistant("greenhouse"); // Home Assistant MQTT auto-discovery (after mqtt())
| Endpoint | Purpose |
|---|---|
GET /api/state | full state as JSON |
GET /api/set?key=value | set a control |
GET /metrics | Prometheus exposition |
GET /api/mcp/manifest?token= | widgets as MCP tools (token-guarded) |
GET/POST /update | OTA firmware upload (when enableOTA()) |
MCP — enableMCP(token) exposes GET /api/mcp/manifest, turning every widget into an AI tool (read sensors, drive controls). The companion risal-dash-mcp bridge connects a device to Claude Desktop / Claude Code. 📝 Walkthrough: Control your ESP32 from an AI agent.
OTA — enableOTA() serves /update and adds an "Update firmware" button to the Settings modal, so you flash a new .bin from the browser — no USB. It's opt-in on purpose: OTA needs a partition with a second app slot (Arduino's default "4MB with spiffs" and the ESP8266 4MB layouts have one; huge_app / single-app schemes do not), and /update lets anyone on the LAN flash the device — so turn it on for a trusted network. Every dashboard also has a built-in Reset Wi-Fi button in Settings (forgetWiFi() → back to the setup portal).
Home Assistant — after mqtt(), enableHomeAssistant() publishes MQTT discovery configs so HA auto-creates entities (sensors, switches, numbers, binary sensors, buttons), all grouped under one device. No YAML.
dash.begin(); // saved creds → STA; otherwise captive setup portal
dash.begin("ssid", "password"); // connect to this network (falls back to the portal)
dash.beginAP("Greenhouse", "12345678");// plain dashboard over its own access point
dash.apName("Greenhouse-Setup"); // name of the captive-portal AP (optional)
On first boot the device appears as a RisalDash-Setup Wi-Fi. Connect to it — the setup page opens automatically (captive portal). Pick your network, enter the password; the device reboots and serves the dashboard on your Wi-Fi.
RisalDash isn't the only way to put a UI on an ESP — and the others are good tools. They optimize for different things; here's an honest read of where each fits.
| RisalDash | ESPUI | ESP-DASH | Blynk | |
|---|---|---|---|---|
| **Hosting** | on-device, self-hosted | on-device, self-hosted | on-device, self-hosted | cloud (Blynk.Cloud) |
| **Runs fully offline** | ✅ AP, no internet | ✅ AP mode | ✅ local only | needs the cloud ¹ |
| **License / cost** | MIT, free | MIT, free | Lite MIT · **Pro paid** | freemium (free: 5 devices) ² |
| **Wi-Fi provisioning** | ✅ captive portal + NVS | do it yourself | do it yourself | via the app |
| **Widgets / presets** | 36 controls + 71 sensor presets | focused set (slider, switch, graph, pad…) | cards + charts · more in Pro | rich app widgets ² |
| **Multi-language + RTL** | ✅ EN / RU / UZ / AR, RTL | — | — | app locales |
| **AI / MCP control** | ✅ every widget is an MCP tool | — | — | HTTP API · automations |
| **Build with no hardware** | ✅ built-in fake sensors | — | — | — |
| **Mobile app** | responsive web UI | web UI | web UI | ✅ native iOS / Android |
| **Cloud fleet & alerts** | — (single device, LAN) | — | — | ✅ fleet, OTA, notifications |
<sub>¹ Blynk 2.0 is cloud-first; a legacy self-hosted server exists but is community-maintained. ² Blynk's free plan allows up to 5 devices / 1 user; more needs a paid plan.</sub>
Choose Blynk for a polished mobile app, push notifications and cloud fleet management, if depending on a hosted service is fine. Choose ESP-DASH for a fast, clean on-device dashboard (its Pro tier adds tabs and premium widgets). Choose ESPUI for a simple, proven, minimal UI. RisalDash leans into self-hosted + offline-first with a broad built-in widget/sensor set, i18n/RTL, AI (MCP) control and hardware-free prototyping — all MIT.
<sub>Sources: s00500/ESPUI · ayushsharma82/ESP-DASH, espdash.pro · blynk.io/pricing, docs.blynk.io limits. Facts checked 2026-07; correct anything that has since changed via a PR.</sub>
高质量开源MCP工具,易于使用
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
经综合评估,RisalDash 在MCP工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | RisalDash |
| 原始描述 | 开源MCP工具:Beautiful real-time web dashboards for ESP32 / ESP8266 in a few lines of C++ — a。⭐10 · C++ |
| Topics | arduinoesp32esp8266dashboard |
| GitHub | https://github.com/ziyarago/RisalDash |
| License | MIT |
| 语言 | C++ |
收录时间:2026-07-06 · 更新时间:2026-07-11 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端