‹ 首页

tinywasm-app

@tinywasm · 收录于 1 周前 · 上游提交 1 周前

Global MCP daemon for tinywasm/app — how to start the server, available tools, IDE auto-config, SSE logs, and diagnostics. Use when working with the tinywasm development environment.

适合你,如果正在使用 tinywasm 进行 WebAssembly 开发

/ 通过 npx 安装 校验哈希
npx oh-my-skill add tinywasm/devflow/tinywasm-app
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- tinywasm/devflow/tinywasm-app
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify tinywasm/devflow/tinywasm-app
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
1GitHub stars
~1.3K上下文体积 · 单文件
索引托管

怎么用

商店整理自技能原文 · 版本 6481063 · 表述以原文为准
它做什么

安装后,Claude 可以控制一个本地 Web 开发环境:启动/切换项目、获取项目信息、查看日志,以及通过浏览器工具(导航、点击、填写表单、截图等)与运行中的 Web 应用交互。

什么时候触发

当你在 tinywasm 开发环境中工作,并且本地运行了 tinywasm -mcp 守护进程时触发。

装好后可以这样说
技能原文 SKILL.md作者撰写 · MIT · 6481063

tinywasm/app — MCP Integration

tinywasm/app es el orquestador central del entorno de desarrollo. Expone un servidor MCP global persistente en el puerto 6060.

Cómo iniciar el MCP
tinywasm -mcp          # inicia el daemon global (MCP + SSE en :6060)
tinywasm               # abre el TUI cliente (se conecta al daemon en :6060)

El daemon persiste entre proyectos. El TUI solo es un visor SSE — Ctrl+C lo cierra sin detener el servidor.

Configuración IDE (auto-gestionada)

Al iniciar, app.ConfigureIDEs escribe automáticamente la configuración MCP en:

| IDE | Archivo | |-----|---------| | VS Code | ~/.config/Code/User/mcp.json o profiles | | Claude Code | ~/.claude.json | | Antigravity | ~/.gemini/antigravity/mcp_config.json |

Formato Claude Code (~/.claude.json):

{
  "mcpServers": {
    "tinywasm": {
      "url": "http://localhost:6060/mcp",
      "type": "http"
    }
  }
}
Auth

El daemon genera y persiste un API key en disco (cfg.APIKeyPath).

  • mcp.NewTokenAuthorizer(apiKey) — activo cuando apiKey != ""
  • mcp.OpenAuthorizer() — activo cuando no hay API key

El token va en el header: Authorization: Bearer <apiKey>

Herramientas MCP registradas (16 tools — registro estático al arrancar)

Todas las tools se registran una sola vez al iniciar el daemon. No hay list_changed.

Daemon tools (3) — siempre disponibles

| Tool | Descripción | |------|-------------| | start_development | Inicia/cambia proyecto activo en modo headless | | app_info | URL, dir público, modo WASM, módulos del proyecto activo | | app_get_logs | Logs recientes con filtro de sección (e.g. BUILD, SERVER) |

Browser tools (13) — visibles desde el arranque, "no listo" sin proyecto activo

| Tool | Descripción | |------|-------------| | browser_navigate | Navega a una URL | | browser_click_element | Click en un selector CSS | | browser_fill_element | Rellena un campo de texto | | browser_swipe_element | Gesto swipe en un elemento | | browser_evaluate_js | Ejecuta JavaScript y retorna resultado | | browser_get_content | Obtiene HTML/texto de la página | | browser_get_console | Logs de consola del browser | | browser_get_errors | Errores JS de la página | | browser_get_network_logs | Peticiones de red | | browser_get_performance | Métricas de rendimiento | | browser_inspect_element | Atributos y estilos de un elemento | | browser_screenshot | Captura pantalla | | browser_emulate_device | Emula viewport de dispositivo |

Arquitectura de registro (daemon, desde v0.5.28)
daemon startup
    ├── browser singleton = cfg.BrowserFactory(...)   // una sola instancia de larga vida
    ├── daemonToolProvider (dtp)
    │     ├── start_development
    │     ├── app_get_logs
    │     └── app_info
    ├── BrowserAdapter{dtp.browser}                   // delega a browser.GetMCPTools()
    └── mcp.NewServer([..cfg.McpToolHandlers, dtp, BrowserAdapter])

start_development RPC
    └── runProjectLoop() → onProjectReady(h)
          ├── dtp.setActiveHandler(h)   // app_info / app_get_logs operativos
          └── browser.OpenBrowser(...)  // browser_* operativos
No existe ProjectToolProxy (eliminado en v0.5.28). El browser singleton expone sus tools desde el arranque; retornan error "not ready" hasta que un proyecto está activo.
Flujo daemon/cliente
tinywasm -mcp  →  runDaemon()
    ├── crea mcp.Server (Auth + SSE)
    ├── registra daemonToolProvider + BrowserAdapter (estático)
    └── HTTP :6060
          ├── POST /mcp                → srv.HandleMessage (JSON-RPC 2.0)
          ├── GET  /logs              → SSE log stream
          ├── GET  /tinywasm/state    → estado del proyecto activo
          └── POST /tinywasm/action   → keyboard webhooks (q, r, start, stop, restart)

tinywasm (sin flags)  →  clientMode
    ├── detecta daemon en :6060
    ├── conecta GET /logs (SSE)
    └── TUI viewer (Bubble Tea)
          ├── Ctrl+C → detach (daemon sigue corriendo)
          └── q      → POST /tinywasm/action {key:"q"} → detiene proyecto
Endpoints HTTP

| Método | Ruta | Auth | Descripción | |--------|------|------|-------------| | POST | /mcp | Bearer | JSON-RPC 2.0 MCP + métodos tinywasm/* | | GET | /logs | — | SSE stream de logs del proyecto activo | | GET | /tinywasm/state | Bearer | Estado JSON del TUI activo | | POST | /tinywasm/action | Bearer | Dispatch de acciones: {key, value} | | GET | /version | — | Versión del daemon |

SSE (streaming de notificaciones)
  • Logs del proyecto → canal "logs" (consumido por TUI cliente)
  • Notificaciones MCP → canal "mcp"
  • No se emite notifications/tools/list_changed (registro estático)
Archivos clave

| Archivo | Rol | |---------|-----| | daemon.go | runDaemon(): inicia MCP global, gestiona auth+SSE+HTTP; daemonToolProvider | | mcp_ide.go | ConfigureIDEs(), WriteMCPConfig(): auto-config de IDEs | | mcp_registry.go | BrowserAdapter, buildProjectProviders() (modo standalone) | | sse_publisher.go | Ring buffer [100]LogEntry; RecentLogs(section, limit) | | section-build.go | Emite ✅ build ok / ❌ build failed en sección BUILD | | start.go | Wiring modo standalone: llama ConfigureIDEs + buildProjectProviders |

Diagnóstico si el MCP no responde
# 1. Verificar que el daemon corre
curl http://localhost:6060/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","id":"1","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"0"}}}'

# 2. Ver tools disponibles (reemplaza <TOKEN> con TINYWASM_API_KEY del .env)
curl http://localhost:6060/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <TOKEN>" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":"1","params":{}}'

# 3. Si no responde, iniciar el daemon
tinywasm -mcp

# 4. Verificar configuración en Claude Code
cat ~/.claude.json | grep -A5 mcpServers
按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。