tt-agent-bridge
TT Agent Bridge
Befähigt externe CLI-Agenten (ZCode / Claude Code usw.), über MCP direkt auf TauriTavern zuzugreifen: Laufzeitdaten lesen (Chat / Variablen / Weltbuch-Aktivierung / Logs / rohe LLM-Anfragen / Statusleisten-Runtime der iframes), Aktionen ausführen (STScript / Nachrichten senden / Variablen schreiben / Charakter wechseln / zu Weltbuch-Einträgen springen) sowie beliebiges JS zur Diagnose von Tavern-Karten im Hauptdokument oder im Nachrichten-iframe auszuführen.
Architektur
外部 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 / 变量 / 消息 / 事件Einzige Quelle der Wahrheit für den Protokollvertrag:
src/core/protocol.ts(vom bridge direkt importiert, nicht kopieren).Die Erweiterung nutzt nur öffentliche Grenzen (TT-Host-ABI + öffentliche Mitglieder des upstream
getContext()), fasst keine internen Module an.bind-or-attach: Wenn beim Start des MCP-Servers bereits ein lebender Hub (daemon) mit demselben Token auf dem Port läuft, hängt sich der Server automatisch als agent an – bei mehreren gleichzeitigen MCP-Clients gibt es keinen Portkonflikt mehr.
Related MCP server: macOS Companion MCP Server
Erweiterung installieren (in TauriTavern)
TauriTavern öffnen → oberes „Erweiterungen“-Drawer → Erweiterungen verwalten → Erweiterung installieren
Die Git-Adresse dieses Repositories eintragen (TauriTavern akzeptiert nur anonyme https-Git-Remotes), z. B.:
https://github.com/<你的用户名>/tt-agent-bridge.gitNach der Installation erscheint unten rechts das Statusabzeichen „Bridge“ (wird grün, sobald hello akzeptiert wurde)
Das manuelle Platzieren des Verzeichnisses (
data/extensions/third-party/tt-agent-bridge/) ist ebenfalls möglich, aber die Git-Installation wird für spätere Updates empfohlen. Hinweis zum Upgrade: Die Protokollversion entwickelt sich mit dem Repository weiter (aktuell v2); Erweiterung und bridge werden im selben Repository gemeinsam veröffentlicht. Nach dem Ziehen des neuen Repositories muss auch die Erweiterung in TT aktualisiert werden (Git-Update oderdist/+manifest.jsonsynchronisieren und dann die Seite neu laden), sonst wird die Erweiterung mit 4003 abgelehnt (Abzeichen rot, periodische Wiederholung).
Start
Empfohlen: Dauerhaft laufender daemon (die Erweiterung hält eine Langzeitverbindung aufrecht, Skripte/MCP hängen sich in Sekundenschnelle an, nicht mehr jedes Mal auf die Wiederverbindung der Erweiterung warten):
cd bridge
npm install
npm run daemon -- --port 18789 --token <你的token> # 或 TTAB_PORT / TTAB_TOKEN 环境变量Oder MCP server direkt ausführen (ohne daemon automatisch bind; mit daemon automatisch attach):
npm run start # 随机 token,打印在 stderr,并写入 .bridge-token
# 或固定 token:
npm run start -- --port 18789 --token <你的token>token-Paarung
Klicke auf das Bridge-Abzeichen unten rechts in TT → token einfügen (token: ... aus dem Server-Startprotokoll) → auf „Neu verbinden“ klicken → das Abzeichen wird grün, sobald die Verbindung erfolgreich ist. Wird der token abgelehnt (4001), unternimmt die Erweiterung 30 Sekunden lang langsame Wiederholungsversuche; sobald der token korrigiert ist, heilt sie sich selbst.
An agent anbinden (ZCode / Claude Code)
Per stdio MCP registrieren (Befehlsbeispiel, an die Syntax deines Clients anpassen):
zcode mcp add tt-agent-bridge -- npm run start --prefix <bridge目录绝对路径>MCP-Werkzeugübersicht (21)
Ermittlung (lesen)
Werkzeug | Zweck |
| Fähigkeiten / aktueller Charakter / Chatlänge / chatMetadata-Schlüssel |
| Floor-Nachrichten (inkl. swipe, optionale Floor-Variablen, Name des Statusleisten-iframes dieser Ebene) |
| Variablen auf Chat-Ebene oder eines bestimmten Floors (MVU stat_data, nach swipe_id aufgelöst) |
| Charakterkarte: summary / full / regexes / scripts / character_book abschnittsweise lesen |
| Letzte Weltbuch-Aktivierungsrunde |
| AI-Anfrageliste / Vorschau / rohe Nutzlast |
| Frontend- (inkl. console-Erfassung) / Backend-Logs |
| Liste aller iframes + Floor→iframe-Zuordnung (Same-Origin/Skriptanzahl/Vue/Sichtbarkeit) |
| MVU-Schnellübersicht: neuestes stat_data / initvar-Floors / letzter |
| Volltextsuche im Chat auf der Host-Seite |
| Letzte passende Nachricht anhand struktureller Bedingungen (Schlüsselname/Rolle) lokalisieren |
Aktionen (schreiben)
Werkzeug | Zweck |
| STScript ausführen |
| Nachricht senden (kann Generierung auslösen) |
| chat-/global-Variablen schreiben |
| Charakter wechseln |
| Weltbuch-Eintragseditor im Host öffnen |
| Obergrenze der AI-Log-Aufbewahrung lesen/setzen (bei langen Debug-Sitzungen erhöhen) |
| Vollständige console-Erfassung im Host ein-/ausschalten (Voraussetzung dafür, dass iframe-Fehler in |
Debugging
Werkzeug | Zweck |
| Beliebigen JS-Code im Hauptdokument oder in einem bestimmten iframe ( |
bridge-lokal
Werkzeug | Zweck |
| Ereignisstrom abrufen (neue Nachrichten/Weltbuch-Aktivierung/Frontend- und Backend-Fehler/LLM-Anfrage abgeschlossen/Erweiterungslogs) |
| bridge-Status (owned/attached-Modus, Erweiterungsverbindung, Werkzeugliste) |
Typische Debug-Szenarien (Tavern-Karten)
Statusleiste leer / Variablen nicht lesbar: Mit
tt_mvu_statprüfen, ob stat_data existiert → mittt_iframesdie Statusleisten-frame finden → mittt_eval frame=TH-message--0--2in der iframegetAllVariables()und DOM prüfen → nachtt_console_capture {enabled:true}mittt_logs kind=frontenddie Fehler ansehen (SyntaxErrorist meist auf doppelte Dekodierung von HTML-Entitäten zurückzuführen).Interaktion defekt (Tab nicht klickbar / Button reagiert nicht): In
tt_eval frame=...Skriptquellen lesen, Vue-Mount prüfen (el.__vue_app__), mitdispatchEventKlicks simulieren für Kontrollexperimente.Weltbuch wirkungslos: Mit
tt_worldinfo_lastdie Aktivierungsrunde ansehen → mittt_llm_logsraw prüfen, was tatsächlich in den Prompt eingebaut wurde → mittt_worldinfo_opendirekt zu diesem Eintrag springen.Nach Kartenänderungen verifizieren:
tt_exec_stscriptlöst/go-Reload aus → mittt_read_messagesdas Rendering-Ergebnis prüfen.Kartenstruktur überprüfen: Mit
tt_get_character section=regexes|scripts|character_bookeingebettete Komponenten abschnittsweise lesen, um zu vermeiden, dass die MB-große JSON der gesamten Karte den Kontext flutet.
Dev-Skripte (bridge/scripts/)
Skript | Zweck |
| Direktverbindungs-Client für agent (attach bevorzugt; spawn als Fallback, wenn daemon nicht läuft) |
| Führt den Dateiinhalt als Code von |
| Integrierte Diagnose-Sequenzen |
| Regressionstest-Suite: daemon/attach/21 Werkzeuge/zwei agenten gleichzeitig |
| TT-Seite über WebView2 CDP (9222) neu laden |
| Charakterkarten-PNG entpacken/prüfen / vollständig auf die Platte schreiben |
| MCP-stdio-Komplettdurchlauf (Smoke-Test) |
Sicherheitsgrenzen
WS lauscht nur auf
127.0.0.1; der Handshake muss einen token enthalten (--token/TTAB_TOKEN, standardmäßig zufällig generiert).Kein Proxy für beliebige Dateisystem- oder Befehlszugriffe – für Dateioperationen nutzt der agent seine eigenen lokalen Werkzeuge.
Schreiboperationen und
tt_evalsind als destructive markiert; die Bestätigungsrichtlinie liegt bei der agent-Seite.Der token wird im Klartext in der localStorage der Erweiterung und in
.bridge-tokendes bridges gespeichert; beides sind lokale Dateien.
Bekannte Einschränkungen
/send-Text wird per Pipe-Escaping übertragen; bei extremen Zeichen greift als Fallbacktt_eval, um direkt auf den context zuzugreifen.set_variables scope=globalhängt vom Objekt-Serialisierungsverhalten von/setvar scope=globalab.Im attached-Modus enthält
tt_poll_eventsnur Ereignisse nach dem attach (historische Ereignisse liegen im Ringbuffer des daemons und werden über den MCP-attach-Pfad nicht wiedergegeben);extConnectedvontt_bridge_statusist eine Momentaufnahme zum Zeitpunkt des attach.context.characterIdvon TauriTavern ist in der Praxis ein numerischer String (bei upstream ST ist es eine number); der bridge ist intern bereits damit kompatibel.Wenn der daemon stirbt, schlagen Aufrufe des attached MCP-Servers fehl (die Fehlermeldung weist deutlich auf einen Neustart des daemons hin); ein automatischer Rückfall auf bind erfolgt nicht.
Entwicklung
npm install && npm run build # 构建扩展(typecheck + vite -> dist/)
cd bridge && npm install # bridge 依赖
cd bridge && npm run typecheck # bridge 侧类型检查Der Repository-Root ist die Erweiterung selbst (manifest.json + dist/); die dist-Build-Artefakte werden mit dem Repository committet und nach der TT-Git-Installation direkt geladen. Nach Quellcode-Änderungen genügt npm run build und ein Commit, damit TT die Änderungen über das Erweiterungsupdate ziehen kann.
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