mcp
openclaw mcp tiene dos funciones:
- ejecutar OpenClaw como servidor MCP con
openclaw mcp serve - administrar las definiciones salientes de servidores MCP propiedad de OpenClaw con
list,show,setyunset
servees OpenClaw actuando como servidor MCPlist/show/set/unsetes OpenClaw actuando como un registro del lado cliente de MCP para otros servidores MCP que sus tiempos de ejecución puedan consumir más adelante
openclaw acp cuando OpenClaw deba alojar una
sesión de arnés de programación por sí mismo y enrutar ese tiempo de ejecución a través de ACP.
OpenClaw como servidor MCP
Esta es la ruta deopenclaw mcp serve.
Cuándo usar serve
Usa openclaw mcp serve cuando:
- Codex, Claude Code u otro cliente MCP deba hablar directamente con conversaciones de canales respaldadas por OpenClaw
- ya tengas un Gateway de OpenClaw local o remoto con sesiones enrutadas
- quieras un único servidor MCP que funcione en todos los backends de canales de OpenClaw en lugar de ejecutar puentes separados por canal
openclaw acp en su lugar cuando OpenClaw deba alojar el tiempo de ejecución
de programación por sí mismo y mantener la sesión del agente dentro de OpenClaw.
Cómo funciona
openclaw mcp serve inicia un servidor MCP por stdio. El cliente MCP es propietario de ese
proceso. Mientras el cliente mantenga abierta la sesión stdio, el puente se conecta a un
Gateway de OpenClaw local o remoto mediante WebSocket y expone conversaciones de canales enrutadas
a través de MCP.
Ciclo de vida:
- el cliente MCP lanza
openclaw mcp serve - el puente se conecta al Gateway
- las sesiones enrutadas se convierten en conversaciones MCP y herramientas de transcripción/historial
- los eventos en vivo se ponen en cola en memoria mientras el puente está conectado
- si el modo de canal de Claude está habilitado, la misma sesión también puede recibir notificaciones push específicas de Claude
- el estado de la cola en vivo comienza cuando el puente se conecta
- el historial de transcripción anterior se lee con
messages_read - las notificaciones push de Claude solo existen mientras la sesión MCP está activa
- cuando el cliente se desconecta, el puente sale y la cola en vivo desaparece
Elegir un modo de cliente
Usa el mismo puente de dos formas distintas:- Clientes MCP genéricos: solo herramientas MCP estándar. Usa
conversations_list,messages_read,events_poll,events_wait,messages_sendy las herramientas de aprobación. - Claude Code: herramientas MCP estándar más el adaptador de canal específico de Claude.
Habilita
--claude-channel-mode ono deja el valor predeterminadoauto.
auto se comporta igual que on. Aún no hay detección de capacidades del cliente.
Qué expone serve
El puente usa los metadatos de ruta de sesión existentes del Gateway para exponer conversaciones
respaldadas por canales. Una conversación aparece cuando OpenClaw ya tiene estado de sesión
con una ruta conocida como:
channel- metadatos de destinatario o destino
accountIdopcionalthreadIdopcional
- enumerar conversaciones enrutadas recientes
- leer historial de transcripción reciente
- esperar nuevos eventos entrantes
- enviar una respuesta de vuelta a través de la misma ruta
- ver solicitudes de aprobación que lleguen mientras el puente esté conectado
Uso
Herramientas del puente
El puente actual expone estas herramientas MCP:conversations_listconversation_getmessages_readattachments_fetchevents_pollevents_waitmessages_sendpermissions_list_openpermissions_respond
conversations_list
Enumera conversaciones recientes respaldadas por sesión que ya tienen metadatos de ruta en
el estado de sesión del Gateway.
Filtros útiles:
limitsearchchannelincludeDerivedTitlesincludeLastMessage
conversation_get
Devuelve una conversación por session_key.
messages_read
Lee mensajes recientes de la transcripción para una conversación respaldada por sesión.
attachments_fetch
Extrae bloques de contenido no textual de un mensaje de transcripción. Esta es una
vista de metadatos sobre el contenido de la transcripción, no un almacén independiente y duradero
de blobs adjuntos.
events_poll
Lee eventos en vivo en cola desde un cursor numérico.
events_wait
Hace long-polling hasta que llega el siguiente evento en cola que coincida o hasta que expire el tiempo de espera.
Usa esto cuando un cliente MCP genérico necesite entrega casi en tiempo real sin un
protocolo push específico de Claude.
messages_send
Envía texto de vuelta a través de la misma ruta ya registrada en la sesión.
Comportamiento actual:
- requiere una ruta de conversación existente
- usa el canal, destinatario, id de cuenta e id de hilo de la sesión
- envía solo texto
permissions_list_open
Enumera las solicitudes pendientes de aprobación de exec/plugin que el puente ha observado desde que
se conectó al Gateway.
permissions_respond
Resuelve una solicitud pendiente de aprobación de exec/plugin con:
allow-onceallow-alwaysdeny
Modelo de eventos
El puente mantiene una cola de eventos en memoria mientras está conectado. Tipos de eventos actuales:messageexec_approval_requestedexec_approval_resolvedplugin_approval_requestedplugin_approval_resolvedclaude_permission_request
- la cola es solo en vivo; comienza cuando se inicia el puente MCP
events_pollyevents_waitno reproducen por sí solos el historial anterior del Gateway- el historial duradero debe leerse con
messages_read
Notificaciones de canal de Claude
El puente también puede exponer notificaciones de canal específicas de Claude. Este es el equivalente en OpenClaw de un adaptador de canal de Claude Code: las herramientas MCP estándar siguen disponibles, pero los mensajes entrantes en vivo también pueden llegar como notificaciones MCP específicas de Claude. Indicadores:--claude-channel-mode off: solo herramientas MCP estándar--claude-channel-mode on: habilita notificaciones de canal de Claude--claude-channel-mode auto: valor predeterminado actual; mismo comportamiento del puente queon
notifications/claude/channelnotifications/claude/channel/permission
- los mensajes de transcripción entrantes de
userse reenvían comonotifications/claude/channel - las solicitudes de permisos de Claude recibidas mediante MCP se rastrean en memoria
- si la conversación vinculada luego envía
yes abcdeono abcde, el puente convierte eso ennotifications/claude/channel/permission - estas notificaciones son solo de la sesión en vivo; si el cliente MCP se desconecta, no hay destino push
Configuración del cliente MCP
Ejemplo de configuración de cliente stdio:Opciones
openclaw mcp serve admite:
--url <url>: URL WebSocket del Gateway--token <token>: token del Gateway--token-file <path>: leer el token desde un archivo--password <password>: contraseña del Gateway--password-file <path>: leer la contraseña desde un archivo--claude-channel-mode <auto|on|off>: modo de notificación de Claude-v,--verbose: registros detallados en stderr
--token-file o --password-file en lugar de secretos en línea cuando sea posible.
Seguridad y límite de confianza
El puente no inventa el enrutamiento. Solo expone conversaciones que el Gateway ya sabe cómo enrutar. Eso significa:- las listas de permitidos de remitentes, el emparejamiento y la confianza a nivel de canal siguen perteneciendo a la configuración subyacente del canal de OpenClaw
messages_sendsolo puede responder a través de una ruta almacenada existente- el estado de aprobación es solo en vivo/en memoria para la sesión actual del puente
- la autenticación del puente debe usar los mismos controles de token o contraseña del Gateway en los que confiarías para cualquier otro cliente remoto del Gateway
conversations_list, la causa habitual no es la
configuración de MCP. Son metadatos de ruta ausentes o incompletos en la sesión
subyacente del Gateway.
Pruebas
OpenClaw incluye una prueba smoke determinista de Docker para este puente:- inicia un contenedor Gateway precargado
- inicia un segundo contenedor que lanza
openclaw mcp serve - verifica el descubrimiento de conversaciones, lecturas de transcripción, lecturas de metadatos de adjuntos, comportamiento de la cola de eventos en vivo y enrutamiento de envíos salientes
- valida notificaciones de canal y permisos al estilo Claude sobre el puente stdio MCP real
Solución de problemas
No se devuelven conversaciones
Normalmente significa que la sesión del Gateway aún no es enrutable. Confirma que la sesión subyacente tenga almacenados los metadatos de ruta opcionales de canal/proveedor, destinatario y cuenta/hilo.events_poll o events_wait omite mensajes antiguos
Es lo esperado. La cola en vivo comienza cuando el puente se conecta. Lee el historial anterior de la transcripción
con messages_read.
Las notificaciones de Claude no aparecen
Comprueba todo lo siguiente:- el cliente mantuvo abierta la sesión stdio MCP
--claude-channel-modeesonoauto- el cliente realmente entiende los métodos de notificación específicos de Claude
- el mensaje entrante ocurrió después de que el puente se conectara
Faltan aprobaciones
permissions_list_open solo muestra solicitudes de aprobación observadas mientras el puente
estuvo conectado. No es una API de historial duradero de aprobaciones.
OpenClaw como registro de cliente MCP
Esta es la ruta deopenclaw mcp list, show, set y unset.
Estos comandos no exponen OpenClaw mediante MCP. Administran definiciones MCP propiedad de OpenClaw
bajo mcp.servers en la configuración de OpenClaw.
Esas definiciones guardadas son para tiempos de ejecución que OpenClaw lanza o configura
más adelante, como Pi integrado y otros adaptadores de tiempo de ejecución. OpenClaw almacena las
definiciones de forma centralizada para que esos tiempos de ejecución no necesiten mantener sus propias listas duplicadas
de servidores MCP.
Comportamiento importante:
- estos comandos solo leen o escriben la configuración de OpenClaw
- no se conectan al servidor MCP de destino
- no validan si el comando, la URL o el transporte remoto son accesibles en ese momento
- los adaptadores de tiempo de ejecución deciden qué formas de transporte admiten realmente en tiempo de ejecución
Definiciones guardadas de servidores MCP
OpenClaw también almacena un registro ligero de servidores MCP en la configuración para las superficies que quieran definiciones MCP administradas por OpenClaw. Comandos:openclaw mcp listopenclaw mcp show [name]openclaw mcp set <name> <json>openclaw mcp unset <name>
listordena los nombres de los servidores.showsin nombre imprime el objeto completo configurado del servidor MCP.setespera un valor de objeto JSON en una sola línea de comandos.unsetfalla si el servidor indicado no existe.
Transporte stdio
Lanza un proceso hijo local y se comunica por stdin/stdout.| Campo | Descripción |
|---|---|
command | Ejecutable que se debe lanzar (obligatorio) |
args | Matriz de argumentos de línea de comandos |
env | Variables de entorno adicionales |
cwd / workingDirectory | Directorio de trabajo del proceso |
Transporte SSE / HTTP
Se conecta a un servidor MCP remoto mediante HTTP Server-Sent Events.| Campo | Descripción |
|---|---|
url | URL HTTP o HTTPS del servidor remoto (obligatorio) |
headers | Mapa opcional clave-valor de encabezados HTTP (por ejemplo, tokens de autenticación) |
connectionTimeoutMs | Tiempo de espera de conexión por servidor en ms (opcional) |
url (userinfo) y headers se redactan en los registros y
la salida de estado.
Transporte HTTP transmitible
streamable-http es una opción de transporte adicional junto con sse y stdio. Usa transmisión HTTP para la comunicación bidireccional con servidores MCP remotos.
| Campo | Descripción |
|---|---|
url | URL HTTP o HTTPS del servidor remoto (obligatorio) |
transport | Establécelo en "streamable-http" para seleccionar este transporte; si se omite, OpenClaw usa sse |
headers | Mapa opcional clave-valor de encabezados HTTP (por ejemplo, tokens de autenticación) |
connectionTimeoutMs | Tiempo de espera de conexión por servidor en ms (opcional) |
Límites actuales
Esta página documenta el puente tal como se distribuye hoy. Límites actuales:- el descubrimiento de conversaciones depende de los metadatos de ruta de sesión existentes del Gateway
- no hay un protocolo push genérico más allá del adaptador específico de Claude
- todavía no hay herramientas para editar mensajes ni reaccionar
- el transporte HTTP/SSE/streamable-http se conecta a un único servidor remoto; aún no hay upstream multiplexado
permissions_list_opensolo incluye aprobaciones observadas mientras el puente está conectado