mcp
openclaw mcp에는 두 가지 역할이 있습니다:
openclaw mcp serve로 OpenClaw를 MCP 서버로 실행list,show,set,unset으로 OpenClaw 소유의 아웃바운드 MCP 서버 정의 관리
serve는 OpenClaw가 MCP 서버로 동작하는 경우입니다list/show/set/unset은 OpenClaw가 나중에 자체 런타임에서 소비할 수 있는 다른 MCP 서버들을 위한 클라이언트 측 레지스트리로 동작하는 경우입니다
openclaw acp를 사용하세요.
OpenClaw를 MCP 서버로 사용
이것은openclaw mcp serve 경로입니다.
serve를 사용해야 하는 경우
다음과 같은 경우 openclaw mcp serve를 사용하세요:
- Codex, Claude Code 또는 다른 MCP 클라이언트가 OpenClaw 기반 채널 대화와 직접 통신해야 하는 경우
- 이미 라우팅된 세션이 있는 로컬 또는 원격 OpenClaw Gateway가 있는 경우
- 채널별로 별도의 브리지를 실행하는 대신, OpenClaw의 채널 백엔드 전반에서 동작하는 단일 MCP 서버를 원할 경우
openclaw acp를 사용하세요.
작동 방식
openclaw mcp serve는 stdio MCP 서버를 시작합니다. MCP 클라이언트가 해당
프로세스를 소유합니다. 클라이언트가 stdio 세션을 열어 두는 동안 브리지는
로컬 또는 원격 OpenClaw Gateway에 WebSocket으로 연결하고, 라우팅된 채널
대화를 MCP를 통해 노출합니다.
수명 주기:
- MCP 클라이언트가
openclaw mcp serve를 실행합니다 - 브리지가 Gateway에 연결합니다
- 라우팅된 세션이 MCP 대화와 transcript/history 도구가 됩니다
- 브리지가 연결되어 있는 동안 라이브 이벤트가 메모리에 대기열로 저장됩니다
- Claude 채널 모드가 활성화되어 있으면 동일한 세션이 Claude 전용 푸시 알림도 받을 수 있습니다
- 라이브 큐 상태는 브리지가 연결될 때 시작됩니다
- 이전 transcript 기록은
messages_read로 읽습니다 - Claude 푸시 알림은 MCP 세션이 살아 있는 동안에만 존재합니다
- 클라이언트가 연결을 끊으면 브리지가 종료되고 라이브 큐도 사라집니다
클라이언트 모드 선택
같은 브리지를 두 가지 방식으로 사용할 수 있습니다:- 일반 MCP 클라이언트: 표준 MCP 도구만 사용합니다.
conversations_list,messages_read,events_poll,events_wait,messages_send및 승인 도구를 사용하세요. - Claude Code: 표준 MCP 도구와 Claude 전용 채널 어댑터를 함께 사용합니다.
--claude-channel-mode on을 활성화하거나 기본값auto를 그대로 두세요.
auto는 on과 동일하게 동작합니다. 아직 클라이언트 기능 감지는 없습니다.
serve가 노출하는 항목
브리지는 기존 Gateway 세션 경로 메타데이터를 사용하여 채널 기반
대화를 노출합니다. OpenClaw가 이미 다음과 같은 알려진 경로를 가진 세션 상태를 보유하고 있으면
대화가 나타납니다:
channel- 수신자 또는 대상 메타데이터
- 선택적
accountId - 선택적
threadId
- 최근 라우팅된 대화 나열
- 최근 transcript 기록 읽기
- 새 수신 이벤트 대기
- 같은 경로를 통해 응답 다시 보내기
- 브리지가 연결된 동안 도착한 승인 요청 보기
사용법
브리지 도구
현재 브리지는 다음 MCP 도구를 노출합니다:conversations_listconversation_getmessages_readattachments_fetchevents_pollevents_waitmessages_sendpermissions_list_openpermissions_respond
conversations_list
Gateway 세션 상태에 이미 경로 메타데이터가 있는 최근 세션 기반 대화를 나열합니다.
유용한 필터:
limitsearchchannelincludeDerivedTitlesincludeLastMessage
conversation_get
session_key로 하나의 대화를 반환합니다.
messages_read
하나의 세션 기반 대화에 대한 최근 transcript 메시지를 읽습니다.
attachments_fetch
하나의 transcript 메시지에서 비텍스트 메시지 콘텐츠 블록을 추출합니다. 이것은
독립적인 영구 첨부 파일 blob 저장소가 아니라 transcript 콘텐츠에 대한 메타데이터 뷰입니다.
events_poll
숫자 커서 이후의 대기 중인 라이브 이벤트를 읽습니다.
events_wait
다음으로 일치하는 대기 중 이벤트가 도착하거나 시간 초과가 만료될 때까지 롱 폴링합니다.
일반 MCP 클라이언트가 Claude 전용 푸시 프로토콜 없이
준실시간 전달이 필요할 때 이것을 사용하세요.
messages_send
이미 세션에 기록된 같은 경로를 통해 텍스트를 다시 보냅니다.
현재 동작:
- 기존 대화 경로가 필요합니다
- 세션의 채널, 수신자, 계정 id, 스레드 id를 사용합니다
- 텍스트만 전송합니다
permissions_list_open
브리지가 Gateway에 연결된 이후 관찰한 대기 중인 exec/plugin 승인 요청을 나열합니다.
permissions_respond
다음 중 하나로 대기 중인 exec/plugin 승인 요청 하나를 해결합니다:
allow-onceallow-alwaysdeny
이벤트 모델
브리지는 연결되어 있는 동안 메모리 내 이벤트 큐를 유지합니다. 현재 이벤트 유형:messageexec_approval_requestedexec_approval_resolvedplugin_approval_requestedplugin_approval_resolvedclaude_permission_request
- 큐는 라이브 전용이며, MCP 브리지가 시작될 때 시작됩니다
events_poll및events_wait는 그 자체로는 이전 Gateway 기록을 재생하지 않습니다- 영구 backlog는
messages_read로 읽어야 합니다
Claude 채널 알림
브리지는 Claude 전용 채널 알림도 노출할 수 있습니다. 이것은 Claude Code 채널 어댑터에 해당하는 OpenClaw 버전입니다. 표준 MCP 도구는 계속 사용할 수 있지만, 라이브 수신 메시지는 Claude 전용 MCP 알림으로도 도착할 수 있습니다. 플래그:--claude-channel-mode off: 표준 MCP 도구만--claude-channel-mode on: Claude 채널 알림 활성화--claude-channel-mode auto: 현재 기본값이며on과 동일한 브리지 동작
notifications/claude/channelnotifications/claude/channel/permission
- 수신
usertranscript 메시지는notifications/claude/channel로 전달됩니다 - MCP를 통해 수신된 Claude 권한 요청은 메모리 내에서 추적됩니다
- 연결된 대화가 나중에
yes abcde또는no abcde를 보내면 브리지는 이를notifications/claude/channel/permission으로 변환합니다 - 이 알림은 라이브 세션 전용이며, MCP 클라이언트가 연결을 끊으면 푸시 대상이 없습니다
MCP 클라이언트 config
예시 stdio 클라이언트 config:옵션
openclaw mcp serve는 다음을 지원합니다:
--url <url>: Gateway WebSocket URL--token <token>: Gateway 토큰--token-file <path>: 파일에서 토큰 읽기--password <password>: Gateway 비밀번호--password-file <path>: 파일에서 비밀번호 읽기--claude-channel-mode <auto|on|off>: Claude 알림 모드-v,--verbose: stderr에 자세한 로그 출력
--token-file 또는 --password-file을 선호하세요.
보안 및 신뢰 경계
브리지는 라우팅을 새로 만들지 않습니다. Gateway가 이미 라우팅 방법을 알고 있는 대화만 노출합니다. 즉:- 발신자 허용 목록, 페어링 및 채널 수준 신뢰는 여전히 기본 OpenClaw 채널 config에 속합니다
messages_send는 기존에 저장된 경로를 통해서만 응답할 수 있습니다- 승인 상태는 현재 브리지 세션에 한해 라이브/메모리 내에만 존재합니다
- 브리지 인증은 다른 원격 Gateway 클라이언트에 대해 신뢰할 것과 동일한 Gateway 토큰 또는 비밀번호 제어를 사용해야 합니다
conversations_list에 나타나지 않는다면 일반적인 원인은
MCP config가 아닙니다. 기본 Gateway 세션에
경로 메타데이터가 없거나 불완전하기 때문입니다.
테스트
OpenClaw는 이 브리지를 위한 결정적 Docker 스모크 테스트를 제공합니다:- 시드된 Gateway 컨테이너 시작
openclaw mcp serve를 실행하는 두 번째 컨테이너 시작- 대화 검색, transcript 읽기, 첨부 파일 메타데이터 읽기, 라이브 이벤트 큐 동작 및 아웃바운드 전송 라우팅 검증
- 실제 stdio MCP 브리지를 통한 Claude 스타일 채널 및 권한 알림 검증
문제 해결
반환되는 대화가 없음
보통 Gateway 세션이 아직 라우팅 가능하지 않다는 뜻입니다. 기본 세션에 저장된 채널/provider, 수신자 및 선택적 계정/스레드 경로 메타데이터가 있는지 확인하세요.events_poll 또는 events_wait가 이전 메시지를 놓침
예상된 동작입니다. 라이브 큐는 브리지가 연결될 때 시작됩니다. 이전 transcript
기록은 messages_read로 읽으세요.
Claude 알림이 표시되지 않음
다음을 모두 확인하세요:- 클라이언트가 stdio MCP 세션을 계속 열어 두고 있는지
--claude-channel-mode가on또는auto인지- 클라이언트가 실제로 Claude 전용 알림 메서드를 이해하는지
- 수신 메시지가 브리지가 연결된 이후에 발생했는지
승인이 표시되지 않음
permissions_list_open은 브리지가
연결되어 있는 동안 관찰한 승인 요청만 표시합니다. 영구 승인 기록 API가 아닙니다.
OpenClaw를 MCP 클라이언트 레지스트리로 사용
이것은openclaw mcp list, show, set, unset 경로입니다.
이 명령들은 OpenClaw를 MCP를 통해 노출하지 않습니다. OpenClaw config의 mcp.servers 아래에 있는
OpenClaw 소유 MCP 서버 정의를 관리합니다.
이 저장된 정의는 내장 Pi 및 기타 런타임 어댑터처럼 OpenClaw가 나중에 실행하거나 구성하는 런타임을 위한 것입니다. OpenClaw는 정의를 중앙에 저장하여,
해당 런타임이 각자 중복된 MCP 서버 목록을 따로 유지하지 않도록 합니다.
중요한 동작:
- 이 명령들은 OpenClaw config만 읽거나 씁니다
- 대상 MCP 서버에 연결하지 않습니다
- 명령, URL 또는 원격 전송이 현재 실제로 도달 가능한지 검증하지 않습니다
- 런타임 어댑터는 실행 시점에 실제로 지원하는 전송 형태를 결정합니다
저장된 MCP 서버 정의
OpenClaw는 또한 OpenClaw가 관리하는 MCP 정의가 필요한 표면을 위해 config에 경량 MCP 서버 레지스트리를 저장합니다. 명령:openclaw mcp listopenclaw mcp show [name]openclaw mcp set <name> <json>openclaw mcp unset <name>
list는 서버 이름을 정렬합니다.- 이름 없이
show를 실행하면 구성된 전체 MCP 서버 객체를 출력합니다. set은 명령줄에서 하나의 JSON 객체 값을 기대합니다.unset은 지정한 서버가 존재하지 않으면 실패합니다.
Stdio 전송
로컬 자식 프로세스를 실행하고 stdin/stdout을 통해 통신합니다.| 필드 | 설명 |
|---|---|
command | 실행할 실행 파일(필수) |
args | 명령줄 인수 배열 |
env | 추가 환경 변수 |
cwd / workingDirectory | 프로세스의 작업 디렉터리 |
SSE / HTTP 전송
HTTP Server-Sent Events를 통해 원격 MCP 서버에 연결합니다.| 필드 | 설명 |
|---|---|
url | 원격 서버의 HTTP 또는 HTTPS URL(필수) |
headers | 선택적 HTTP 헤더 키-값 맵(예: 인증 토큰) |
connectionTimeoutMs | 서버별 연결 시간 초과(ms, 선택 사항) |
url의 민감한 값(userinfo)과 headers는 로그 및
상태 출력에서 마스킹됩니다.
Streamable HTTP 전송
streamable-http는 sse, stdio와 함께 제공되는 추가 전송 옵션입니다. 원격 MCP 서버와의 양방향 통신에 HTTP 스트리밍을 사용합니다.
| 필드 | 설명 |
|---|---|
url | 원격 서버의 HTTP 또는 HTTPS URL(필수) |
transport | 이 전송을 선택하려면 "streamable-http"로 설정합니다. 생략하면 OpenClaw는 sse를 사용합니다 |
headers | 선택적 HTTP 헤더 키-값 맵(예: 인증 토큰) |
connectionTimeoutMs | 서버별 연결 시간 초과(ms, 선택 사항) |
현재 제한 사항
이 페이지는 오늘 배포된 브리지를 설명합니다. 현재 제한 사항:- 대화 검색은 기존 Gateway 세션 경로 메타데이터에 의존합니다
- Claude 전용 어댑터 외의 일반 푸시 프로토콜은 아직 없습니다
- 메시지 편집 또는 반응 도구는 아직 없습니다
- HTTP/SSE/streamable-http 전송은 단일 원격 서버에 연결하며, 아직 다중화된 업스트림은 없습니다
permissions_list_open에는 브리지가 연결되어 있는 동안 관찰한 승인만 포함됩니다