mcp
openclaw mcp ha due funzioni:
- eseguire OpenClaw come server MCP con
openclaw mcp serve - gestire le definizioni dei server MCP in uscita possedute da OpenClaw con
list,show,seteunset
serveè OpenClaw che agisce come server MCPlist/show/set/unsetè OpenClaw che agisce come registro lato client MCP per altri server MCP che i suoi runtime potrebbero usare in seguito
openclaw acp quando OpenClaw deve ospitare una sessione
di harness di coding e instradare quel runtime tramite ACP.
OpenClaw come server MCP
Questo è il percorsoopenclaw mcp serve.
Quando usare serve
Usa openclaw mcp serve quando:
- Codex, Claude Code o un altro client MCP deve parlare direttamente con conversazioni di canali supportate da OpenClaw
- hai già un Gateway OpenClaw locale o remoto con sessioni instradate
- vuoi un unico server MCP che funzioni tra i backend di canale di OpenClaw invece di eseguire bridge separati per ciascun canale
openclaw acp quando OpenClaw deve ospitare il runtime
di coding stesso e mantenere la sessione agente all’interno di OpenClaw.
Come funziona
openclaw mcp serve avvia un server MCP stdio. Il client MCP possiede quel
processo. Finché il client mantiene aperta la sessione stdio, il bridge si connette a un
Gateway OpenClaw locale o remoto tramite WebSocket ed espone le conversazioni dei
canali instradate tramite MCP.
Ciclo di vita:
- il client MCP avvia
openclaw mcp serve - il bridge si connette al Gateway
- le sessioni instradate diventano conversazioni MCP e strumenti di trascrizione/cronologia
- gli eventi live vengono accodati in memoria mentre il bridge è connesso
- se la modalità canale Claude è abilitata, la stessa sessione può anche ricevere notifiche push specifiche di Claude
- lo stato della coda live inizia quando il bridge si connette
- la cronologia delle trascrizioni più vecchie viene letta con
messages_read - le notifiche push Claude esistono solo mentre la sessione MCP è attiva
- quando il client si disconnette, il bridge termina e la coda live scompare
Scegli una modalità client
Usa lo stesso bridge in due modi diversi:- Client MCP generici: solo strumenti MCP standard. Usa
conversations_list,messages_read,events_poll,events_wait,messages_sende gli strumenti di approvazione. - Claude Code: strumenti MCP standard più l’adattatore di canale specifico per Claude.
Abilita
--claude-channel-mode onoppure lascia il valore predefinitoauto.
auto si comporta allo stesso modo di on. Non esiste ancora il rilevamento
delle capacità del client.
Cosa espone serve
Il bridge usa i metadati di route delle sessioni Gateway esistenti per esporre
conversazioni supportate da canali. Una conversazione appare quando OpenClaw ha già
uno stato di sessione con una route nota come:
channel- metadati di destinatario o destinazione
accountIdfacoltativothreadIdfacoltativo
- elencare le conversazioni instradate recenti
- leggere la cronologia recente delle trascrizioni
- attendere nuovi eventi in ingresso
- inviare una risposta indietro tramite la stessa route
- vedere le richieste di approvazione che arrivano mentre il bridge è connesso
Utilizzo
Strumenti del bridge
Il bridge attuale espone questi strumenti MCP:conversations_listconversation_getmessages_readattachments_fetchevents_pollevents_waitmessages_sendpermissions_list_openpermissions_respond
conversations_list
Elenca le conversazioni recenti supportate da sessioni che hanno già metadati di route
nello stato della sessione Gateway.
Filtri utili:
limitsearchchannelincludeDerivedTitlesincludeLastMessage
conversation_get
Restituisce una conversazione tramite session_key.
messages_read
Legge i messaggi recenti della trascrizione per una conversazione supportata da sessione.
attachments_fetch
Estrae blocchi di contenuto di messaggi non testuali da un messaggio della trascrizione. Questa è una
vista di metadati sul contenuto della trascrizione, non uno store autonomo e durevole di blob allegati.
events_poll
Legge gli eventi live accodati a partire da un cursore numerico.
events_wait
Esegue un long-polling finché non arriva il successivo evento accodato corrispondente o finché scade il timeout.
Usalo quando un client MCP generico ha bisogno di una consegna quasi in tempo reale senza un
protocollo push specifico per Claude.
messages_send
Invia testo indietro tramite la stessa route già registrata nella sessione.
Comportamento attuale:
- richiede una route di conversazione esistente
- usa il canale, il destinatario, l’ID account e l’ID thread della sessione
- invia solo testo
permissions_list_open
Elenca le richieste di approvazione exec/plugin in sospeso che il bridge ha osservato da quando
si è connesso al Gateway.
permissions_respond
Risolve una richiesta di approvazione exec/plugin in sospeso con:
allow-onceallow-alwaysdeny
Modello eventi
Il bridge mantiene una coda di eventi in memoria mentre è connesso. Tipi di evento attuali:messageexec_approval_requestedexec_approval_resolvedplugin_approval_requestedplugin_approval_resolvedclaude_permission_request
- la coda è solo live; inizia quando il bridge MCP si avvia
events_polleevents_waitnon riproducono da soli la cronologia Gateway più vecchia- il backlog durevole deve essere letto con
messages_read
Notifiche del canale Claude
Il bridge può anche esporre notifiche di canale specifiche per Claude. Questo è l’equivalente OpenClaw di un adattatore di canale Claude Code: gli strumenti MCP standard restano disponibili, ma i messaggi live in ingresso possono anche arrivare come notifiche MCP specifiche per Claude. Flag:--claude-channel-mode off: solo strumenti MCP standard--claude-channel-mode on: abilita le notifiche del canale Claude--claude-channel-mode auto: valore predefinito attuale; stesso comportamento del bridge dion
notifications/claude/channelnotifications/claude/channel/permission
- i messaggi della trascrizione
userin ingresso vengono inoltrati comenotifications/claude/channel - le richieste di autorizzazione Claude ricevute tramite MCP vengono tracciate in memoria
- se la conversazione collegata invia successivamente
yes abcdeono abcde, il bridge lo converte innotifications/claude/channel/permission - queste notifiche sono solo per sessioni live; se il client MCP si disconnette, non esiste alcuna destinazione push
Configurazione client MCP
Esempio di configurazione client stdio:Opzioni
openclaw mcp serve supporta:
--url <url>: URL WebSocket del Gateway--token <token>: token Gateway--token-file <path>: legge il token da un file--password <password>: password Gateway--password-file <path>: legge la password da un file--claude-channel-mode <auto|on|off>: modalità notifica Claude-v,--verbose: log dettagliati su stderr
--token-file o --password-file ai segreti inline.
Sicurezza e confine di fiducia
Il bridge non inventa l’instradamento. Espone solo le conversazioni che il Gateway sa già come instradare. Ciò significa che:- allowlist dei mittenti, pairing e trust a livello di canale appartengono ancora alla configurazione del canale OpenClaw sottostante
messages_sendpuò rispondere solo tramite una route memorizzata esistente- lo stato delle approvazioni è solo live/in memoria per la sessione bridge corrente
- l’autenticazione del bridge dovrebbe usare gli stessi controlli token o password Gateway di cui ti fideresti per qualsiasi altro client Gateway remoto
conversations_list, la causa abituale non è la
configurazione MCP. Sono metadati di route mancanti o incompleti nella sessione
Gateway sottostante.
Test
OpenClaw include uno smoke Docker deterministico per questo bridge:- avvia un container Gateway inizializzato
- avvia un secondo container che esegue
openclaw mcp serve - verifica scoperta delle conversazioni, lettura delle trascrizioni, lettura dei metadati degli allegati, comportamento della coda eventi live e instradamento dell’invio in uscita
- convalida notifiche di canale e autorizzazione in stile Claude sul vero bridge MCP stdio
Risoluzione dei problemi
Nessuna conversazione restituita
Di solito significa che la sessione Gateway non è già instradabile. Conferma che la sessione sottostante abbia metadati di route memorizzati per canale/provider, destinatario e route facoltative di account/thread.events_poll o events_wait non vedono i messaggi più vecchi
Previsto. La coda live inizia quando il bridge si connette. Leggi la cronologia della
trascrizione più vecchia con messages_read.
Le notifiche Claude non compaiono
Controlla tutti questi punti:- il client ha mantenuto aperta la sessione MCP stdio
--claude-channel-modeèonoauto- il client comprende davvero i metodi di notifica specifici per Claude
- il messaggio in ingresso è arrivato dopo la connessione del bridge
Mancano le approvazioni
permissions_list_open mostra solo le richieste di approvazione osservate mentre il bridge
era connesso. Non è un’API di cronologia durevole delle approvazioni.
OpenClaw come registro client MCP
Questo è il percorsoopenclaw mcp list, show, set e unset.
Questi comandi non espongono OpenClaw tramite MCP. Gestiscono le definizioni dei server MCP possedute da OpenClaw
in mcp.servers nella configurazione OpenClaw.
Queste definizioni salvate servono per runtime che OpenClaw avvia o configura
successivamente, come Pi incorporato e altri adattatori runtime. OpenClaw memorizza centralmente
le definizioni in modo che questi runtime non debbano mantenere i propri elenchi MCP
duplicati.
Comportamento importante:
- questi comandi leggono o scrivono solo la configurazione OpenClaw
- non si connettono al server MCP di destinazione
- non convalidano se il comando, l’URL o il trasporto remoto siano raggiungibili in questo momento
- gli adattatori runtime decidono quali forme di trasporto supportano effettivamente al momento dell’esecuzione
Definizioni salvate dei server MCP
OpenClaw memorizza anche in configurazione un registro leggero dei server MCP per le superfici che vogliono definizioni MCP gestite da OpenClaw. Comandi:openclaw mcp listopenclaw mcp show [name]openclaw mcp set <name> <json>openclaw mcp unset <name>
listordina i nomi dei server.showsenza un nome stampa l’intero oggetto configurato dei server MCP.setsi aspetta un singolo valore oggetto JSON sulla riga di comando.unsetfallisce se il server con quel nome non esiste.
Trasporto stdio
Avvia un processo figlio locale e comunica tramite stdin/stdout.| Campo | Descrizione |
|---|---|
command | Eseguibile da avviare (obbligatorio) |
args | Array di argomenti da riga di comando |
env | Variabili d’ambiente aggiuntive |
cwd / workingDirectory | Directory di lavoro per il processo |
Trasporto SSE / HTTP
Si connette a un server MCP remoto tramite HTTP Server-Sent Events.| Campo | Descrizione |
|---|---|
url | URL HTTP o HTTPS del server remoto (obbligatorio) |
headers | Mappa facoltativa chiave-valore di header HTTP (ad esempio token auth) |
connectionTimeoutMs | Timeout di connessione per server in ms (facoltativo) |
url (userinfo) e headers vengono oscurati nei log e
nell’output di stato.
Trasporto Streamable HTTP
streamable-http è un’ulteriore opzione di trasporto accanto a sse e stdio. Usa lo streaming HTTP per la comunicazione bidirezionale con server MCP remoti.
| Campo | Descrizione |
|---|---|
url | URL HTTP o HTTPS del server remoto (obbligatorio) |
transport | Imposta "streamable-http" per selezionare questo trasporto; se omesso, OpenClaw usa sse |
headers | Mappa facoltativa chiave-valore di header HTTP (ad esempio token auth) |
connectionTimeoutMs | Timeout di connessione per server in ms (facoltativo) |
Limiti attuali
Questa pagina documenta il bridge così come viene distribuito oggi. Limiti attuali:- la scoperta delle conversazioni dipende dai metadati di route delle sessioni Gateway esistenti
- non esiste un protocollo push generico oltre all’adattatore specifico per Claude
- non ci sono ancora strumenti per modificare o reagire ai messaggi
- il trasporto HTTP/SSE/streamable-http si connette a un singolo server remoto; nessun upstream multiplexato per ora
permissions_list_openinclude solo le approvazioni osservate mentre il bridge è connesso