Skip to main content
Glama

Acciones de aplicaciones en vivo tipadas para agentes de IA compatibles con MCP, a través de WebSocket.

Creado por BrainBlend AI


NUEVO: Únete a nuestra comunidad en Discord en discord.gg/J3W9b5AZJR — preguntas sobre el protocolo, comentarios y chat sobre contribuciones al SDK son bienvenidos.

Las aplicaciones en vivo (pestañas del navegador, aplicaciones de escritorio Electron/Tauri, demonios de Node, CLIs) declaran acciones con un constructor al estilo Zod; los agentes (Claude Code, Claude Desktop, Cursor, Copilot, Codex, Cline, ...) las llaman como herramientas MCP. Tu manejador real se ejecuta contra tu estado real. Sin automatización de navegador, sin scraping, sin Playwright.

Por qué Tesseron

  • Acciones tipadas, no DOMs scrapeados. Declara con Zod o cualquier validador de Standard Schema; el manejador es una función simple contra tu estado real.

  • Independiente del framework. La misma API para TS vanilla, React, Svelte, Vue y Node. Elige tu stack.

  • Nativo de MCP. Cada acción, recurso y capacidad se asigna a una primitiva estándar de MCP. Los usuarios eligen su agente.

  • Conexión con un clic. Handshake con código de reclamación de seis caracteres. Sin claves API, sin procesos de OAuth, sin configuración por cliente.

  • Capacidades de primera clase. ctx.confirm para sí/no, ctx.elicit para prompts validados por esquema, ctx.sample para llamadas LLM del agente, ctx.progress para actualizaciones en streaming, recursos suscribibles para lecturas en vivo.

  • Entrega empaquetada. La pasarela MCP se envía dentro de un plugin de Claude Code — un comando de instalación y listo.

Related MCP server: @agent-mcp/react

Instalación rápida (Claude Code)

/plugin marketplace add BrainBlend-AI/tesseron
/plugin install tesseron@tesseron

Eso instala el plugin de Claude Code tesseron, que inicia la pasarela MCP automáticamente y la registra como un servidor MCP. Luego, añade @tesseron/web, @tesseron/server o @tesseron/react a tu aplicación, declara acciones y deja que Claude controle tu interfaz de usuario real.

import { tesseron } from '@tesseron/web';
import { z } from 'zod';

tesseron.app({ id: 'todo_app', name: 'Todo App' });

tesseron
  .action('addTodo')
  .input(z.object({ text: z.string().min(1) }))
  .handler(({ text }) => {
    state.todos.push({ id: newId(), text, done: false });
    render();
    return { ok: true };
  });

await tesseron.connect();

Para otros clientes MCP (Claude Desktop, Cursor, Codex, VS Code Copilot, ...), consulta la configuración única en examples/README.md.

Consulta examples/ para ver aplicaciones funcionales en TS vanilla, React, Svelte, Vue, Express y Node simple.

Paquetes

Paquete

Propósito

@tesseron/core

Tipos de protocolo, constructor de acciones. Cero dependencias en tiempo de ejecución más allá de Standard Schema.

@tesseron/web

SDK para navegador.

@tesseron/server

SDK para Node.

@tesseron/mcp

Servidor de pasarela MCP (CLI; empaquetado en el plugin).

@tesseron/react

Adaptador de hooks para React.

@tesseron/devtools

Interfaz de depuración en el navegador servida por la pasarela MCP (stub privado, aún no publicado).

create-tesseron

Scaffolder npm create tesseron@latest (stub privado, aún no publicado).

El plugin de Claude Code se encuentra en plugin/, expuesto a través del manifiesto del marketplace en .claude-plugin/marketplace.json.

Soporte de capacidades del cliente

El contexto de acción de Tesseron proporciona a los manejadores cuatro capacidades más allá de la invocación simple de herramientas, cada una respaldada por una primitiva MCP. Si una llamada determinada se dispara realmente depende de lo que anuncie el cliente MCP del usuario:

Superficie del SDK

Primitiva MCP

tool(...) (invocación de acción)

tools

resource(...) (lecturas en vivo, suscripciones)

resources (+ resources.subscribe)

ctx.sample(...)

sampling

ctx.confirm(...) / ctx.elicit(...)

elicitation

ctx.progress(...)

notifications/progress (el cliente debe pasar _meta.progressToken en tools/call)

Para obtener la lista autorizada y continuamente actualizada de qué cliente admite qué primitiva, consulta la matriz oficial de compatibilidad de clientes MCP — filtra por Sampling o Elicitation para ver lo limitado que sigue siendo el campo. Algunos puntos que vale la pena conocer antes de elegir una capacidad:

  • Las herramientas son universales: cada cliente MCP puede invocar tus acciones.

  • El muestreo (Sampling) es lo más raro. Claude Code, Claude Desktop y Claude.ai no lo exponen; el soporte actual se concentra en VS Code + GitHub Copilot, goose y fast-agent.

  • La obtención (Elicitation) (MCP 2025-06) llegó a Claude Code (2.1.76, marzo de 2026), Cursor, Codex, VS Code Copilot, goose y fast-agent, pero no a Claude Desktop, Claude.ai, ChatGPT, Windsurf o Zed.

  • Cuando falta una capacidad, Tesseron lanza un error tipado (SamplingNotAvailableError, ElicitationNotAvailableError) o recurre al valor predeterminado seguro (ctx.confirm devuelve false), por lo que los manejadores pueden ramificarse explícitamente en lugar de comportarse mal silenciosamente.

Estado

v1.0 lanzado en abril de 2026. El protocolo es estable en 1.0.0 y se mantiene intencionalmente pequeño: JSON-RPC 2.0 bidireccional sobre WebSocket, registro dinámico de herramientas MCP, handshake de conexión con un clic, progreso en streaming, cancelación, muestreo, confirmación, obtención validada por esquema, recursos suscribibles.

Publicado en npm (todos en v1.0.1): @tesseron/core, @tesseron/web, @tesseron/server, @tesseron/react, @tesseron/mcp. Los SDKs de JS/TS son la implementación de referencia; la especificación del protocolo es CC BY 4.0 para que cualquiera pueda escribir un cliente o servidor compatible en cualquier lenguaje.

En la hoja de ruta: adaptadores para Svelte/Vue, la interfaz de devtools, un transporte HTTP Streamable, un SDK de Python y bindings para runtimes nativos de escritorio (Rust para Tauri, etc.).

Desarrollo

pnpm install
pnpm typecheck
pnpm test                                    # 65 tests across core + mcp
pnpm --filter @tesseron/mcp build:plugin     # rebuild plugin/server/index.cjs after gateway changes

Contribución

Los informes de errores, refinamientos del protocolo, nuevos adaptadores de framework y mejoras en la implementación de referencia son bienvenidos.

Historial de estrellas

Licencia

Implementación de referencia — Business Source License 1.1 (código fuente disponible). Puedes integrar Tesseron en tus propias aplicaciones, usarlo internamente, hacer un fork y redistribuirlo libremente. No puedes ofrecer Tesseron o una parte sustancial del mismo como un servicio alojado o gestionado a terceros. Cada versión se convierte automáticamente a Apache-2.0 cuatro años después de su publicación.

Especificación del protocolo — CC BY 4.0. Se fomenta explícitamente una implementación compatible en cualquier lenguaje, para cualquier propósito, incluido el comercial.

Las contribuciones son bienvenidas bajo el Certificado de Origen del Desarrollador — cada commit debe estar Signed-off-by.


Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to discover and call business actions from browser-only legacy web applications as typed MCP tools, executing them through the original GUI via Playwright.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables agents to drive a running React application through typed MCP tools, using the same actions as the UI instead of browser automation.
    28 npm
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables remote AI agents to control a local, authenticated desktop browser over MCP through an outbound WebSocket bridge and Chrome extension, supporting tab management, navigation, page reading, clicking, typing, scrolling, screenshots, and JavaScript evaluation.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to control live Zen Browser and Firefox tabs via MCP, performing actions like navigation, clicking, typing, scrolling, and running JavaScript through a local WebSocket bridge.
    MIT