CLI commands
MCP
openclaw mcp memiliki dua tugas:
- menjalankan OpenClaw sebagai server MCP dengan
openclaw mcp serve - mengelola definisi server MCP outbound milik OpenClaw dengan
list,show,set, danunset
Dengan kata lain:
serveadalah OpenClaw yang bertindak sebagai server MCPlist/show/set/unsetadalah OpenClaw yang bertindak sebagai registri sisi klien MCP untuk server MCP lain yang mungkin digunakan runtime-nya nanti
Gunakan openclaw acp saat OpenClaw harus menghosting sesi harness pengodean itu sendiri dan merutekan runtime tersebut melalui ACP.
OpenClaw sebagai server MCP
Ini adalah jalur openclaw mcp serve.
Kapan menggunakan serve
Gunakan openclaw mcp serve saat:
- Codex, Claude Code, atau klien MCP lain harus berbicara langsung ke percakapan channel yang didukung OpenClaw
- Anda sudah memiliki OpenClaw Gateway lokal atau remote dengan sesi yang dirutekan
- Anda menginginkan satu server MCP yang bekerja di seluruh backend channel OpenClaw, alih-alih menjalankan bridge terpisah per channel
Gunakan openclaw acp sebagai gantinya saat OpenClaw harus menghosting runtime pengodean itu sendiri dan menjaga sesi agen tetap di dalam OpenClaw.
Cara kerjanya
openclaw mcp serve memulai server MCP stdio. Klien MCP memiliki proses tersebut. Selama klien menjaga sesi stdio tetap terbuka, bridge tersambung ke OpenClaw Gateway lokal atau remote melalui WebSocket dan mengekspos percakapan channel yang dirutekan melalui MCP.
Klien memunculkan bridge
Klien MCP memunculkan openclaw mcp serve.
Bridge tersambung ke Gateway
Bridge tersambung ke OpenClaw Gateway melalui WebSocket.
Sesi menjadi percakapan MCP
Sesi yang dirutekan menjadi percakapan MCP dan alat transkrip/riwayat.
Antrean peristiwa live
Peristiwa live diantrekan di memori selama bridge tersambung.
Push Claude opsional
Jika mode channel Claude diaktifkan, sesi yang sama juga dapat menerima notifikasi push khusus Claude.
Perilaku penting
- status antrean live dimulai saat bridge tersambung
- riwayat transkrip lama dibaca dengan
messages_read - notifikasi push Claude hanya ada selama sesi MCP hidup
- saat klien terputus, bridge keluar dan antrean live hilang
- titik masuk agen sekali jalan seperti
openclaw agentdanopenclaw infer model runmenghentikan runtime MCP bawaan apa pun yang dibukanya saat balasan selesai, sehingga run berskrip berulang tidak menumpuk proses anak MCP stdio - server MCP stdio yang diluncurkan oleh OpenClaw (bawaan atau dikonfigurasi pengguna) dimatikan sebagai pohon proses saat shutdown, sehingga subproses anak yang dimulai oleh server tidak bertahan setelah klien stdio induk keluar
- menghapus atau mereset sesi akan membuang klien MCP sesi tersebut melalui jalur pembersihan runtime bersama, sehingga tidak ada koneksi stdio tersisa yang terikat ke sesi yang dihapus
Pilih mode klien
Gunakan bridge yang sama dengan dua cara berbeda:
Klien MCP generik
Hanya alat MCP standar. Gunakan conversations_list, messages_read, events_poll, events_wait, messages_send, dan alat persetujuan.
Claude Code
Alat MCP standar ditambah adapter channel khusus Claude. Aktifkan --claude-channel-mode on atau biarkan default auto.
Yang diekspos serve
Bridge menggunakan metadata rute sesi Gateway yang sudah ada untuk mengekspos percakapan yang didukung channel. Percakapan muncul saat OpenClaw sudah memiliki status sesi dengan rute yang diketahui seperti:
channel- metadata penerima atau tujuan
accountIdopsionalthreadIdopsional
Ini memberi klien MCP satu tempat untuk:
- mencantumkan percakapan terbaru yang dirutekan
- membaca riwayat transkrip terbaru
- menunggu peristiwa inbound baru
- mengirim balasan kembali melalui rute yang sama
- melihat permintaan persetujuan yang masuk saat bridge tersambung
Penggunaan
Gateway lokal
openclaw mcp serve
Gateway remote (token)
openclaw mcp serve --url wss://gateway-host:18789 --token-file ~/.openclaw/gateway.token
Gateway remote (kata sandi)
openclaw mcp serve --url wss://gateway-host:18789 --password-file ~/.openclaw/gateway.password
Verbose / Claude nonaktif
openclaw mcp serve --verbose
openclaw mcp serve --claude-channel-mode off
Alat bridge
Bridge saat ini mengekspos alat MCP berikut:
conversations_list
Mencantumkan percakapan terbaru yang didukung sesi yang sudah memiliki metadata rute dalam status sesi Gateway.
Filter yang berguna:
limitsearchchannelincludeDerivedTitlesincludeLastMessage
conversation_get
Mengembalikan satu percakapan berdasarkan session_key menggunakan lookup sesi Gateway langsung.
messages_read
Membaca pesan transkrip terbaru untuk satu percakapan yang didukung sesi.
attachments_fetch
Mengekstrak blok konten pesan non-teks dari satu pesan transkrip. Ini adalah tampilan metadata atas konten transkrip, bukan penyimpanan blob lampiran tahan lama yang berdiri sendiri.
events_poll
Membaca peristiwa live yang diantrekan sejak kursor numerik.
events_wait
Melakukan long-poll hingga peristiwa terantre berikutnya yang cocok tiba atau timeout berakhir.
Gunakan ini saat klien MCP generik membutuhkan pengiriman nyaris real-time tanpa protokol push khusus Claude.
messages_send
Mengirim teks kembali melalui rute yang sama yang sudah tercatat pada sesi.
Perilaku saat ini:
- memerlukan rute percakapan yang sudah ada
- menggunakan channel, penerima, id akun, dan id thread milik sesi
- hanya mengirim teks
permissions_list_open
Mencantumkan permintaan persetujuan exec/plugin tertunda yang telah diamati bridge sejak tersambung ke Gateway.
permissions_respond
Menyelesaikan satu permintaan persetujuan exec/plugin tertunda dengan:
allow-onceallow-alwaysdeny
Model peristiwa
Bridge menyimpan antrean peristiwa dalam memori selama tersambung.
Jenis peristiwa saat ini:
messageexec_approval_requestedexec_approval_resolvedplugin_approval_requestedplugin_approval_resolvedclaude_permission_request
Notifikasi channel Claude
Bridge juga dapat mengekspos notifikasi channel khusus Claude. Ini adalah padanan OpenClaw dari adapter channel Claude Code: alat MCP standar tetap tersedia, tetapi pesan inbound live juga dapat masuk sebagai notifikasi MCP khusus Claude.
off
--claude-channel-mode off: hanya alat MCP standar.
on
--claude-channel-mode on: aktifkan notifikasi channel Claude.
auto (default)
--claude-channel-mode auto: default saat ini; perilaku bridge sama seperti on.
Saat mode channel Claude diaktifkan, server mengiklankan kapabilitas eksperimental Claude dan dapat memancarkan:
notifications/claude/channelnotifications/claude/channel/permission
Perilaku bridge saat ini:
- pesan transkrip
userinbound diteruskan sebagainotifications/claude/channel - permintaan izin Claude yang diterima melalui MCP dilacak dalam memori
- jika percakapan yang ditautkan kemudian mengirim
yes abcdeatauno abcde, bridge mengonversinya menjadinotifications/claude/channel/permission - notifikasi ini hanya untuk sesi live; jika klien MCP terputus, tidak ada target push
Ini sengaja khusus klien. Klien MCP generik sebaiknya mengandalkan alat polling standar.
Konfigurasi klien MCP
Contoh konfigurasi klien stdio:
{
"mcpServers": {
"openclaw": {
"command": "openclaw",
"args": [
"mcp",
"serve",
"--url",
"wss://gateway-host:18789",
"--token-file",
"/path/to/gateway.token"
]
}
}
}
Untuk sebagian besar klien MCP generik, mulai dengan permukaan alat standar dan abaikan mode Claude. Aktifkan mode Claude hanya untuk klien yang benar-benar memahami metode notifikasi khusus Claude.
Opsi
openclaw mcp serve mendukung:
--urlstringURL WebSocket Gateway.
--tokenstringToken Gateway.
--token-filestringBaca token dari file.
--passwordstringKata sandi Gateway.
--password-filestringBaca kata sandi dari file.
--claude-channel-mode"auto" | "on" | "off"Mode notifikasi Claude.
-v, --verbosebooleanLog verbose pada stderr.
Keamanan dan batas kepercayaan
Bridge tidak menciptakan perutean. Bridge hanya mengekspos percakapan yang sudah diketahui Gateway cara merutekannya.
Artinya:
- allowlist pengirim, pairing, dan kepercayaan tingkat channel tetap menjadi milik konfigurasi channel OpenClaw yang mendasarinya
messages_sendhanya dapat membalas melalui rute tersimpan yang sudah ada- status persetujuan hanya live/dalam memori untuk sesi bridge saat ini
- auth bridge harus menggunakan kontrol token atau kata sandi Gateway yang sama dengan yang akan Anda percayai untuk klien Gateway remote lainnya
Jika suatu percakapan hilang dari conversations_list, penyebab biasanya bukan konfigurasi MCP. Penyebabnya adalah metadata rute yang hilang atau tidak lengkap dalam sesi Gateway yang mendasarinya.
Pengujian
OpenClaw menyediakan smoke Docker deterministik untuk bridge ini:
pnpm test:docker:mcp-channels
Smoke tersebut:
- memulai kontainer Gateway dengan seed
- memulai kontainer kedua yang memunculkan
openclaw mcp serve - memverifikasi penemuan percakapan, pembacaan transkrip, pembacaan metadata lampiran, perilaku antrean peristiwa live, dan perutean pengiriman outbound
- memvalidasi notifikasi channel dan izin bergaya Claude melalui bridge MCP stdio nyata
Ini adalah cara tercepat untuk membuktikan bridge berfungsi tanpa menghubungkan akun Telegram, Discord, atau iMessage nyata ke dalam run pengujian.
Untuk konteks pengujian yang lebih luas, lihat Pengujian.
Pemecahan masalah
Tidak ada percakapan yang dikembalikan
Biasanya berarti sesi Gateway belum dapat dirutekan. Konfirmasikan bahwa sesi yang mendasarinya memiliki channel/provider, penerima, dan metadata rute akun/thread opsional yang tersimpan.
events_poll atau events_wait melewatkan pesan lama
Sesuai perkiraan. Antrean live dimulai saat bridge tersambung. Baca riwayat transkrip lama dengan messages_read.
Notifikasi Claude tidak muncul
Periksa semua ini:
- klien menjaga sesi MCP stdio tetap terbuka
--claude-channel-modeadalahonatauauto- klien benar-benar memahami metode notifikasi khusus Claude
- pesan inbound terjadi setelah bridge tersambung
Persetujuan hilang
permissions_list_open hanya menampilkan permintaan persetujuan yang diamati saat bridge tersambung. Ini bukan API riwayat persetujuan tahan lama.
OpenClaw sebagai registri klien MCP
Ini adalah path openclaw mcp list, show, set, dan unset.
Perintah-perintah ini tidak mengekspos OpenClaw melalui MCP. Perintah ini mengelola definisi server MCP milik OpenClaw di bawah mcp.servers dalam konfigurasi OpenClaw.
Definisi yang disimpan tersebut ditujukan untuk runtime yang diluncurkan atau dikonfigurasi OpenClaw nanti, seperti Pi tertanam dan adaptor runtime lainnya. OpenClaw menyimpan definisi secara terpusat agar runtime tersebut tidak perlu menyimpan daftar server MCP duplikat miliknya sendiri.
Perilaku penting
- perintah-perintah ini hanya membaca atau menulis konfigurasi OpenClaw
- perintah ini tidak terhubung ke server MCP target
- perintah ini tidak memvalidasi apakah perintah, URL, atau transport jarak jauh dapat dijangkau saat ini
- adaptor runtime menentukan bentuk transport mana yang benar-benar mereka dukung pada waktu eksekusi
- Pi tertanam mengekspos alat MCP yang dikonfigurasi dalam profil alat
codingdanmessagingnormal;minimaltetap menyembunyikannya, dantools.deny: ["bundle-mcp"]menonaktifkannya secara eksplisit - runtime MCP terbundel dengan cakupan sesi dibersihkan setelah
mcp.sessionIdleTtlMsmilidetik waktu idle (default 10 menit; atur0untuk menonaktifkan) dan eksekusi tertanam sekali jalan membersihkannya pada akhir eksekusi
Adaptor runtime dapat menormalkan registri bersama ini ke bentuk yang diharapkan klien hilirnya. Misalnya, Pi tertanam menggunakan nilai transport OpenClaw secara langsung, sementara Claude Code dan Gemini menerima nilai type asli CLI seperti http, sse, atau stdio.
Definisi server MCP tersimpan
OpenClaw juga menyimpan registri server MCP ringan dalam konfigurasi untuk permukaan yang menginginkan definisi MCP yang dikelola OpenClaw.
Perintah:
openclaw mcp listopenclaw mcp show [name]openclaw mcp set <name> <json>openclaw mcp unset <name>
Catatan:
listmengurutkan nama server.showtanpa nama mencetak objek server MCP yang dikonfigurasi secara lengkap.setmengharapkan satu nilai objek JSON pada baris perintah.- Gunakan
transport: "streamable-http"untuk server MCP Streamable HTTP.openclaw mcp setjuga menormalkantype: "http"asli CLI ke bentuk konfigurasi kanonis yang sama untuk kompatibilitas. unsetgagal jika server bernama tersebut tidak ada.
Contoh:
openclaw mcp list
openclaw mcp show context7 --json
openclaw mcp set context7 '{"command":"uvx","args":["context7-mcp"]}'
openclaw mcp set docs '{"url":"https://mcp.example.com","transport":"streamable-http"}'
openclaw mcp unset context7
Contoh bentuk konfigurasi:
{
"mcp": {
"servers": {
"context7": {
"command": "uvx",
"args": ["context7-mcp"]
},
"docs": {
"url": "https://mcp.example.com",
"transport": "streamable-http"
}
}
}
}
Transport stdio
Meluncurkan proses turunan lokal dan berkomunikasi melalui stdin/stdout.
| Kolom | Deskripsi |
|---|---|
command |
Eksekutabel untuk dijalankan (wajib) |
args |
Array argumen baris perintah |
env |
Variabel lingkungan tambahan |
cwd / workingDirectory |
Direktori kerja untuk proses |
Transport SSE / HTTP
Terhubung ke server MCP jarak jauh melalui HTTP Server-Sent Events.
| Kolom | Deskripsi |
|---|---|
url |
URL HTTP atau HTTPS server jarak jauh (wajib) |
headers |
Peta key-value opsional untuk header HTTP (misalnya token auth) |
connectionTimeoutMs |
Timeout koneksi per server dalam ms (opsional) |
Contoh:
{
"mcp": {
"servers": {
"remote-tools": {
"url": "https://mcp.example.com",
"headers": {
"Authorization": "Bearer <token>"
}
}
}
}
}
Nilai sensitif dalam url (userinfo) dan headers disunting dalam log dan output status.
Transport Streamable HTTP
streamable-http adalah opsi transport tambahan bersama sse dan stdio. Ini menggunakan streaming HTTP untuk komunikasi dua arah dengan server MCP jarak jauh.
| Kolom | Deskripsi |
|---|---|
url |
URL HTTP atau HTTPS server jarak jauh (wajib) |
transport |
Atur ke "streamable-http" untuk memilih transport ini; jika dihilangkan, OpenClaw menggunakan sse |
headers |
Peta key-value opsional untuk header HTTP (misalnya token auth) |
connectionTimeoutMs |
Timeout koneksi per server dalam ms (opsional) |
Konfigurasi OpenClaw menggunakan transport: "streamable-http" sebagai ejaan kanonis. Nilai MCP asli CLI type: "http" diterima saat disimpan melalui openclaw mcp set dan diperbaiki oleh openclaw doctor --fix dalam konfigurasi yang sudah ada, tetapi transport adalah yang dikonsumsi langsung oleh Pi tertanam.
Contoh:
{
"mcp": {
"servers": {
"streaming-tools": {
"url": "https://mcp.example.com/stream",
"transport": "streamable-http",
"connectionTimeoutMs": 10000,
"headers": {
"Authorization": "Bearer <token>"
}
}
}
}
}
Batasan saat ini
Halaman ini mendokumentasikan bridge sebagaimana dikirimkan saat ini.
Batasan saat ini:
- penemuan percakapan bergantung pada metadata rute sesi Gateway yang ada
- belum ada protokol push generik selain adaptor khusus Claude
- belum ada alat edit pesan atau reaksi
- transport HTTP/SSE/streamable-http terhubung ke satu server jarak jauh; belum ada upstream multipleks
permissions_list_openhanya mencakup persetujuan yang diamati saat bridge terhubung