tt-agent-bridge
TT Agent Bridge
Permite que agentes CLI externos (ZCode / Claude Code, etc.) operen directamente sobre TauriTavern a través de MCP: leer datos de runtime (chat / variables / activación de world info / logs / payload sin procesar de las peticiones LLM / runtime de la barra de estado en iframe), ejecutar acciones (STScript / enviar mensajes / escribir variables / cambiar de personaje / saltar a entradas de world info) y ejecutar JS arbitrario en el documento principal o dentro del iframe de mensajes para diagnosticar tarjetas de tavern.
Arquitectura
外部 Agent(ZCode / Claude Code) dev 脚本(tteval / ttdiag / regress)
↕ MCP over stdio ↕ agent 角色直连(ws + JSON)
bridge server(Node,仅监听 127.0.0.1,token 鉴权,支持常驻 daemon)
↕ WebSocket(扩展/agent 主动连出,多 agent 并存)
TauriTavern 扩展「TT Agent Bridge」
├─→ window.__TAURITAVERN__.api 检测:日志 / 世界书激活 / LLM 请求 / 聊天搜索 / console 捕获
└─→ SillyTavern.getContext() 操作:STScript / 变量 / 消息 / 事件Fuente única de verdad del contrato del protocolo:
src/core/protocol.ts(el bridge lo importa directamente; no copiar).La extensión solo usa los límites públicos (ABI del host TT + miembros públicos de
getContext()de upstream), sin tocar módulos internos.bind-or-attach: cuando el servidor MCP arranca, si ya hay un hub (daemon) vivo con el mismo token en el puerto, se monta automáticamente como agente: los clientes MCP concurrentes ya no provocan conflictos de puerto.
Related MCP server: macOS Companion MCP Server
Instalación de la extensión (dentro de TauriTavern)
Abre TauriTavern → panel «Extensiones» de la parte superior → Gestionar extensiones → Instalar extensión
Introduce la URL Git de este repositorio (TauriTavern solo acepta remotes Git https anónimos), por ejemplo:
https://github.com/<你的用户名>/tt-agent-bridge.gitTras la instalación, aparece una insignia de estado «Bridge» en la esquina inferior derecha (se pone verde cuando el hello es aceptado)
También se puede colocar el directorio manualmente (
data/extensions/third-party/tt-agent-bridge/), pero se recomienda la instalación por Git para poder actualizarlo después. Aviso de actualización: la versión del protocolo evoluciona con el repositorio (actualmente v2); la extensión y el bridge se publican juntos desde el mismo repositorio. Tras traer el repositorio nuevo, hay que actualizar también la extensión dentro de TT (actualización por Git o sincronizardist/+manifest.jsony recargar la página); de lo contrario, la extensión será rechazada con 4003 (insignia roja, reintentos periódicos).
Arranque
Recomendado: daemon residente (la extensión mantiene una conexión persistente; los scripts/MCP se montan en segundos, sin esperar cada vez a que la extensión se reconecte):
cd bridge
npm install
npm run daemon -- --port 18789 --token <你的token> # 或 TTAB_PORT / TTAB_TOKEN 环境变量O ejecutar directamente el servidor MCP (bind automático si no hay daemon; attach automático si lo hay):
npm run start # 随机 token,打印在 stderr,并写入 .bridge-token
# 或固定 token:
npm run start -- --port 18789 --token <你的token>Token de emparejamiento
Haz clic en la insignia Bridge de la esquina inferior derecha de TT → pega el token (el token: ... del log de arranque del server) → pulsa «Reconectar» → cuando la insignia se pone verde, la conexión se ha establecido. Si el token es rechazado (4001), la extensión reintenta lentamente durante 30 segundos y se recupera sola una vez corregido el token.
Montar en un agent (ZCode / Claude Code)
Registro mediante MCP stdio (comando de ejemploo; ajústalo a la sintaxis de tu cliiente):
zcode mcp add tt-agent-bridge -- npm run start --prefix <bridge目录绝对路径>Lista de herramientas MCP (21)
Clase de detección (lectura)
Herramienta | Uso |
| capacidades / personaje actual / longitd del chat / claves de chatMetadata |
| mesajes del piso (incluye swipes, variables de piso opcionales, nombre del iframe de la barra de estado de ese piso) |
| variables a nvel de chat o de un piso especificado (MVU stat_data, resueltas por swipe_id) |
| tarjeta de personaje: lectura por secciones de summary / full / regexes / scripts / character_book |
| últio lote de activación de world info |
| lista de peticiones LLM / vista previa / payload sin procesar |
| logs de frontend (incluida la captura de console) / backend |
| listado completo de iframes + mapeo piso→iframe (mismo origen / número de scripts / Vue / visibilidad) |
| consulta rápida de MVU: último stat_data / piso de initvar / texto original del último |
| búsqueda de texto completo del chat en el lado del host |
| localiza el último mensaje que coincide con condiciones estructurales (nombre de clave / rol) |
Clase de operación (escritura)
Herramienta | Uso |
| ejecuta STScript |
| envía un mensaje (puede disparar la generación) |
| escribe variables de chat / global |
| cambia de personaje |
| abre el editor de entradas de world info dentro del host |
| lee/establece el límite de retención de logs de LLM (súbelo en sesiones de depuración largas) |
| activa/desactiva la captura de console completa del host (requisito previo para que los errores de iframe entren en |
Clase de depuración
Herramienta | Uso |
| ejecuta JS arbitrario en el documento principal o en un iframe especificado (parámetro |
bridge local
Herramienta | Uso |
| extrae el flujo de eventos (nuevos mensajes / activación de world info / errores de frontend y backend / peticiones LLM completadas / logs de la extensión) |
| estado del bridge (modo owned/attached, conexión de la extensión, listado de herramientas) |
Escenarios típicos de depuración (tarjetas de tavern)
Barra de estado en blanco / no se leen variables:
tt_mvu_statpara ver si existe stat_data →tt_iframespara localizar el frame de la barra de estado →tt_eval frame=TH-message--0--2para inspeccionargetAllVariables()y el DOM dentro del iframe → trastt_console_capture {enabled:true}, usatt_logs kind=frontendpara ver el error (SyntaxErrorsuele deberse a la doble decodificación de entidades HTML).Interacción rota (las pestañas no responden al clic / los botones no reaccionan): dentro de
tt_eval frame=..., lee el código fuente del script, comprueba el montaje de Vue (el.__vue_app__) y lanzadispatchEventpara simular clics en un experimento comparativo.World info sin efecto:
tt_worldinfo_lastpara ver el lote de activación →tt_llm_logsen raw para ver qué se llegó a ensamblar en el prompt →tt_worldinfo_openpara saltar directamente a esa entrada.Verificación tras modificar la tarjeta:
tt_exec_stscriptdispara/gopara recargar →tt_read_messagespara comprobar el resultado renderizado.Revisión de la estructura de la tarjeta:
tt_get_character section=regexes|scripts|character_booklee los componentes integrados por secciones, evitando inundar el contexto con el JSON de varios MB de toda la tarjeta.
Scripts de desarrollo (bridge/scripts/)
Script | Uso |
| cliente de conexión directa para el agent (attach prioritario; si el daemon no está, recurre a spawn) |
| ejecuta el contenido del archivo como cuerpo de código de |
| secuencia de diagnóstico integrada |
| suite de regresión: daemon / attach / 21 herramientas / dos agents concurrentes |
| recarga la página de TT mediante WebView2 CDP (9222) |
| inspección del desempaquetado de la tarjeta de personaje PNG / volcado completo a disco |
| prueba de humo de extremo a extremo por MCP stdio |
Límites de seguridad
WS solo escucha en
127.0.0.1; el handshake debe incluir el token (--token/TTAB_TOKEN, generado aleatoriamente por defecto).No actúa como proxy de sistema de archivos / comandos arbitrarios: las operaciones con archivos las realiza el agent con sus propias herramientas locales.
Las operaciones de escritura y
tt_evalestán marcadas como destructive; dependen de la política de confirmación del lado del agent.El token se almacena en texto plano en el localStorage de la extensión y en
.bridge-tokendel bridge; ambos son archivos locales de la máquina.
Limitaciones conocidas
El texto de
/sendse transmite escapado a través de la tubería; si contiene caracteres extremos, se usatt_evalpara operar sobre el context directamente como respaldo.set_variables scope=globaldepende del comportamiento de serialización de objetos de/setvar scope=global.En modo attached,
tt_poll_eventssolo contiene eventos posteriores al attach (los eventos históricos están en el ring buffer del daemon y no se reproducen por la ruta de attach vía MCP);extConnecteddett_bridge_statuses una instantánea del momento del attach.El
context.characterIdde TauriTavern resulta ser en la práctica una cadena numérica (en el ST de upstream es number); el bridge ya lo maneja de forma compatible internamente.Si el daemon muere, las llamadas del servidor MCP attached fallan (el mensaje de error indica claramente reiniciar el daemon); no se vuelve automáticamente a bind.
Desarrollo
npm install && npm run build # 构建扩展(typecheck + vite -> dist/)
cd bridge && npm install # bridge 依赖
cd bridge && npm run typecheck # bridge 侧类型检查La raíz del repositorio es la propia extensión (manifest.json + dist/); los artefactos de build de dist se suben junto con el repositorio, de modo que tras la instalación por Git, TT la carga directamente. Tras modificar el código fuente, basta con npm run build y hacer commit para que la actualización de extensiones de TT lo recoja.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to execute Lua code, inspect scripts, spy on remotes, and interact with a running Roblox game client through an MCP interface.8221431MIT
- AlicenseBqualityAmaintenanceEnables AI agents to directly access native macOS services, media, system health, and administration tools through a local MCP server.40218MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables AI assistants to build, test, and debug Tauri v2 applications through UI automation (screenshots, clicks, typing, element finding), IPC monitoring, log streaming, and mobile device management.MIT
- AlicenseNot gradedqualityBmaintenanceExposes SmartCLI's built-in agent tools (file operations, code search, shell commands, web search, memory, and snapshots) as MCP endpoints, allowing external clients to leverage them over stdio or HTTP.1MIT
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ywclgl258/tt-agent-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server