CLI commands
MCP
openclaw mcp มีหน้าที่สองอย่าง:
- รัน OpenClaw เป็นเซิร์ฟเวอร์ MCP ด้วย
openclaw mcp serve - จัดการคำจำกัดความเซิร์ฟเวอร์ MCP ขาออกที่ OpenClaw จัดการด้วย
list,show,status,doctor,probe,add,set,configure,tools,login,logout,reloadและunset
กล่าวอีกอย่างคือ:
serveคือ OpenClaw ที่ทำหน้าที่เป็นเซิร์ฟเวอร์ MCP- คำสั่งย่อยอื่นๆ คือ OpenClaw ที่ทำหน้าที่เป็นรีจิสทรีฝั่งไคลเอนต์ MCP สำหรับเซิร์ฟเวอร์ MCP ที่รันไทม์ของมันอาจใช้ในภายหลัง
ใช้ openclaw acp เมื่อ OpenClaw ควรโฮสต์เซสชันฮาร์เนสเขียนโค้ดเองและกำหนดเส้นทางรันไทม์นั้นผ่าน ACP
เลือกเส้นทาง MCP ที่ถูกต้อง
OpenClaw มีพื้นผิว MCP หลายแบบ เลือกแบบที่ตรงกับว่าใครเป็นเจ้าของรันไทม์ของเอเจนต์และใครเป็นเจ้าของเครื่องมือ
| เป้าหมาย | ใช้ | เหตุผล |
|---|---|---|
| ให้ไคลเอนต์ MCP ภายนอกอ่าน/ส่งบทสนทนาช่องทางของ OpenClaw | openclaw mcp serve |
OpenClaw เป็นเซิร์ฟเวอร์ MCP และเปิดเผยบทสนทนาที่หนุนด้วย Gateway ผ่าน stdio |
| บันทึกเซิร์ฟเวอร์ MCP ของบุคคลที่สามสำหรับการรันเอเจนต์ที่ OpenClaw จัดการ | openclaw mcp add, set, configure, tools, login |
OpenClaw เป็นรีจิสทรีฝั่งไคลเอนต์ MCP และภายหลังจะฉายเซิร์ฟเวอร์เหล่านั้นเข้าไปในรันไทม์ที่เข้าเกณฑ์ |
| ตรวจสอบเซิร์ฟเวอร์ที่บันทึกไว้โดยไม่ต้องรันหนึ่งรอบของเอเจนต์ | openclaw mcp status, doctor, probe |
status และ doctor ตรวจสอบคอนฟิก; probe เปิดการเชื่อมต่อ MCP สดและแสดงความสามารถ |
| แก้ไขคอนฟิก MCP จากเบราว์เซอร์ | Control UI /mcp |
หน้านี้แสดงรายการทรัพยากร การเปิดใช้งาน สรุป OAuth/ตัวกรอง คำใบ้คำสั่ง และตัวแก้ไข mcp แบบจำกัดขอบเขต |
| ให้เซิร์ฟเวอร์แอป Codex มีเซิร์ฟเวอร์ MCP แบบเนทีฟที่จำกัดขอบเขต | mcp.servers.<name>.codex |
บล็อก codex มีผลเฉพาะต่อการฉายเธรดของเซิร์ฟเวอร์แอป Codex และจะถูกตัดออกก่อนส่งต่อคอนฟิกเนทีฟ |
| รันเซสชันฮาร์เนสที่โฮสต์ด้วย ACP | openclaw acp และ เอเจนต์ ACP |
โหมดบริดจ์ ACP ไม่รับการฉีดเซิร์ฟเวอร์ MCP รายเซสชัน; ให้คอนฟิกบริดจ์ Gateway/Plugin แทน |
OpenClaw ในฐานะเซิร์ฟเวอร์ MCP
นี่คือเส้นทาง openclaw mcp serve
ควรใช้ serve เมื่อใด
ใช้ openclaw mcp serve เมื่อ:
- Codex, Claude Code หรือไคลเอนต์ MCP อื่นควรคุยโดยตรงกับบทสนทนาช่องทางที่หนุนด้วย OpenClaw
- คุณมี Gateway ของ OpenClaw แบบ local หรือ remote ที่มีเซสชันถูกกำหนดเส้นทางแล้ว
- คุณต้องการเซิร์ฟเวอร์ MCP หนึ่งตัวที่ทำงานได้กับแบ็กเอนด์ช่องทางของ OpenClaw แทนการรันบริดจ์แยกรายช่องทาง
ใช้ openclaw acp แทนเมื่อ OpenClaw ควรโฮสต์รันไทม์เขียนโค้ดเองและเก็บเซสชันเอเจนต์ไว้ภายใน OpenClaw
วิธีการทำงาน
openclaw mcp serve เริ่มเซิร์ฟเวอร์ MCP แบบ stdio ไคลเอนต์ MCP เป็นเจ้าของโปรเซสนั้น ขณะที่ไคลเอนต์เปิดเซสชัน stdio ค้างไว้ บริดจ์จะเชื่อมต่อกับ Gateway ของ OpenClaw แบบ local หรือ remote ผ่าน WebSocket และเปิดเผยบทสนทนาช่องทางที่กำหนดเส้นทางแล้วผ่าน MCP
Client spawns the bridge
ไคลเอนต์ MCP สร้าง openclaw mcp serve
Bridge connects to Gateway
บริดจ์เชื่อมต่อกับ Gateway ของ OpenClaw ผ่าน WebSocket
Sessions become MCP conversations
เซสชันที่กำหนดเส้นทางแล้วกลายเป็นบทสนทนา MCP และเครื่องมือทรานสคริปต์/ประวัติ
Live events queue
เหตุการณ์สดจะถูกจัดคิวในหน่วยความจำขณะที่บริดจ์เชื่อมต่ออยู่
Optional Claude push
หากเปิดใช้โหมดช่องทาง Claude เซสชันเดียวกันยังสามารถรับการแจ้งเตือนแบบพุชเฉพาะ Claude ได้ด้วย
Important behavior
- สถานะคิวสดเริ่มเมื่อบริดจ์เชื่อมต่อ
- อ่านประวัติทรานสคริปต์เก่าด้วย
messages_read - การแจ้งเตือนแบบพุชของ Claude มีอยู่เฉพาะขณะที่เซสชัน MCP ยังมีชีวิตอยู่
- เมื่อไคลเอนต์ตัดการเชื่อมต่อ บริดจ์จะออกและคิวสดจะหายไป
- จุดเข้าใช้งานเอเจนต์แบบครั้งเดียว เช่น
openclaw agentและopenclaw infer model runจะเลิกรันไทม์ MCP ที่ bundled ที่เปิดไว้เมื่อการตอบกลับเสร็จสิ้น ดังนั้นการรันแบบสคริปต์ซ้ำๆ จะไม่สะสมโปรเซสลูก stdio MCP - เซิร์ฟเวอร์ stdio MCP ที่ OpenClaw เปิดขึ้น (แบบ bundled หรือผู้ใช้คอนฟิก) จะถูกปิดทั้ง process tree เมื่อปิดระบบ ดังนั้นโปรเซสย่อยที่เซิร์ฟเวอร์เริ่มไว้จะไม่คงอยู่หลังจากไคลเอนต์ stdio แม่ออก
- การลบหรือรีเซ็ตเซสชันจะ dispose ไคลเอนต์ MCP ของเซสชันนั้นผ่านเส้นทางทำความสะอาดรันไทม์ร่วม จึงไม่มีการเชื่อมต่อ stdio ที่ค้างอยู่ซึ่งผูกกับเซสชันที่ถูกลบ
เลือกโหมดไคลเอนต์
ใช้บริดจ์เดียวกันได้สองวิธี:
Generic MCP clients
เฉพาะเครื่องมือ MCP มาตรฐานเท่านั้น ใช้ conversations_list, messages_read, events_poll, events_wait, messages_send และเครื่องมืออนุมัติ
Claude Code
เครื่องมือ MCP มาตรฐานพร้อมอะแดปเตอร์ช่องทางเฉพาะ Claude เปิดใช้ --claude-channel-mode on หรือปล่อยค่าเริ่มต้น auto
สิ่งที่ serve เปิดเผย
บริดจ์ใช้เมทาดาทาเส้นทางเซสชันของ Gateway ที่มีอยู่เพื่อเปิดเผยบทสนทนาที่หนุนด้วยช่องทาง บทสนทนาจะปรากฏเมื่อ OpenClaw มีสถานะเซสชันพร้อมเส้นทางที่รู้จักอยู่แล้ว เช่น:
channel- เมทาดาทาผู้รับหรือปลายทาง
accountIdแบบไม่บังคับthreadIdแบบไม่บังคับ
สิ่งนี้ให้ไคลเอนต์ MCP มีที่เดียวสำหรับ:
- แสดงบทสนทนาล่าสุดที่กำหนดเส้นทางแล้ว
- อ่านประวัติทรานสคริปต์ล่าสุด
- รอเหตุการณ์ขาเข้าใหม่
- ส่งการตอบกลับกลับผ่านเส้นทางเดิม
- ดูคำขออนุมัติที่มาถึงขณะที่บริดจ์เชื่อมต่ออยู่
การใช้งาน
Local Gateway
openclaw mcp serveRemote Gateway (token)
openclaw mcp serve --url wss://gateway-host:18789 --token-file ~/.openclaw/gateway.tokenRemote Gateway (password)
openclaw mcp serve --url wss://gateway-host:18789 --password-file ~/.openclaw/gateway.passwordVerbose / Claude off
openclaw mcp serve --verboseopenclaw mcp serve --claude-channel-mode offเครื่องมือบริดจ์
บริดจ์ปัจจุบันเปิดเผยเครื่องมือ MCP เหล่านี้:
conversations_list
แสดงบทสนทนาล่าสุดที่หนุนด้วยเซสชันซึ่งมีเมทาดาทาเส้นทางในสถานะเซสชัน Gateway อยู่แล้ว
ตัวกรองที่มีประโยชน์:
limitsearchchannelincludeDerivedTitlesincludeLastMessage
conversation_get
คืนบทสนทนาหนึ่งรายการตาม session_key โดยใช้การค้นหาเซสชัน Gateway โดยตรง
messages_read
อ่านข้อความทรานสคริปต์ล่าสุดสำหรับบทสนทนาหนึ่งรายการที่หนุนด้วยเซสชัน
attachments_fetch
ดึงบล็อกเนื้อหาข้อความที่ไม่ใช่ข้อความจากข้อความทรานสคริปต์หนึ่งรายการ นี่คือมุมมองเมทาดาทาบนเนื้อหาทรานสคริปต์ ไม่ใช่ที่เก็บ blob ไฟล์แนบแบบคงทนแยกต่างหาก
events_poll
อ่านเหตุการณ์สดที่เข้าคิวตั้งแต่เคอร์เซอร์ตัวเลข
events_wait
โพลระยะยาวจนกว่าเหตุการณ์ที่เข้าคิวซึ่งตรงกันรายการถัดไปจะมาถึงหรือหมดเวลา
ใช้สิ่งนี้เมื่อไคลเอนต์ MCP ทั่วไปต้องการการส่งมอบเกือบเรียลไทม์โดยไม่มีโปรโตคอลพุชเฉพาะ Claude
messages_send
ส่งข้อความกลับผ่านเส้นทางเดียวกันที่บันทึกไว้แล้วในเซสชัน
พฤติกรรมปัจจุบัน:
- ต้องมีเส้นทางบทสนทนาอยู่แล้ว
- ใช้ช่องทาง ผู้รับ รหัสบัญชี และรหัสเธรดของเซสชัน
- ส่งเฉพาะข้อความเท่านั้น
permissions_list_open
แสดงคำขออนุมัติ exec/plugin ที่รอดำเนินการซึ่งบริดจ์สังเกตเห็นตั้งแต่เชื่อมต่อกับ Gateway
permissions_respond
แก้ไขคำขออนุมัติ exec/plugin ที่รอดำเนินการหนึ่งรายการด้วย:
allow-onceallow-alwaysdeny
โมเดลเหตุการณ์
บริดจ์เก็บคิวเหตุการณ์ในหน่วยความจำขณะที่เชื่อมต่ออยู่
ประเภทเหตุการณ์ปัจจุบัน:
messageexec_approval_requestedexec_approval_resolvedplugin_approval_requestedplugin_approval_resolvedclaude_permission_request
การแจ้งเตือนช่องทาง Claude
บริดจ์ยังสามารถเปิดเผยการแจ้งเตือนช่องทางเฉพาะ Claude ได้ด้วย นี่คือสิ่งเทียบเท่าอะแดปเตอร์ช่องทาง Claude Code ของ OpenClaw: เครื่องมือ MCP มาตรฐานยังคงพร้อมใช้งาน แต่ข้อความขาเข้าสดสามารถมาถึงเป็นการแจ้งเตือน MCP เฉพาะ Claude ได้เช่นกัน
off
--claude-channel-mode off: เฉพาะเครื่องมือ MCP มาตรฐานเท่านั้น
on
--claude-channel-mode on: เปิดใช้การแจ้งเตือนช่องทาง Claude
auto (default)
--claude-channel-mode auto: ค่าเริ่มต้นปัจจุบัน; พฤติกรรมบริดจ์เหมือนกับ on
เมื่อเปิดใช้โหมดช่องทาง Claude เซิร์ฟเวอร์จะประกาศความสามารถเชิงทดลองของ Claude และสามารถส่งออก:
notifications/claude/channelnotifications/claude/channel/permission
พฤติกรรมบริดจ์ปัจจุบัน:
- ข้อความทรานสคริปต์
userขาเข้าจะถูกส่งต่อเป็นnotifications/claude/channel - คำขอสิทธิ์ของ Claude ที่ได้รับผ่าน MCP จะถูกติดตามในหน่วยความจำ
- หากบทสนทนาที่ลิงก์ไว้ส่ง
yes abcdeหรือno abcdeในภายหลัง บริดจ์จะแปลงสิ่งนั้นเป็นnotifications/claude/channel/permission - การแจ้งเตือนเหล่านี้มีเฉพาะเซสชันสดเท่านั้น; หากไคลเอนต์ MCP ตัดการเชื่อมต่อ จะไม่มีเป้าหมายพุช
นี่ตั้งใจให้เฉพาะเจาะจงกับไคลเอนต์ ไคลเอนต์ MCP ทั่วไปควรพึ่งพาเครื่องมือโพลมาตรฐาน
คอนฟิกไคลเอนต์ MCP
ตัวอย่างคอนฟิกไคลเอนต์ stdio:
{ "mcpServers": { "openclaw": { "command": "openclaw", "args": [ "mcp", "serve", "--url", "wss://gateway-host:18789", "--token-file", "/path/to/gateway.token" ] } }}สำหรับไคลเอนต์ MCP ทั่วไปส่วนใหญ่ ให้เริ่มจากพื้นผิวเครื่องมือมาตรฐานและไม่ต้องสนใจโหมด Claude เปิดโหมด Claude เฉพาะกับไคลเอนต์ที่เข้าใจเมธอดการแจ้งเตือนเฉพาะ Claude จริงๆ เท่านั้น
ตัวเลือก
openclaw mcp serve รองรับ:
--urlstringURL WebSocket ของ Gateway
--tokenstringโทเค็นของ Gateway
--token-filestringอ่านโทเค็นจากไฟล์
--passwordstringรหัสผ่านของ Gateway
--password-filestringอ่านรหัสผ่านจากไฟล์
--claude-channel-mode"auto" | "on" | "off"โหมดการแจ้งเตือนของ Claude
-v, --verbosebooleanบันทึกแบบละเอียดบน stderr
ความปลอดภัยและขอบเขตความเชื่อถือ
บริดจ์ไม่ได้สร้างเส้นทางขึ้นเอง แต่เปิดเผยเฉพาะการสนทนาที่ Gateway รู้อยู่แล้วว่าต้องกำหนดเส้นทางอย่างไร
นั่นหมายความว่า:
- รายการอนุญาตผู้ส่ง การจับคู่ และความเชื่อถือระดับช่องทางยังคงเป็นของการกำหนดค่าช่องทาง OpenClaw ที่อยู่เบื้องหลัง
messages_sendตอบกลับได้เฉพาะผ่านเส้นทางที่จัดเก็บไว้แล้วเท่านั้น- สถานะการอนุมัติเป็นแบบสด/อยู่ในหน่วยความจำเท่านั้นสำหรับเซสชันบริดจ์ปัจจุบัน
- การตรวจสอบสิทธิ์ของบริดจ์ควรใช้การควบคุมโทเค็นหรือรหัสผ่าน Gateway แบบเดียวกับที่คุณจะเชื่อถือสำหรับไคลเอนต์ Gateway ระยะไกลอื่นใด
หากการสนทนาหายไปจาก conversations_list สาเหตุทั่วไปไม่ใช่การกำหนดค่า MCP แต่เป็นข้อมูลเมตาเส้นทางที่หายไปหรือไม่สมบูรณ์ในเซสชัน Gateway ที่อยู่เบื้องหลัง
การทดสอบ
OpenClaw มาพร้อม Docker smoke ที่กำหนดผลลัพธ์ได้สำหรับบริดจ์นี้:
pnpm test:docker:mcp-channelsSmoke นี้:
- เริ่มคอนเทนเนอร์ Gateway ที่ seed ไว้แล้ว
- เริ่มคอนเทนเนอร์ที่สองซึ่งสปอว์น
openclaw mcp serve - ตรวจสอบการค้นหาการสนทนา การอ่านทรานสคริปต์ การอ่านข้อมูลเมตาไฟล์แนบ พฤติกรรมคิวเหตุการณ์สด และการกำหนดเส้นทางการส่งออก
- ตรวจสอบการแจ้งเตือนช่องทางและสิทธิ์แบบ Claude ผ่านบริดจ์ MCP stdio จริง
นี่เป็นวิธีที่เร็วที่สุดในการพิสูจน์ว่าบริดจ์ทำงานได้ โดยไม่ต้องเชื่อมบัญชี Telegram, Discord หรือ iMessage จริงเข้ากับการรันทดสอบ
สำหรับบริบทการทดสอบที่กว้างขึ้น โปรดดู การทดสอบ
การแก้ไขปัญหา
ไม่มีการสนทนาถูกส่งคืน
โดยปกติหมายความว่าเซสชัน Gateway ยังไม่สามารถกำหนดเส้นทางได้อยู่แล้ว ยืนยันว่าเซสชันที่อยู่เบื้องหลังมีข้อมูลเมตาเส้นทางของช่องทาง/ผู้ให้บริการ ผู้รับ และบัญชี/เธรดที่เป็นทางเลือกจัดเก็บไว้แล้ว
events_poll หรือ events_wait พลาดข้อความเก่า
เป็นไปตามที่คาดไว้ คิวสดเริ่มเมื่อบริดจ์เชื่อมต่อ อ่านประวัติทรานสคริปต์ที่เก่ากว่าด้วย messages_read
การแจ้งเตือนของ Claude ไม่ปรากฏ
ตรวจสอบทั้งหมดนี้:
- ไคลเอนต์คงเซสชัน MCP stdio ไว้
--claude-channel-modeเป็นonหรือauto- ไคลเอนต์เข้าใจเมธอดการแจ้งเตือนเฉพาะของ Claude จริง
- ข้อความขาเข้าเกิดขึ้นหลังจากบริดจ์เชื่อมต่อแล้ว
การอนุมัติหายไป
permissions_list_open แสดงเฉพาะคำขออนุมัติที่สังเกตเห็นขณะบริดจ์เชื่อมต่ออยู่เท่านั้น ไม่ใช่ API ประวัติการอนุมัติแบบคงทน
OpenClaw ในฐานะรีจิสทรีไคลเอนต์ MCP
นี่คือพาธ openclaw mcp list, show, status, doctor, probe, add, set,
configure, tools, login, logout, reload และ unset
คำสั่งเหล่านี้ไม่ได้เปิดเผย OpenClaw ผ่าน MCP แต่จัดการนิยามเซิร์ฟเวอร์ MCP ที่ OpenClaw จัดการภายใต้ mcp.servers ในการกำหนดค่า OpenClaw คำสั่งเหล่านี้ไม่อ่านเซิร์ฟเวอร์ mcporter จาก config/mcporter.json
นิยามที่บันทึกไว้เหล่านั้นมีไว้สำหรับรันไทม์ที่ OpenClaw จะเปิดหรือกำหนดค่าในภายหลัง เช่น OpenClaw แบบฝังและอะแดปเตอร์รันไทม์อื่น ๆ OpenClaw จัดเก็บนิยามไว้ที่ศูนย์กลาง เพื่อให้รันไทม์เหล่านั้นไม่จำเป็นต้องเก็บรายการเซิร์ฟเวอร์ MCP ซ้ำของตนเอง
พฤติกรรมสำคัญ
- คำสั่งเหล่านี้อ่านหรือเขียนเฉพาะการกำหนดค่า OpenClaw
status,list,show,doctorที่ไม่มี--probe,set,configure,tools,logout,reloadและunsetจะไม่เชื่อมต่อกับเซิร์ฟเวอร์ MCP เป้าหมายloginดำเนินการโฟลว์เครือข่าย MCP OAuth สำหรับเซิร์ฟเวอร์ HTTP ที่กำหนดค่าไว้ และบันทึกข้อมูลประจำตัวในเครื่องที่ได้มาstatus --verboseพิมพ์คำใบ้เกี่ยวกับ transport, auth, timeout, filter และ parallel-tool-call ที่แก้ค่าแล้วโดยไม่เชื่อมต่อdoctorตรวจสอบนิยามที่บันทึกไว้สำหรับปัญหาการตั้งค่าในเครื่อง เช่น คำสั่ง stdio ที่หายไป ไดเรกทอรีทำงานไม่ถูกต้อง ไฟล์ TLS ที่หายไป เซิร์ฟเวอร์ที่ปิดใช้งาน ค่าส่วนหัว/env ที่ละเอียดอ่อนแบบลิเทอรัล และการอนุญาต OAuth ที่ไม่สมบูรณ์doctor --probeเพิ่มหลักฐานการเชื่อมต่อสดแบบเดียวกับprobeหลังจากการตรวจสอบแบบสแตติกผ่านแล้วprobeเชื่อมต่อกับเซิร์ฟเวอร์ที่เลือกหรือเซิร์ฟเวอร์ที่กำหนดค่าทั้งหมด แสดงรายการเครื่องมือ และรายงานความสามารถ/การวินิจฉัยaddสร้างนิยามจากแฟล็กและ probe ก่อนบันทึก เว้นแต่ตั้งค่า--no-probeไว้หรือต้องมีการอนุญาต OAuth ก่อน- อะแดปเตอร์รันไทม์ตัดสินใจว่า transport รูปแบบใดที่รองรับจริงในเวลาประมวลผล
enabled: falseเก็บเซิร์ฟเวอร์ไว้ แต่ไม่รวมไว้ในการค้นหารันไทม์แบบฝังtimeoutและconnectTimeoutตั้งค่า timeout คำขอและการเชื่อมต่อต่อเซิร์ฟเวอร์เป็นวินาทีsupportsParallelToolCalls: trueทำเครื่องหมายเซิร์ฟเวอร์ที่อะแดปเตอร์สามารถเรียกพร้อมกันได้- เซิร์ฟเวอร์ HTTP สามารถใช้ส่วนหัวแบบสแตติก การเข้าสู่ระบบ OAuth การควบคุมการตรวจสอบ TLS และพาธใบรับรอง/คีย์ mTLS
- OpenClaw แบบฝังเปิดเผยเครื่องมือ MCP ที่กำหนดค่าไว้ในโปรไฟล์เครื่องมือ
codingและmessagingปกติ;minimalยังคงซ่อนเครื่องมือเหล่านั้น และtools.deny: ["bundle-mcp"]ปิดใช้งานอย่างชัดเจน toolFilter.includeและtoolFilter.excludeต่อเซิร์ฟเวอร์กรองเครื่องมือ MCP ที่ค้นพบก่อนที่เครื่องมือเหล่านั้นจะกลายเป็นเครื่องมือ OpenClaw- เซิร์ฟเวอร์ที่ประกาศ resources หรือ prompts ยังเปิดเผยเครื่องมืออรรถประโยชน์สำหรับแสดงรายการ/อ่าน resources และแสดงรายการ/ดึง prompts; ชื่ออรรถประโยชน์ที่สร้างขึ้นเหล่านั้น (
resources_list,resources_read,prompts_list,prompts_get) ใช้ตัวกรอง include/exclude เดียวกัน - การเปลี่ยนแปลงรายการเครื่องมือ MCP แบบไดนามิกทำให้แค็ตตาล็อกที่แคชไว้สำหรับเซสชันนั้นใช้ไม่ได้; การค้นหา/ใช้งานครั้งถัดไปจะรีเฟรชจากเซิร์ฟเวอร์
- ความล้มเหลวของคำขอ/โปรโตคอลเครื่องมือ MCP ที่เกิดซ้ำจะหยุดเซิร์ฟเวอร์นั้นชั่วครู่ เพื่อไม่ให้เซิร์ฟเวอร์เสียหนึ่งตัวกินทั้งเทิร์น
- รันไทม์ MCP แบบบันเดิลที่มีขอบเขตตามเซสชันจะถูกเก็บกวาดหลังจากไม่มีการใช้งานเป็นเวลา
mcp.sessionIdleTtlMsมิลลิวินาที (ค่าเริ่มต้น 10 นาที; ตั้ง0เพื่อปิดใช้งาน) และการรันแบบฝังครั้งเดียวจะล้างสิ่งเหล่านี้เมื่อสิ้นสุดการรัน
อะแดปเตอร์รันไทม์อาจทำให้รีจิสทรีที่ใช้ร่วมกันนี้เป็นรูปแบบที่ไคลเอนต์ปลายทางคาดหวัง ตัวอย่างเช่น OpenClaw แบบฝังใช้ค่า transport ของ OpenClaw โดยตรง ขณะที่ Claude Code และ Gemini ได้รับค่า type แบบ CLI-native เช่น http, sse หรือ stdio
Codex app-server ยังเคารพบล็อก codex ที่เป็นทางเลือกบนแต่ละเซิร์ฟเวอร์ด้วย นี่คือข้อมูลเมตาการฉายของ OpenClaw สำหรับเธรด Codex app-server เท่านั้น; ไม่เปลี่ยนเซสชัน ACP การกำหนดค่า generic Codex harness หรืออะแดปเตอร์รันไทม์อื่น ใช้ codex.agents ที่ไม่ว่างเพื่อฉายเซิร์ฟเวอร์เข้าเฉพาะ id ของเอเจนต์ OpenClaw ที่ระบุ รายการเอเจนต์ที่ว่าง เปล่า หรือไม่ถูกต้องจะถูกปฏิเสธโดยการตรวจสอบการกำหนดค่า และถูกละเว้นโดยพาธการฉายของรันไทม์ แทนที่จะกลายเป็นแบบ global ใช้ codex.defaultToolsApprovalMode (auto, prompt หรือ approve) เพื่อปล่อย default_tools_approval_mode แบบเนทีฟของ Codex สำหรับเซิร์ฟเวอร์ที่เชื่อถือได้ OpenClaw จะตัดข้อมูลเมตา codex ออกก่อนส่งมอบการกำหนดค่า mcp_servers แบบเนทีฟให้ Codex
นิยามเซิร์ฟเวอร์ MCP ที่บันทึกไว้
OpenClaw ยังจัดเก็บรีจิสทรีเซิร์ฟเวอร์ MCP แบบเบาใน config สำหรับพื้นผิวที่ต้องการนิยาม MCP ที่ OpenClaw จัดการ
คำสั่ง:
openclaw mcp listopenclaw mcp show [name]openclaw mcp status [--verbose]openclaw mcp doctor [name] [--probe]openclaw mcp probe [name]openclaw mcp add <name> [flags]openclaw mcp set <name> <json>openclaw mcp configure <name> [flags]openclaw mcp tools <name> [--include csv] [--exclude csv] [--clear]openclaw mcp login <name> [--code code]openclaw mcp logout <name>openclaw mcp reloadopenclaw mcp unset <name>
หมายเหตุ:
listเรียงชื่อเซิร์ฟเวอร์showที่ไม่มีชื่อจะพิมพ์ออบเจ็กต์เซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้ทั้งหมดstatusจัดประเภท transport ที่กำหนดค่าไว้โดยไม่เชื่อมต่อ--verboseรวมรายละเอียด launch, timeout, OAuth, filter และ parallel-call ที่แก้ค่าแล้วdoctorดำเนินการตรวจสอบแบบสแตติกโดยไม่เชื่อมต่อ เพิ่ม--probeเมื่อคำสั่งควรตรวจสอบด้วยว่าเซิร์ฟเวอร์ที่เปิดใช้งานเชื่อมต่อได้probeเชื่อมต่อและรายงานจำนวนเครื่องมือ การรองรับ resources/prompts การรองรับ list-change และการวินิจฉัยaddรับแฟล็ก stdio เช่น--command,--arg,--envและ--cwdหรือแฟล็ก HTTP เช่น--url,--transport,--header,--auth oauth, TLS, timeout และแฟล็กการเลือกเครื่องมือsetคาดหวังค่าออบเจ็กต์ JSON หนึ่งรายการบนบรรทัดคำสั่งconfigureอัปเดตการเปิดใช้งาน ตัวกรองเครื่องมือ timeout, OAuth, TLS และคำใบ้ parallel-tool-call โดยไม่แทนที่นิยามเซิร์ฟเวอร์ทั้งหมดtoolsอัปเดตตัวกรองเครื่องมือต่อเซิร์ฟเวอร์ รายการ include/exclude คือชื่อเครื่องมือ MCP และ glob*แบบเรียบง่ายloginรันโฟลว์ OAuth สำหรับเซิร์ฟเวอร์ HTTP ที่กำหนดค่าด้วยauth: "oauth"การรันครั้งแรกจะพิมพ์ URL การอนุญาต; รันซ้ำด้วย--codeหลังจากอนุมัติแล้วlogoutล้างข้อมูลประจำตัว OAuth ที่จัดเก็บไว้สำหรับเซิร์ฟเวอร์ที่ระบุ โดยไม่ลบนิยามเซิร์ฟเวอร์ที่บันทึกไว้reloadกำจัดรันไทม์ MCP ในโปรเซสที่แคชไว้ โปรเซส Gateway หรือเอเจนต์ในโปรเซสอื่นยังต้องใช้พาธ reload หรือ restart ของตนเอง- ใช้
transport: "streamable-http"สำหรับเซิร์ฟเวอร์ Streamable HTTP MCPopenclaw mcp setยัง normalizetype: "http"แบบ CLI-native ให้เป็นรูปแบบการกำหนดค่า canonical เดียวกันเพื่อความเข้ากันได้ unsetล้มเหลวหากไม่มีเซิร์ฟเวอร์ที่ระบุ
ตัวอย่าง:
openclaw mcp listopenclaw mcp show context7 --jsonopenclaw mcp status --verboseopenclaw mcp doctor --probeopenclaw mcp probe context7 --jsonopenclaw mcp add memory --command npx --arg -y --arg @modelcontextprotocol/server-memoryopenclaw mcp set context7 '{"command":"uvx","args":["context7-mcp"]}'openclaw mcp tools context7 --include 'resolve-library-id,get-library-docs'openclaw mcp set docs '{"url":"https://mcp.example.com","transport":"streamable-http"}'openclaw mcp configure docs --timeout 20 --connect-timeout 5 --include 'search,read_*'openclaw mcp configure docs --auth oauth --oauth-scope 'docs.read'openclaw mcp login docsopenclaw mcp logout docsopenclaw mcp unset context7สูตรเซิร์ฟเวอร์ทั่วไป
ตัวอย่างเหล่านี้บันทึกเฉพาะนิยามเซิร์ฟเวอร์เท่านั้น รัน openclaw mcp doctor --probe หลังจากนั้นเพื่อพิสูจน์ว่าเซิร์ฟเวอร์เริ่มทำงานและเปิดเผยเครื่องมือ
ระบบไฟล์
openclaw mcp add files \ --command npx \ --arg -y \ --arg @modelcontextprotocol/server-filesystem \ --arg "$HOME/Documents" \ --include 'read_file,list_directory,search_files'openclaw mcp doctor files --probeจำกัดขอบเขตเซิร์ฟเวอร์ระบบไฟล์ให้เป็นแผนผังไดเรกทอรีที่เล็กที่สุดที่เอเจนต์ควรอ่านหรือแก้ไข
Memory
openclaw mcp add memory \ --command npx \ --arg -y \ --arg @modelcontextprotocol/server-memoryopenclaw mcp probe memory --jsonใช้ตัวกรองเครื่องมือหากเซิร์ฟเวอร์เปิดเผยเครื่องมือเขียนที่ไม่ควรพร้อมใช้งานสำหรับเอเจนต์ปกติ
สคริปต์ในเครื่อง
openclaw mcp add local-tools \ --command node \ --arg ./dist/mcp-server.js \ --cwd /srv/openclaw-tools \ --env API_BASE=https://internal.exampleopenclaw mcp status --verbosedoctor ตรวจสอบว่า cwd มีอยู่และคำสั่ง resolve ได้จาก environment ที่กำหนดค่าไว้
Remote HTTP
openclaw mcp add docs \ --url https://mcp.example.com/mcp \ --transport streamable-http \ --auth oauth \ --oauth-scope docs.read \ --timeout 20 \ --connect-timeout 5 \ --include 'search,read_*'openclaw mcp doctor docs --probeใช้ OAuth เมื่อเซิร์ฟเวอร์ระยะไกลรองรับ หากเซิร์ฟเวอร์ต้องใช้ส่วนหัวแบบคงที่ ให้หลีกเลี่ยงการ commit โทเค็น bearer แบบ literal
Desktop/CUA
openclaw mcp set cua-driver '{"command":"cua-driver","args":["mcp"]}'openclaw mcp tools cua-driver --include 'list_apps,observe,click,type'openclaw mcp doctor cua-driver --probeเซิร์ฟเวอร์ควบคุมเดสก์ท็อปโดยตรงจะสืบทอดสิทธิ์ของกระบวนการที่เปิดใช้เซิร์ฟเวอร์นั้น ใช้ตัวกรองเครื่องมือที่แคบและพรอมป์สิทธิ์ระดับ OS
รูปแบบเอาต์พุต JSON
ใช้ --json สำหรับสคริปต์และแดชบอร์ด ชุดฟิลด์อาจเพิ่มขึ้นได้เมื่อเวลาผ่านไป ดังนั้นผู้บริโภคควรละเว้นคีย์ที่ไม่รู้จัก
status --json
{ "path": "/home/user/.openclaw/openclaw.json", "servers": [ { "name": "docs", "configured": true, "enabled": true, "ok": true, "transport": "streamable-http", "launch": "streamable-http https://mcp.example.com/mcp", "auth": "oauth", "authStatus": { "hasTokens": true, "hasClientInformation": true, "hasCodeVerifier": false, "hasDiscoveryState": true, "hasLastAuthorizationUrl": false }, "requestTimeoutMs": 20000, "connectionTimeoutMs": 5000, "toolFilter": { "include": ["search", "read_*"], "exclude": [] }, "supportsParallelToolCalls": true } ]}doctor --json
{ "ok": false, "path": "/home/user/.openclaw/openclaw.json", "servers": [ { "name": "docs", "ok": false, "issues": [ { "level": "error", "message": "OAuth credentials are not authorized; run openclaw mcp login docs" } ] } ]}doctor --json ออกด้วยสถานะไม่เป็นศูนย์เมื่อเซิร์ฟเวอร์ที่เปิดใช้งานและถูกตรวจสอบมีข้อผิดพลาด คำเตือนจะถูกรายงาน แต่ไม่ได้ทำให้คำสั่งล้มเหลวด้วยตัวเอง
probe --json
{ "path": "/home/user/.openclaw/openclaw.json", "generatedAt": "2026-05-31T09:00:00.000Z", "servers": { "docs": { "launch": "streamable-http https://mcp.example.com/mcp", "tools": 2, "resources": true, "prompts": false, "listChanged": { "tools": true, "resources": false, "prompts": false } } }, "tools": ["docs__read_page", "docs__search"], "diagnostics": []}probe เปิดเซสชันไคลเอนต์ MCP แบบสด ใช้สำหรับพิสูจน์การเข้าถึงได้และความสามารถ ไม่ใช่สำหรับการตรวจสอบ config แบบคงที่
ตัวอย่างรูปแบบ config:
{ "mcp": { "servers": { "context7": { "command": "uvx", "args": ["context7-mcp"] }, "docs": { "url": "https://mcp.example.com", "transport": "streamable-http", "timeout": 20, "connectTimeout": 5, "supportsParallelToolCalls": true, "auth": "oauth", "oauth": { "scope": "docs.read" }, "sslVerify": true, "clientCert": "/path/to/client.crt", "clientKey": "/path/to/client.key", "toolFilter": { "include": ["search_*"], "exclude": ["admin_*"] } } } }}ทรานสปอร์ต Stdio
เปิดใช้กระบวนการลูกภายในเครื่องและสื่อสารผ่าน stdin/stdout
| ฟิลด์ | คำอธิบาย |
|---|---|
command |
ไฟล์ปฏิบัติการที่จะ spawn (จำเป็น) |
args |
อาร์เรย์ของอาร์กิวเมนต์บรรทัดคำสั่ง |
env |
ตัวแปรสภาพแวดล้อมเพิ่มเติม |
cwd / workingDirectory |
ไดเรกทอรีทำงานสำหรับกระบวนการ |
ทรานสปอร์ต SSE / HTTP
เชื่อมต่อกับเซิร์ฟเวอร์ MCP ระยะไกลผ่าน HTTP Server-Sent Events
| ฟิลด์ | คำอธิบาย |
|---|---|
url |
URL HTTP หรือ HTTPS ของเซิร์ฟเวอร์ระยะไกล (จำเป็น) |
headers |
แมปคีย์-ค่าแบบไม่บังคับของส่วนหัว HTTP (เช่น โทเค็น auth) |
connectionTimeoutMs |
เวลาเชื่อมต่อหมดเวลาต่อเซิร์ฟเวอร์เป็น ms (ไม่บังคับ) |
connectTimeout |
เวลาเชื่อมต่อหมดเวลาต่อเซิร์ฟเวอร์เป็นวินาที (ไม่บังคับ) |
timeout / requestTimeoutMs |
เวลา MCP request หมดเวลาต่อเซิร์ฟเวอร์เป็นวินาทีหรือ ms |
auth: "oauth" |
ใช้ที่เก็บโทเค็น MCP OAuth และ openclaw mcp login |
sslVerify |
ตั้งเป็น false เฉพาะสำหรับ endpoint HTTPS ส่วนตัวที่เชื่อถืออย่างชัดเจน |
clientCert / clientKey |
พาธใบรับรองและคีย์ไคลเอนต์ mTLS |
supportsParallelToolCalls |
คำใบ้ว่าการเรียกพร้อมกันปลอดภัยสำหรับเซิร์ฟเวอร์นี้ |
ตัวอย่าง:
{ "mcp": { "servers": { "remote-tools": { "url": "https://mcp.example.com", "auth": "oauth", "timeout": 20, "headers": { "Authorization": "Bearer <token>" } } } }}ค่าที่ละเอียดอ่อนใน url (userinfo) และ headers จะถูกปกปิดใน log และเอาต์พุตสถานะ openclaw mcp doctor เตือนเมื่อรายการ headers หรือ env ที่ดูเหมือนละเอียดอ่อนมีค่า literal เพื่อให้ผู้ปฏิบัติงานย้ายค่าเหล่านั้นออกจาก config ที่ถูก commit ได้
เวิร์กโฟลว์ OAuth
OAuth มีไว้สำหรับเซิร์ฟเวอร์ HTTP MCP ที่ประกาศรองรับโฟลว์ MCP OAuth ส่วนหัว Authorization แบบคงที่จะถูกละเว้นสำหรับเซิร์ฟเวอร์ขณะที่เปิดใช้ auth: "oauth"
Save the server
เพิ่มหรืออัปเดตเซิร์ฟเวอร์ด้วย auth: "oauth" และเมทาดาทา OAuth แบบไม่บังคับใด ๆ
openclaw mcp set docs '{"url":"https://mcp.example.com/mcp","transport":"streamable-http","auth":"oauth","oauth":{"scope":"docs.read"}}'Start login
เรียกใช้ login เพื่อสร้างคำขอ authorization
openclaw mcp login docsOpenClaw พิมพ์ URL authorization และจัดเก็บสถานะ verifier OAuth ชั่วคราวไว้ใต้ไดเรกทอรีสถานะของ OpenClaw
Finish with the code
หลังจากอนุมัติในเบราว์เซอร์แล้ว ให้ส่ง code ที่ได้รับกลับไปยัง OpenClaw
openclaw mcp login docs --code abc123Check authorization
ใช้ status หรือ doctor เพื่อยืนยันว่ามีโทเค็นอยู่
openclaw mcp status --verboseopenclaw mcp doctor docs --probeClear credentials
logout จะลบข้อมูลรับรอง OAuth ที่จัดเก็บไว้ แต่ยังคงเก็บนิยามเซิร์ฟเวอร์ที่บันทึกไว้
openclaw mcp logout docsหาก provider หมุนเวียนโทเค็นหรือสถานะ authorization ค้างอยู่ ให้เรียกใช้ openclaw mcp logout <name> แล้วทำ login ซ้ำ logout สามารถล้างข้อมูลรับรองสำหรับเซิร์ฟเวอร์ HTTP ที่บันทึกไว้ได้ แม้หลังจากลบ auth: "oauth" ออกจาก config แล้ว ตราบใดที่ชื่อเซิร์ฟเวอร์และ URL ยังระบุรายการที่เก็บข้อมูลรับรองได้
ทรานสปอร์ต Streamable HTTP
streamable-http เป็นตัวเลือกทรานสปอร์ตเพิ่มเติมควบคู่กับ sse และ stdio ใช้ HTTP streaming สำหรับการสื่อสารสองทิศทางกับเซิร์ฟเวอร์ MCP ระยะไกล
| ฟิลด์ | คำอธิบาย |
|---|---|
url |
URL HTTP หรือ HTTPS ของเซิร์ฟเวอร์ระยะไกล (จำเป็น) |
transport |
ตั้งเป็น "streamable-http" เพื่อเลือกทรานสปอร์ตนี้ เมื่อไม่ระบุ OpenClaw จะใช้ sse |
headers |
แมปคีย์-ค่าแบบไม่บังคับของส่วนหัว HTTP (เช่น โทเค็น auth) |
connectionTimeoutMs |
เวลาเชื่อมต่อหมดเวลาต่อเซิร์ฟเวอร์เป็น ms (ไม่บังคับ) |
connectTimeout |
เวลาเชื่อมต่อหมดเวลาต่อเซิร์ฟเวอร์เป็นวินาที (ไม่บังคับ) |
timeout / requestTimeoutMs |
เวลา MCP request หมดเวลาต่อเซิร์ฟเวอร์เป็นวินาทีหรือ ms |
auth: "oauth" |
ใช้ที่เก็บโทเค็น MCP OAuth และ openclaw mcp login |
sslVerify |
ตั้งเป็น false เฉพาะสำหรับ endpoint HTTPS ส่วนตัวที่เชื่อถืออย่างชัดเจน |
clientCert / clientKey |
พาธใบรับรองและคีย์ไคลเอนต์ mTLS |
supportsParallelToolCalls |
คำใบ้ว่าการเรียกพร้อมกันปลอดภัยสำหรับเซิร์ฟเวอร์นี้ |
config ของ OpenClaw ใช้ transport: "streamable-http" เป็นการสะกดแบบ canonical ค่า MCP type: "http" แบบ CLI-native จะถูกรับเมื่อบันทึกผ่าน openclaw mcp set และถูกซ่อมโดย openclaw doctor --fix ใน config ที่มีอยู่ แต่ transport คือสิ่งที่ OpenClaw แบบฝังใช้งานโดยตรง
ตัวอย่าง:
{ "mcp": { "servers": { "streaming-tools": { "url": "https://mcp.example.com/stream", "transport": "streamable-http", "connectTimeout": 10, "timeout": 30, "headers": { "Authorization": "Bearer <token>" } } } }}UI ควบคุม
UI ควบคุมในเบราว์เซอร์มีหน้าการตั้งค่า MCP เฉพาะที่ /mcp หน้านี้แสดงจำนวนเซิร์ฟเวอร์ที่กำหนดค่าไว้ สรุป enabled/OAuth/filter แถวทรานสปอร์ตต่อเซิร์ฟเวอร์ ตัวควบคุมเปิด/ปิดใช้ คำสั่ง CLI ทั่วไป และตัวแก้ไขแบบมีขอบเขตสำหรับส่วน config mcp
ใช้หน้านี้สำหรับการแก้ไขของผู้ปฏิบัติงานและการทำ inventory อย่างรวดเร็ว ใช้ openclaw mcp doctor --probe หรือ openclaw mcp probe เมื่อคุณต้องการพิสูจน์เซิร์ฟเวอร์แบบสด
เวิร์กโฟลว์ของผู้ปฏิบัติงาน:
- เปิด UI ควบคุม แล้วเลือก MCP
- ตรวจสอบการ์ดสรุปสำหรับเซิร์ฟเวอร์ทั้งหมด เซิร์ฟเวอร์ที่เปิดใช้งาน OAuth และเซิร์ฟเวอร์ที่ถูกกรอง
- ใช้แต่ละแถวของเซิร์ฟเวอร์เพื่อดูคำใบ้เกี่ยวกับทรานสปอร์ต การยืนยันตัวตน ตัวกรอง หมดเวลา และคำสั่ง
- สลับการเปิดใช้งานเมื่อคุณต้องการเก็บคำนิยามไว้ แต่ไม่รวมไว้ในการค้นพบขณะรันไทม์
- แก้ไขส่วนคอนฟิก
mcpที่กำหนดขอบเขตไว้ สำหรับการเปลี่ยนแปลงเชิงโครงสร้าง เช่น เซิร์ฟเวอร์ใหม่ เฮดเดอร์ TLS เมตาดาตา OAuth หรือตัวกรองเครื่องมือ - เลือก บันทึก เพื่อคงคอนฟิกไว้เท่านั้น หรือ บันทึกและเผยแพร่ เพื่อนำไปใช้ผ่านเส้นทางคอนฟิกของ Gateway
- รัน
openclaw mcp doctor --probeเมื่อคุณต้องการหลักฐานสดว่าเซิร์ฟเวอร์ที่แก้ไขเริ่มทำงานและแสดงรายการเครื่องมือได้
หมายเหตุ:
- สnippet คำสั่งจะใส่ชื่อเซิร์ฟเวอร์ไว้ในเครื่องหมายคำพูด เพื่อให้ชื่อที่ไม่ปกติยังคัดลอกไปใช้ใน shell ได้
- ค่าที่แสดงซึ่งมีรูปแบบคล้าย URL จะถูกปกปิดก่อนเรนเดอร์เมื่อมีข้อมูลรับรองฝังอยู่
- หน้านี้จะไม่เริ่มทรานสปอร์ต MCP ด้วยตัวเอง
- รันไทม์ที่ทำงานอยู่ อาจต้องใช้
openclaw mcp reloadการเผยแพร่คอนฟิก Gateway หรือการรีสตาร์ตโปรเซส ขึ้นอยู่กับว่าโปรเซสใดเป็นเจ้าของไคลเอนต์ MCP
ขีดจำกัดปัจจุบัน
หน้านี้บันทึกการทำงานของบริดจ์ตามที่จัดส่งในปัจจุบัน
ขีดจำกัดปัจจุบัน:
- การค้นพบการสนทนาขึ้นอยู่กับเมตาดาตาเส้นทางเซสชัน Gateway ที่มีอยู่
- ยังไม่มีโปรโตคอล push ทั่วไปนอกเหนือจากอะแดปเตอร์เฉพาะของ Claude
- ยังไม่มีเครื่องมือสำหรับแก้ไขข้อความหรือแสดงปฏิกิริยา
- ทรานสปอร์ต HTTP/SSE/streamable-http เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลเพียงตัวเดียว ยังไม่มีอัปสตรีมแบบมัลติเพล็กซ์
permissions_list_openรวมเฉพาะการอนุมัติที่สังเกตได้ขณะที่บริดจ์เชื่อมต่ออยู่