Passa al contenuto principale

Host Bridge

Panoramica​

Host Bridge è il server HTTP integrato del plugin che consente agli strumenti AI esterni (Codex, Claude Code, OpenCode, ecc.) di accedere direttamente alla tua libreria Zotero. È il ponte di comunicazione tra gli Agent ACP e Zotero e funge da trasporto sottostante sia per la CLI zotero-bridge che per il Server MCP.

Architettura​

Processo del plugin Zotero
│
├── Server HTTP Host Bridge (loopback: 127.0.0.1:<porta>)
│ ├── Autenticazione con Bearer Token (ogni richiesta)
│ ├── Cancello di approvazione per le scritture (per operazione)
│ └── Router delle funzionalità (30+ funzionalità)
│
└── CLI zotero-bridge (binario companion)
├── Comandi semantici (contesto, libreria, mutazione, sintesi)
├── File di configurazione (bridge-profile.json)
└── Modalità stdin/pipe (per l'integrazione con agent ACP)

Versione del protocollo: host-bridge.v1. Tutti gli endpoint tranne GET /bridge/v1/health richiedono l'autenticazione con Bearer Token.

Configurazione​

Zotero → Impostazioni → Zotero Agents → Host Bridge

ImpostazioneTipoPredefinitoDescrizione
Abilita Server MCPbooleantrueAbilita anche il protocollo MCP per agent di terze parti
Disabilita approvazione scritturebooleanfalsePericoloso: bypassa tutta l'approvazione delle scritture. Contrassegnato come zona rossa di pericolo
Abilita accesso LANbooleanfalseAssocia a 0.0.0.0 per l'accesso LAN (forza la porta fissa)
Porta fissabooleanfalseFissa la porta (predefinita 26570) invece di usare una porta casuale
Numero di portanumber26570Porta utilizzata in modalità fissa (1024-65535)
IP LANstring""Sovrascrittura manuale dell'IP LAN pubblicizzato; lasciare vuoto per il rilevamento automatico
Avvia / Mostra endpointbutton—Assicura che il server sia in esecuzione e mostra l'URL dell'endpoint corrente
Ruota tokenbutton—Ruota il token di sessione
Crea / Ruota Master Tokenbutton—Genera un token persistente cross-sessione
Copia Master Tokenbutton—Copia il token negli appunti
Copia profilo CLI remotobutton—Copia il JSON completo del profilo CLI remoto
Installa CLIbutton—Installa con un clic zotero-bridge nel PATH di sistema

Modello di sicurezza​

Autenticazione con Bearer Token​

  • Ogni richiesta deve includere l'header Authorization: Bearer <token>
  • Token di sessione: generato automaticamente all'avvio del plugin (24 byte in base64), vive per la durata della sessione del plugin
  • Master Token: token persistente opzionale, archiviazione crittografata con AES-256-GCM, per l'accesso CLI cross-sessione
  • I token non vengono mai scritti nei prompt, nei log o nell'output dell'agent

Approvazione delle scritture​

Le operazioni di scrittura richiedono l'approvazione dell'interfaccia di Zotero:

LivelloDescrizione
Approvazione richiestamutation.execute, workflow submit, debug.zotero.eval, citation_graph.refresh_metrics
Auto-approvateTutte le operazioni di sola lettura, diagnostic.get_status, mutation.preview

Doppio cancello per l'auto-approvazione:

  1. Il manifesto del Workflow dichiara allowWriteApprovalBypass: true
  2. L'utente seleziona esplicitamente l'auto-approvazione nella finestra di invio

Entrambi devono essere soddisfatti affinché l'auto-approvazione abbia effetto.

Sicurezza LAN / Remoto​

  • La modalità LAN associa 0.0.0.0 e deve essere abilitata manualmente. Da usare solo su reti affidabili
  • L'accesso remoto richiede un Master Token (creato manualmente), mai distribuito automaticamente
  • Il rilevamento automatico dell'IP LAN utilizza la riflessione di rete del backend SkillRunner; può essere sovrascritto manualmente

La CLI zotero-bridge​

zotero-bridge è uno strumento CLI in Rust per gli agent ACP e gli utenti da terminale per chiamare Host Bridge.

Installazione​

Usa il pulsante "Installa CLI" nelle preferenze. Le esecuzioni ACP usano il binario integrato nel plugin (iniettato nel PATH dello spazio di lavoro).

Priorità di risoluzione di Endpoint / Token​

OrigineEndpointToken
Flag CLI--endpoint—
AmbienteZOTERO_BRIDGE_ENDPOINTZOTERO_BRIDGE_TOKEN
File di profiloCampo endpointauth.token / auth.tokenEnv

Comandi semantici​

zotero-bridge status # Controllo stato (senza auth)
zotero-bridge manifest # Manifesto completo delle funzionalità
zotero-bridge call <funzionalità> [--input] # Chiamata grezza a funzionalità
zotero-bridge item search --query <testo>
zotero-bridge item get --key <chiave>
zotero-bridge item notes --key <chiave>
zotero-bridge item attachments --key <chiave>
zotero-bridge note get --key <chiave>
zotero-bridge note payloads --key <chiave>
zotero-bridge note payload --key <chiave>
zotero-bridge library list --input '{"limit":50}'
zotero-bridge library snapshot --input '{"limit":200,"cursor":"0"}'
zotero-bridge topics list
zotero-bridge topics get-context --input <JSON>
zotero-bridge topics get-report --input <JSON>
zotero-bridge schemas get
zotero-bridge concepts query --input <JSON>
zotero-bridge citation-graph query-cluster --input <JSON>
zotero-bridge citation-graph get-overview
zotero-bridge library-index get
zotero-bridge resolvers resolve --input <JSON>
zotero-bridge reference-index get
zotero-bridge paper-artifacts get-manifest --input <JSON>
zotero-bridge paper-artifacts read --input <JSON>
zotero-bridge insights get-attention-queue
zotero-bridge literature ingest --input <JSON>
zotero-bridge workflow list
zotero-bridge workflow describe --workflow <id>
zotero-bridge workflow submit --workflow <id> (--input <JSON> | --none)
zotero-bridge workflow agent-run --workflow <id> (--input <JSON> | --none) --output-dir <DIR>
zotero-bridge workflow run <runId>
zotero-bridge task list [--workflow <id>] [--active-only]
zotero-bridge file download <fileId> --output <percorso>

L'input accetta: JSON inline, percorso di file JSON, sintassi @file, - (stdin).

Contratto di output​

stdout emette sempre esattamente un oggetto JSON:

{ "ok": true, "data": {...}, "meta": { "cli": "zotero-bridge", "schema": "zotero-bridge.cli.v1" } }
{ "ok": false, "error": {...}, "meta": { "cli": "zotero-bridge", "schema": "zotero-bridge.cli.v1" } }

Codici di uscita per errore:

CategoriaCodice di uscita
usage2
config3
connection4
auth5
permission6
validation7
capability8
workflow9
download10
protocol11
internal70

File di profilo​

Posizioni note dei profili:

SOPercorso
Windows%LOCALAPPDATA%\zotero-agents\bridge-profile.json
macOS~/Library/Application Support/zotero-agents/bridge-profile.json
Linux${XDG_DATA_HOME:-~/.local/share}/zotero-agents/bridge-profile.json
{
"schema": "zotero-bridge.profile.v1",
"protocol": "host-bridge.v1",
"endpoint": "http://127.0.0.1:26570/bridge/v1",
"connectionMode": "local",
"auth": { "type": "bearer", "tokenEnv": "ZOTERO_BRIDGE_TOKEN" }
}

Integrazione con Agent ACP​

Quando un agent ACP esegue una skill, il plugin inietta automaticamente:

<workspaceDir>/.zotero-bridge/
bin/zotero-bridge(.cmd) # Shim CLI
profile.json # Profilo di connessione (token tramite variabile d'ambiente)
README.md # Suggerimenti per l'uso

Variabili d'ambiente iniettate:

  • ZOTERO_BRIDGE_PROFILE — percorso di profile.json
  • ZOTERO_BRIDGE_TOKEN — bearer token
  • ZOTERO_BRIDGE_SCOPE — JSON dell'ambito di approvazione
  • PATH / Path — preceduto da .zotero-bridge/bin

Funzionalità disponibili​

Tutte le 30+ funzionalità

Contesto​

FunzionalitàDescrizione
context.get_current_viewInformazioni sulla vista corrente di Zotero
context.get_selected_itemsElementi attualmente selezionati

Libreria​

FunzionalitàDescrizione
library.search_itemsCerca elementi
library.get_item_detailOttieni i dettagli dell'elemento
library.list_itemsElenco paginato degli elementi
library.sync_snapshotPaginated metadata snapshot for local indexing
library.get_item_notesElenca le note
library.get_note_detailLeggi il contenuto della nota
library.list_note_payloadsElenca i payload delle note
library.get_note_payloadOttieni un payload specifico
library.get_item_attachmentsElenca gli allegati

Mutazione​

FunzionalitàDescrizione
mutation.previewAnteprima di un'operazione di scrittura (senza eseguire)
mutation.executeEsegui un'operazione di scrittura (richiede approvazione)

Sintesi​

FunzionalitàDescrizione
topics.listElenca tutti gli argomenti
topics.get_contextOttieni il contesto dell'argomento
topics.get_reportOttieni il rapporto sull'argomento
topics.get_review_inputAssembla il pacchetto di revisione dell'argomento
schemas.getOttieni le definizioni degli schemi
concepts.queryInterroga la base di conoscenza dei concetti
citation_graph.query_clusterInterroga il cluster di citazioni
citation_graph.get_overviewOttieni la panoramica del grafo
citation_graph.get_sliceEstrai una porzione del sottografo
citation_graph.get_metricsCalcola le metriche del grafo
citation_graph.rank_external_referencesClassifica i riferimenti esterni
citation_graph.rank_library_papersClassifica gli articoli della libreria
paper_artifacts.get_manifestOttieni il manifesto degli artifact
paper_artifacts.readLeggi il contenuto degli artifact
paper_artifacts.export_filteredEsporta gli artifact filtrati
paper_artifacts.resolve_topic_digestRisolvi il riassunto dell'argomento
insights.get_attention_queueOttieni la coda di attenzione
resolvers.resolveRisolvi i risolvitori di riferimenti/argomenti
reference_index.getOttieni l'indice dei riferimenti
library_index.getOttieni l'indice della libreria

Diagnostica​

FunzionalitàDescrizione
diagnostic.get_statusOttieni lo stato del servizio

Flusso di approvazione delle scritture​

L'agent chiama una funzionalità di scrittura
│
├── 1. La richiesta arriva a Host Bridge (con Bearer Token)
├── 2. Il token viene validato
├── 3. L'ambito viene estratto
├── 4. Verifica dell'approvazione:
│ ├── Ambito di sola lettura → esegui immediatamente
│ ├── autoApproveWrites = true E l'utente ha pre-approvato → esegui
│ └── Approvazione necessaria → in coda all'interfaccia di Zotero
├── 5. La richiesta di approvazione viene mostrata nella Chat ACP / nel pannello SkillRunner
│ ├── L'utente approva → esegui
│ └── L'utente nega → restituisci errore
└── 6. Il risultato viene restituito, il log di audit viene scritto

Instradamento dell'ambito:

AmbitoInterfaccia di approvazione
acp-skill-runInterfaccia Competenze ACP
acp-chatPannello Chat ACP
skillrunner-runPannello SkillRunner
Nessun ambito / globalInterfaccia di approvazione globale di Zotero

Accesso LAN / Remoto​

  1. Seleziona Abilita accesso LAN nelle preferenze
  2. Fissa una porta o annota la porta corrente
  3. Crea / copia un Master Token
  4. Fai clic su Copia profilo CLI remoto per la configurazione di connessione completa
  5. Sul computer remoto, configura l'endpoint (http://<IP_LAN>:<porta>/bridge/v1) e il token
  6. Test: zotero-bridge status --endpoint http://<IP_LAN>:<porta>/bridge/v1

Importante: La modalità LAN bypassa la protezione loopback. Da usare solo su reti locali affidabili.

Passi successivi​

  • Server MCP — Interfaccia protocollo standardizzata per client compatibili con MCP (Claude Desktop, ecc.)
  • Hermes Profiles — Profilo installabile per gestire la tua libreria Zotero con agenti AI
  • Preferenze — Visualizza tutte le impostazioni di Host Bridge
  • Backend ACP — Scopri la configurazione degli Agent ACP