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 สำหรับเซิร์ฟเวอร์ที่รันไทม์ของ OpenClaw อาจนำไปใช้ภายหลัง
ใช้ openclaw acp เมื่อ OpenClaw ควรโฮสต์เซสชันของชุดเครื่องมือเขียนโค้ดเองและกำหนดเส้นทางรันไทม์นั้นผ่าน ACP
เลือกเส้นทาง 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 /settings/mcp (นามแฝง /mcp) |
หน้านี้แสดงรายการทั้งหมด สถานะการเปิดใช้ สรุป OAuth/ตัวกรอง คำแนะนำคำสั่ง และตัวแก้ไข mcp ที่จำกัดขอบเขต |
| มอบเซิร์ฟเวอร์ MCP แบบเนทีฟที่จำกัดขอบเขตให้ Codex app-server | mcp.servers.<name>.codex |
บล็อก codex มีผลเฉพาะต่อการส่งต่อเธรดของ Codex app-server และจะถูกตัดออกก่อนส่งมอบคอนฟิกแบบเนทีฟ |
| เรียกใช้เซสชันชุดเครื่องมือที่โฮสต์โดย ACP | openclaw acp และ เอเจนต์ ACP |
โหมดบริดจ์ ACP ไม่รองรับการแทรกเซิร์ฟเวอร์ MCP รายเซสชัน; ให้กำหนดค่าบริดจ์ Gateway/Plugin แทน |
OpenClaw ในฐานะเซิร์ฟเวอร์ MCP
นี่คือเส้นทาง openclaw mcp serve
เมื่อใดควรใช้ serve
ใช้ openclaw mcp serve เมื่อ:
- Codex, Claude Code หรือไคลเอนต์ MCP อื่นควรสื่อสารโดยตรงกับบทสนทนาช่องทางที่มี OpenClaw รองรับ
- มี Gateway ของ OpenClaw แบบภายในเครื่องหรือระยะไกลที่มีเซสชันซึ่งกำหนดเส้นทางไว้แล้ว
- ต้องการเซิร์ฟเวอร์ MCP หนึ่งตัวที่ใช้งานได้กับแบ็กเอนด์ช่องทางต่างๆ ของ OpenClaw แทนการเรียกใช้บริดจ์แยกสำหรับแต่ละช่องทาง
ใช้ openclaw acp แทน เมื่อ OpenClaw ควรโฮสต์รันไทม์การเขียนโค้ดเองและเก็บเซสชันเอเจนต์ไว้ภายใน OpenClaw
วิธีการทำงาน
openclaw mcp serve เริ่มเซิร์ฟเวอร์ MCP แบบ stdio โดยไคลเอนต์ MCP เป็นเจ้าของกระบวนการนั้น ตราบใดที่ไคลเอนต์ยังคงเปิดเซสชัน stdio ไว้ บริดจ์จะเชื่อมต่อกับ Gateway ของ OpenClaw แบบภายในเครื่องหรือระยะไกลผ่าน WebSocket และเปิดเผยบทสนทนาช่องทางที่กำหนดเส้นทางไว้ผ่าน MCP
ไคลเอนต์เริ่มบริดจ์
ไคลเอนต์ MCP เริ่ม openclaw mcp serve
บริดจ์เชื่อมต่อกับ Gateway
บริดจ์เชื่อมต่อกับ Gateway ของ OpenClaw ผ่าน WebSocket
เซสชันกลายเป็นบทสนทนา MCP
เซสชันที่กำหนดเส้นทางไว้จะกลายเป็นบทสนทนา MCP และเครื่องมือทรานสคริปต์/ประวัติ
จัดคิวเหตุการณ์สด
เหตุการณ์สดจะถูกจัดคิวไว้ในหน่วยความจำขณะที่บริดจ์เชื่อมต่ออยู่
การพุช Claude แบบไม่บังคับ
หากเปิดใช้โหมดช่องทาง Claude เซสชันเดียวกันจะรับการแจ้งเตือนแบบพุชเฉพาะของ Claude ได้ด้วย
ลักษณะการทำงานที่สำคัญ
- สถานะคิวสดเริ่มต้นเมื่อบริดจ์เชื่อมต่อ
- อ่านประวัติทรานสคริปต์ที่เก่ากว่าด้วย
messages_read - การแจ้งเตือนแบบพุชของ Claude จะมีอยู่เฉพาะขณะที่เซสชัน MCP ยังทำงาน
- เมื่อไคลเอนต์ตัดการเชื่อมต่อ บริดจ์จะสิ้นสุดและคิวสดจะหายไป
- จุดเริ่มต้นเอเจนต์แบบครั้งเดียว เช่น
openclaw agentและopenclaw infer model runจะปิดรันไทม์ MCP แบบรวมชุดที่เปิดขึ้นเมื่อการตอบกลับเสร็จสิ้น เพื่อไม่ให้การรันด้วยสคริปต์ซ้ำๆ สะสมกระบวนการลูก MCP แบบ stdio - เซิร์ฟเวอร์ MCP แบบ stdio ที่ OpenClaw เปิดใช้ (ทั้งแบบรวมชุดหรือที่ผู้ใช้กำหนดค่า) จะถูกปิดลงทั้งแผนผังกระบวนการเมื่อปิดระบบ เพื่อให้กระบวนการย่อยที่เซิร์ฟเวอร์เริ่มขึ้นไม่ทำงานต่อหลังจากไคลเอนต์ stdio หลักสิ้นสุด
- การลบหรือรีเซ็ตเซสชันจะยุติไคลเอนต์ MCP ของเซสชันนั้นผ่านเส้นทางการล้างรันไทม์ร่วม จึงไม่มีการเชื่อมต่อ stdio ที่ตกค้างและผูกกับเซสชันที่ถูกลบ
เลือกโหมดไคลเอนต์
ไคลเอนต์ MCP ทั่วไป
เฉพาะเครื่องมือ 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 มีที่เดียวสำหรับ:
- แสดงบทสนทนาที่กำหนดเส้นทางไว้ล่าสุด
- อ่านประวัติทรานสคริปต์ล่าสุด
- รอเหตุการณ์ขาเข้าใหม่
- ส่งคำตอบกลับผ่านเส้นทางเดิม
- ดูคำขออนุมัติที่เข้ามาขณะที่บริดจ์เชื่อมต่ออยู่
การใช้งาน
Gateway ภายในเครื่อง
openclaw mcp serveGateway ระยะไกล (โทเค็น)
openclaw mcp serve --url wss://gateway-host:18789 --token-file ~/.openclaw/gateway.tokenGateway ระยะไกล (รหัสผ่าน)
openclaw mcp serve --url wss://gateway-host:18789 --password-file ~/.openclaw/gateway.passwordรายละเอียดเพิ่มเติม / ปิด Claude
openclaw mcp serve --verboseopenclaw mcp serve --claude-channel-mode offเครื่องมือบริดจ์
conversations_list
แสดงบทสนทนาล่าสุดที่มีเซสชันรองรับและมีเมทาดาทาเส้นทางอยู่แล้วในสถานะเซสชันของ Gateway
ตัวกรอง: limit (สูงสุด 500), search, channel, includeDerivedTitles, includeLastMessage
conversation_get
ส่งคืนบทสนทนาหนึ่งรายการตาม session_key โดยใช้การค้นหาเซสชัน Gateway โดยตรง
messages_read
อ่านข้อความทรานสคริปต์ล่าสุดสำหรับบทสนทนาหนึ่งรายการที่มีเซสชันรองรับ ค่าเริ่มต้นของ limit คือ 20 และสูงสุด 200
attachments_fetch
แยกบล็อกเนื้อหาที่ไม่ใช่ข้อความจากข้อความทรานสคริปต์หนึ่งรายการ นี่คือมุมมองเมทาดาทาบนเนื้อหาทรานสคริปต์ ไม่ใช่ที่เก็บไฟล์แนบแบบบล็อบถาวรที่ทำงานแยกต่างหาก
events_poll
อ่านเหตุการณ์สดที่จัดคิวไว้ตั้งแต่เคอร์เซอร์ตัวเลข ค่า limit สูงสุดคือ 200
events_wait
ทำการลองโพลระยะยาวจนกว่าเหตุการณ์ที่ตรงกันถัดไปจะมาถึงหรือหมดเวลา (ค่าเริ่มต้น 30s, สูงสุด 300s)
ใช้เมื่อไคลเอนต์ 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 (ค่าเริ่มต้น)
--claude-channel-mode auto: ค่าเริ่มต้นปัจจุบัน; มีลักษณะการทำงานของบริดจ์เหมือนกับ on
เมื่อเปิดใช้โหมดช่องทาง Claude เซิร์ฟเวอร์จะประกาศความสามารถทดลองของ Claude และสามารถส่ง:
notifications/claude/channelnotifications/claude/channel/permission
ลักษณะการทำงานปัจจุบันของบริดจ์:
- ข้อความทรานสคริปต์
userขาเข้าจะถูกส่งต่อเป็นnotifications/claude/channel - คำขอสิทธิ์ของ Claude ที่ได้รับผ่าน MCP จะถูกติดตามในหน่วยความจำ
- หากเจ้าของคำสั่งในบทสนทนาที่เชื่อมโยงส่ง
yes <id>หรือno <id>ในภายหลัง (<id>คือรหัสคำขอ 5 ตัวอักษร โดยไม่รวมl) บริดจ์จะแปลงข้อมูลนั้นเป็น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 ค่าเริ่มต้นคือ gateway.remote.url เมื่อกำหนดค่าไว้
--tokenstringโทเค็นของ Gateway
--token-filestringอ่านโทเค็นจากไฟล์
--passwordstringรหัสผ่านของ Gateway
--password-filestringอ่านรหัสผ่านจากไฟล์
--claude-channel-mode"auto" | "on" | "off"โหมดการแจ้งเตือนของ Claude ค่าเริ่มต้นคือ auto
-v, --verbosebooleanแสดงบันทึกโดยละเอียดบน stderr
ขอบเขตด้านความปลอดภัยและความไว้วางใจ
บริดจ์ไม่ได้สร้างการกำหนดเส้นทางขึ้นเอง แต่เปิดเผยเฉพาะการสนทนาที่ Gateway ทราบวิธีกำหนดเส้นทางอยู่แล้ว
ซึ่งหมายความว่า:
- รายการผู้ส่งที่อนุญาต การจับคู่ และความไว้วางใจระดับช่องทางยังคงเป็นส่วนหนึ่งของการกำหนดค่าช่องทาง OpenClaw ที่อยู่เบื้องล่าง
messages_sendสามารถตอบกลับผ่านเส้นทางที่จัดเก็บไว้อยู่แล้วเท่านั้น- สถานะการอนุมัติเป็นแบบสด/อยู่ในหน่วยความจำเฉพาะสำหรับเซสชันบริดจ์ปัจจุบันเท่านั้น
- การยืนยันตัวตนของบริดจ์ควรใช้การควบคุมด้วยโทเค็นหรือรหัสผ่านของ Gateway แบบเดียวกับที่ไว้วางใจให้ไคลเอ็นต์ Gateway ระยะไกลอื่น ๆ ใช้
หากการสนทนาไม่ปรากฏใน conversations_list สาเหตุตามปกติไม่ใช่การกำหนดค่า MCP แต่เป็นข้อมูลเมตาของเส้นทางในเซสชัน Gateway ที่อยู่เบื้องล่างขาดหายหรือไม่สมบูรณ์
การทดสอบ
OpenClaw มาพร้อมการทดสอบควันด้วย Docker แบบกำหนดผลลัพธ์แน่นอนสำหรับบริดจ์นี้:
pnpm test:docker:mcp-channelsการทดสอบควันนี้เรียกใช้คอนเทนเนอร์เดียว โดยเตรียมสถานะการสนทนา เริ่ม Gateway จากนั้นสร้าง openclaw mcp serve เป็นโพรเซสลูกผ่าน stdio และควบคุมในฐานะไคลเอ็นต์ MCP การทดสอบจะตรวจสอบการค้นหาการสนทนา การอ่านทรานสคริปต์ การอ่านข้อมูลเมตาของไฟล์แนบ ลักษณะการทำงานของคิวเหตุการณ์สด ตลอดจนการแจ้งเตือนช่องทางและสิทธิ์แบบ Claude ผ่านบริดจ์ MCP บน stdio จริง การกำหนดเส้นทางการส่งขาออก (messages_send ที่นำเส้นทางการสนทนาซึ่งจัดเก็บไว้กลับมาใช้) ครอบคลุมแยกต่างหากด้วยการทดสอบหน่วยใน src/mcp/channel-server.test.ts
นี่เป็นวิธีที่เร็วที่สุดในการพิสูจน์ว่าบริดจ์ทำงานได้โดยไม่ต้องเชื่อมต่อบัญชี 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แสดงคำแนะนำเกี่ยวกับทรานสปอร์ต การยืนยันตัวตน ระยะหมดเวลา ตัวกรอง และการเรียกเครื่องมือแบบขนานที่ผ่านการแก้ค่าแล้ว โดยไม่เชื่อมต่อdoctorตรวจสอบข้อกำหนดที่บันทึกไว้เพื่อค้นหาปัญหาการตั้งค่าภายในเครื่อง เช่น คำสั่ง stdio ที่ขาดหาย ไดเรกทอรีทำงานที่ไม่ถูกต้อง ไฟล์ TLS ที่ขาดหาย เซิร์ฟเวอร์ที่ปิดใช้งาน ค่าเฮดเดอร์/สภาพแวดล้อมที่ละเอียดอ่อนซึ่งระบุโดยตรง และการอนุญาต OAuth ที่ไม่สมบูรณ์doctor --probeเพิ่มการพิสูจน์การเชื่อมต่อสดแบบเดียวกับprobeหลังจากการตรวจสอบแบบสแตติกผ่านแล้วprobeเชื่อมต่อกับเซิร์ฟเวอร์ที่เลือกหรือเซิร์ฟเวอร์ที่กำหนดค่าไว้ทั้งหมด แสดงรายการเครื่องมือ และรายงานความสามารถ/ข้อมูลวินิจฉัยaddสร้างข้อกำหนดจากแฟล็กและตรวจสอบก่อนบันทึก เว้นแต่จะตั้งค่า--no-probeหรือจำเป็นต้องอนุญาต OAuth ก่อน- อะแดปเตอร์รันไทม์จะตัดสินใจขณะดำเนินการว่ารองรับรูปแบบทรานสปอร์ตใดจริง ๆ
enabled: falseเก็บเซิร์ฟเวอร์ไว้ในรายการที่บันทึก แต่ไม่รวมเซิร์ฟเวอร์นั้นในการค้นหารันไทม์แบบฝังตัวtimeoutและconnectTimeoutกำหนดระยะหมดเวลาของคำขอและการเชื่อมต่อรายเซิร์ฟเวอร์เป็นวินาทีsupportsParallelToolCalls: trueทำเครื่องหมายเซิร์ฟเวอร์ที่อะแดปเตอร์สามารถเรียกใช้พร้อมกันได้- เซิร์ฟเวอร์ HTTP สามารถใช้เฮดเดอร์แบบคงที่ การเข้าสู่ระบบ OAuth การควบคุมการตรวจสอบ TLS และพาธใบรับรอง/คีย์ mTLS
- OpenClaw แบบฝังตัวเปิดเผยเครื่องมือ MCP ที่กำหนดค่าไว้ในโปรไฟล์เครื่องมือ
codingและmessagingตามปกติ ส่วนminimalยังคงซ่อนเครื่องมือเหล่านั้น และtools.deny: ["bundle-mcp"]ปิดใช้งานอย่างชัดเจน toolFilter.includeและtoolFilter.excludeรายเซิร์ฟเวอร์จะกรองเครื่องมือ MCP ที่ค้นพบก่อนจะกลายเป็นเครื่องมือ OpenClaw- เซิร์ฟเวอร์ที่ประกาศทรัพยากรหรือพรอมต์จะเปิดเผยเครื่องมืออรรถประโยชน์สำหรับแสดงรายการ/อ่านทรัพยากร และแสดงรายการ/ดึงพรอมต์ด้วย ชื่ออรรถประโยชน์ที่สร้างขึ้นเหล่านั้น (
resources_list,resources_read,prompts_list,prompts_get) ใช้ตัวกรองรวม/ไม่รวมเดียวกัน - การเปลี่ยนแปลงรายการเครื่องมือ MCP แบบไดนามิกจะทำให้แค็ตตาล็อกที่แคชไว้สำหรับเซสชันนั้นใช้ไม่ได้ การค้นหาหรือการใช้งานครั้งถัดไปจะรีเฟรชจากเซิร์ฟเวอร์
- ความล้มเหลวซ้ำ ๆ ของคำขอเครื่องมือ/โพรโทคอล MCP จะหยุดเซิร์ฟเวอร์นั้นชั่วครู่ เพื่อไม่ให้เซิร์ฟเวอร์ที่เสียเพียงตัวเดียวใช้เวลาของรอบการทำงานทั้งหมด
- รันไทม์ MCP แบบรวมที่จำกัดขอบเขตตามเซสชันจะถูกเก็บกวาดหลังไม่มีการใช้งานเป็นเวลา
mcp.sessionIdleTtlMsมิลลิวินาที (ค่าเริ่มต้น 10 นาที ตั้งค่า0เพื่อปิดใช้งาน) และการทำงานแบบฝังตัวครั้งเดียวจะเก็บกวาดรันไทม์เหล่านั้นเมื่อสิ้นสุดการทำงาน
อะแดปเตอร์รันไทม์อาจปรับรีจิสทรีที่ใช้ร่วมกันนี้ให้อยู่ในรูปแบบที่ไคลเอ็นต์ปลายทางคาดไว้ ตัวอย่างเช่น OpenClaw แบบฝังตัวใช้ค่า transport ของ OpenClaw โดยตรง ขณะที่ Claude Code และ Gemini ได้รับค่า type แบบเนทีฟของ CLI เช่น http, sse หรือ stdio
Codex app-server ยังรองรับบล็อก codex ซึ่งระบุหรือไม่ก็ได้ในแต่ละเซิร์ฟเวอร์ นี่คือ
ข้อมูลเมตาการฉายภาพของ OpenClaw สำหรับเธรด Codex app-server เท่านั้น โดยจะไม่
เปลี่ยนแปลงเซสชัน ACP การกำหนดค่าฮาร์เนส Codex ทั่วไป หรืออะแดปเตอร์รันไทม์อื่น ๆ
ใช้ codex.agents ที่ไม่ว่างเพื่อฉายเซิร์ฟเวอร์เฉพาะไปยัง id ของเอเจนต์ OpenClaw
ที่ระบุเท่านั้น รายการเอเจนต์ที่ว่างเปล่า มีแต่ช่องว่าง หรือไม่ถูกต้องจะถูกปฏิเสธโดยการตรวจสอบ
การกำหนดค่า และถูกละเว้นจากเส้นทางการฉายภาพของรันไทม์แทนที่จะกลายเป็น
ค่าระดับโกลบอล ใช้ codex.defaultToolsApprovalMode (auto, prompt หรือ approve)
เพื่อส่งออก default_tools_approval_mode แบบเนทีฟของ Codex สำหรับเซิร์ฟเวอร์ที่เชื่อถือได้
OpenClaw จะตัดข้อมูลเมตา codex ออกก่อนส่งมอบการกำหนดค่า mcp_servers
แบบเนทีฟให้ Codex
ข้อกำหนดเซิร์ฟเวอร์ MCP ที่บันทึกไว้
คำสั่ง:
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จำแนกทรานสปอร์ตที่กำหนดค่าไว้โดยไม่เชื่อมต่อ--verboseรวมรายละเอียดการเปิดใช้ ระยะหมดเวลา OAuth ตัวกรอง และการเรียกแบบขนานที่ผ่านการแก้ค่าแล้วdoctorดำเนินการตรวจสอบแบบสแตติกโดยไม่เชื่อมต่อ เพิ่ม--probeเมื่อต้องการให้คำสั่งตรวจสอบด้วยว่าเซิร์ฟเวอร์ที่เปิดใช้งานสามารถเชื่อมต่อได้probeเชื่อมต่อและรายงานจำนวนเครื่องมือ การรองรับทรัพยากร/พรอมต์ การรองรับการเปลี่ยนแปลงรายการ และข้อมูลวินิจฉัยaddยอมรับแฟล็ก stdio เช่น--command,--arg,--envและ--cwdหรือแฟล็ก HTTP เช่น--url,--transport,--header,--auth oauthรวมถึงแฟล็ก TLS ระยะหมดเวลา และการเลือกเครื่องมือsetต้องการค่าออบเจ็กต์ JSON หนึ่งรายการบนบรรทัดคำสั่งconfigureอัปเดตสถานะการเปิดใช้งาน ตัวกรองเครื่องมือ ระยะหมดเวลา OAuth, TLS และคำแนะนำการเรียกเครื่องมือแบบขนานโดยไม่แทนที่ข้อกำหนดเซิร์ฟเวอร์ทั้งหมด เพิ่ม--probeเพื่อตรวจสอบเซิร์ฟเวอร์ที่อัปเดตก่อนบันทึกtoolsอัปเดตตัวกรองเครื่องมือรายเซิร์ฟเวอร์ รายการรวม/ไม่รวมคือชื่อเครื่องมือ MCP และ glob แบบง่ายของ*loginเรียกใช้โฟลว์ OAuth สำหรับเซิร์ฟเวอร์ HTTP ที่กำหนดค่าด้วยauth: "oauth"การเรียกใช้ครั้งแรกจะแสดง URL การอนุญาต ให้เรียกใช้อีกครั้งด้วย--codeหลังจากอนุมัติlogoutล้างข้อมูลรับรอง OAuth ที่จัดเก็บไว้สำหรับเซิร์ฟเวอร์ที่ระบุ โดยไม่ลบข้อกำหนดเซิร์ฟเวอร์ที่บันทึกไว้reloadกำจัดรันไทม์ MCP ภายในโพรเซสที่แคชไว้สำหรับโพรเซส CLI ปัจจุบันเท่านั้น โพรเซส Gateway หรือเอเจนต์ที่อยู่ในอีกโพรเซสหนึ่งยังคงต้องใช้เส้นทางการโหลดใหม่หรือรีสตาร์ตของตนเอง- ใช้
transport: "streamable-http"สำหรับเซิร์ฟเวอร์ Streamable HTTP MCP นอกจากนี้openclaw mcp setยังปรับtype: "http"แบบเนทีฟของ CLI ให้อยู่ในรูปแบบการกำหนดค่ามาตรฐานเดียวกันเพื่อความเข้ากันได้ 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จำกัดขอบเขตเซิร์ฟเวอร์ระบบไฟล์ให้อยู่ในโครงสร้างไดเรกทอรีที่เล็กที่สุดซึ่งเอเจนต์ควรอ่านหรือแก้ไข
หน่วยความจำ
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 อยู่ และคำสั่งสามารถแปลค่าได้จากสภาพแวดล้อมที่กำหนดค่าไว้
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 เมื่อเซิร์ฟเวอร์ระยะไกลรองรับ หากเซิร์ฟเวอร์ต้องใช้ส่วนหัวแบบคงที่ ให้หลีกเลี่ยงการคอมมิต bearer token แบบค่าตรงตัว
เดสก์ท็อป/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เซิร์ฟเวอร์ควบคุมเดสก์ท็อปโดยตรงจะรับช่วงสิทธิ์ของกระบวนการที่เซิร์ฟเวอร์เปิดใช้งาน ใช้ตัวกรองเครื่องมือที่จำกัดและพรอมต์ขอสิทธิ์ระดับระบบปฏิบัติการ
รูปแบบเอาต์พุต 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": true, "path": "/home/user/.openclaw/openclaw.json", "servers": [ { "name": "docs", "ok": true, "issues": [ { "level": "warning", "message": "ข้อมูลรับรอง OAuth ยังไม่ได้รับอนุญาต ให้เรียกใช้ openclaw mcp login docs" } ] } ]}doctor --json จบการทำงานด้วยรหัสที่ไม่ใช่ศูนย์เมื่อเซิร์ฟเวอร์ที่เปิดใช้งานและได้รับการตรวจสอบเซิร์ฟเวอร์ใดก็ตามมีปัญหาระดับ error ปัญหา warning และ info จะได้รับการรายงาน แต่ไม่ทำให้คำสั่งล้มเหลวด้วยตัวเอง
probe --json
{ "generatedAt": "2026-05-31T09:00:00.000Z", "servers": { "docs": { "launch": "streamable-http https://mcp.example.com/mcp", "tools": 2, "resources": true, "listChanged": { "tools": true, "resources": false, "prompts": false } } }, "tools": ["docs__read_page", "docs__search"], "diagnostics": []}probe --json เปิดเซสชันไคลเอนต์ MCP แบบสดและพิมพ์ผลลัพธ์โดยตรง ซึ่งแตกต่างจาก status/doctor ตรงที่เอาต์พุตไม่มีฟิลด์ path ระดับบนสุด คีย์ resources และ prompts จะปรากฏเฉพาะเมื่อเซิร์ฟเวอร์ประกาศความสามารถนั้นจริง ๆ (เซิร์ฟเวอร์ที่ไม่มีพรอมต์จะละคีย์ prompts แทนที่จะรายงาน false) ใช้ probe เพื่อยืนยันการเข้าถึงและความสามารถ ไม่ใช่เพื่อตรวจสอบการกำหนดค่าแบบคงที่
ตัวอย่างรูปแบบการกำหนดค่า:
{ "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 |
ไฟล์ปฏิบัติการที่จะเรียกใช้ (จำเป็น) |
args |
อาร์เรย์ของอาร์กิวเมนต์บรรทัดคำสั่ง |
env |
ตัวแปรสภาพแวดล้อมเพิ่มเติม |
cwd / workingDirectory |
ไดเรกทอรีทำงานสำหรับกระบวนการ |
การส่งผ่าน SSE / HTTP
เชื่อมต่อกับเซิร์ฟเวอร์ MCP ระยะไกลผ่าน HTTP Server-Sent Events
| ฟิลด์ | คำอธิบาย |
|---|---|
url |
URL แบบ HTTP หรือ HTTPS ของเซิร์ฟเวอร์ระยะไกล (จำเป็น) |
headers |
แมปคีย์-ค่าของส่วนหัว HTTP ที่ไม่บังคับ (เช่น โทเค็นการยืนยันตัวตน) |
connectionTimeoutMs |
ระยะหมดเวลาการเชื่อมต่อต่อเซิร์ฟเวอร์เป็นมิลลิวินาที (ไม่บังคับ) |
connectTimeout |
ระยะหมดเวลาการเชื่อมต่อต่อเซิร์ฟเวอร์เป็นวินาที (ไม่บังคับ) |
timeout / requestTimeoutMs |
ระยะหมดเวลาคำขอ MCP ต่อเซิร์ฟเวอร์เป็นวินาทีหรือมิลลิวินาที |
auth: "oauth" |
ใช้ข้อมูลรับรอง MCP OAuth ที่บันทึกโดย openclaw mcp login |
sslVerify |
ตั้งค่าเป็น false เฉพาะสำหรับปลายทาง HTTPS ส่วนตัวที่เชื่อถืออย่างชัดเจนเท่านั้น |
clientCert / clientKey |
พาธใบรับรองและคีย์ไคลเอนต์ mTLS |
supportsParallelToolCalls |
ระบุว่าการเรียกพร้อมกันปลอดภัยสำหรับเซิร์ฟเวอร์นี้ |
ตัวอย่าง:
{ "mcp": { "servers": { "remote-tools": { "url": "https://mcp.example.com", "auth": "oauth", "timeout": 20, "headers": { "Authorization": "Bearer <token>" } } } }}ค่าที่ละเอียดอ่อนใน url (ข้อมูลผู้ใช้) และ headers จะถูกปกปิดในบันทึกและเอาต์พุตสถานะ openclaw mcp doctor จะแจ้งเตือนเมื่อรายการ headers หรือ env ที่ดูเหมือนมีข้อมูลละเอียดอ่อนมีค่าตรงตัว เพื่อให้ผู้ดูแลระบบย้ายค่าเหล่านั้นออกจากการกำหนดค่าที่คอมมิตไว้
ขั้นตอนการทำงาน OAuth
OAuth ใช้สำหรับเซิร์ฟเวอร์ MCP แบบ HTTP ที่ประกาศขั้นตอน OAuth ของ MCP ส่วนหัว Authorization แบบคงที่จะถูกละเว้นสำหรับเซิร์ฟเวอร์ขณะที่เปิดใช้ auth: "oauth" ข้อมูลรับรองที่บันทึกโดย openclaw mcp login ใช้งานได้กับ MCP แบบฝัง ตัวเรียกใช้ CLI และเซิร์ฟเวอร์แอป Codex ภายในเครื่อง
จนกว่าจะมีข้อมูลรับรอง OpenClaw จะละเว้นเฉพาะเซิร์ฟเวอร์ MCP นั้นจากรันไทม์ของเอเจนต์ แทนที่จะทำให้รอบการทำงานของเอเจนต์ล้มเหลว จากนั้นผู้ดูแลระบบหรือเอเจนต์ที่เข้าถึงเชลล์ได้สามารถเรียกใช้ openclaw mcp login <name> และใช้เซิร์ฟเวอร์ในรอบถัดไป
เมื่อบริการ MCP ระยะไกลมีโปรไฟล์การยืนยันตัวตน OpenClaw แยกต่างหากที่รองรับการรีเฟรชอยู่แล้ว คุณสามารถตั้งค่า oauth.authProfileId เพิ่มเติมได้ OpenClaw จะรีเฟรชแหล่งข้อมูลรับรองแหล่งใดแหล่งหนึ่งก่อนฉายเข้าสู่รันไทม์ และส่งเฉพาะ access token ปัจจุบันไปยังไคลเอนต์ MCP ปลายทาง
บันทึกเซิร์ฟเวอร์
เพิ่มหรืออัปเดตเซิร์ฟเวอร์ด้วย auth: "oauth" และข้อมูลเมตา OAuth ที่ไม่บังคับ
openclaw mcp set docs '{"url":"https://mcp.example.com/mcp","transport":"streamable-http","auth":"oauth","oauth":{"scope":"docs.read"}}'สำหรับ bearer ที่มีโปรไฟล์การยืนยันตัวตนรองรับ ให้บันทึกการเชื่อมโยงโปรไฟล์:
openclaw mcp set docs '{"url":"https://mcp.example.com/mcp","transport":"streamable-http","auth":"oauth","oauth":{"authProfileId":"docs:mcp"}}'เริ่มเข้าสู่ระบบ
เรียกใช้คำสั่งเข้าสู่ระบบเพื่อสร้างคำขออนุญาต
openclaw mcp login docsOpenClaw พิมพ์ URL การอนุญาตและจัดเก็บสถานะ verifier OAuth ชั่วคราวไว้ใต้ไดเรกทอรีสถานะของ OpenClaw
ดำเนินการให้เสร็จด้วยรหัส
หลังจากอนุมัติในเบราว์เซอร์แล้ว ให้ส่งรหัสที่ได้รับกลับไปยัง OpenClaw.
openclaw mcp login docs --code abc123ตรวจสอบการอนุญาต
ใช้สถานะหรือเครื่องมือตรวจสอบเพื่อยืนยันว่ามีโทเค็นอยู่
openclaw mcp status --verboseopenclaw mcp doctor docs --probeล้างข้อมูลประจำตัว
การออกจากระบบจะลบข้อมูลประจำตัว OAuth ที่จัดเก็บไว้ แต่ยังคงคำจำกัดความเซิร์ฟเวอร์ที่บันทึกไว้
openclaw mcp logout docsหากผู้ให้บริการหมุนเวียนโทเค็นหรือสถานะการอนุญาตค้าง ให้เรียกใช้ openclaw mcp logout <name> แล้วทำ login ซ้ำ logout สามารถล้างข้อมูลประจำตัวของเซิร์ฟเวอร์ HTTP ที่บันทึกไว้ได้ แม้จะนำ auth: "oauth" ออกจากการกำหนดค่าแล้ว ตราบใดที่ชื่อและ URL ของเซิร์ฟเวอร์ยังคงระบุรายการในที่เก็บข้อมูลประจำตัวได้
การรับส่งข้อมูล HTTP แบบสตรีมได้
streamable-http เป็นตัวเลือกการรับส่งข้อมูลเพิ่มเติมนอกเหนือจาก sse และ stdio โดยใช้การสตรีมผ่าน HTTP สำหรับการสื่อสารแบบสองทิศทางกับเซิร์ฟเวอร์ MCP ระยะไกล
| ฟิลด์ | คำอธิบาย |
|---|---|
url |
URL แบบ HTTP หรือ HTTPS ของเซิร์ฟเวอร์ระยะไกล (จำเป็น) |
transport |
ตั้งเป็น "streamable-http" เพื่อเลือกการรับส่งข้อมูลนี้ หากละไว้ OpenClaw จะใช้ sse |
headers |
แมปคีย์-ค่าของส่วนหัว HTTP ที่ระบุหรือไม่ก็ได้ (เช่น โทเค็นการยืนยันตัวตน) |
connectionTimeoutMs |
ระยะหมดเวลาการเชื่อมต่อเฉพาะเซิร์ฟเวอร์ในหน่วย ms (ระบุหรือไม่ก็ได้) |
connectTimeout |
ระยะหมดเวลาการเชื่อมต่อเฉพาะเซิร์ฟเวอร์ในหน่วยวินาที (ระบุหรือไม่ก็ได้) |
timeout / requestTimeoutMs |
ระยะหมดเวลาคำขอ MCP เฉพาะเซิร์ฟเวอร์ในหน่วยวินาทีหรือ ms |
auth: "oauth" |
ใช้ข้อมูลประจำตัว MCP OAuth ที่บันทึกโดย openclaw mcp login |
sslVerify |
ตั้งเป็น false เฉพาะสำหรับปลายทาง HTTPS ส่วนตัวที่เชื่อถืออย่างชัดเจนเท่านั้น |
clientCert / clientKey |
พาธใบรับรองและคีย์ของไคลเอ็นต์ mTLS |
supportsParallelToolCalls |
คำใบ้ว่าการเรียกพร้อมกันปลอดภัยสำหรับเซิร์ฟเวอร์นี้ |
การกำหนดค่า OpenClaw ใช้ transport: "streamable-http" เป็นรูปแบบการสะกดมาตรฐาน ค่า MCP type: "http" ที่เป็นรูปแบบเนทีฟของ CLI จะได้รับการยอมรับเมื่อบันทึกผ่าน openclaw mcp set และได้รับการซ่อมแซมโดย openclaw doctor --fix ในการกำหนดค่าที่มีอยู่ แต่ 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 โดยเฉพาะที่ /settings/mcp ส่วนพาธเดิม /mcp ยังคงเป็นนามแฝง หน้านี้แสดงจำนวนเซิร์ฟเวอร์ที่กำหนดค่า สรุปการเปิดใช้งาน/OAuth/ตัวกรอง แถวการรับส่งข้อมูลของแต่ละเซิร์ฟเวอร์ ตัวควบคุมการเปิด/ปิดใช้งาน คำสั่ง CLI ที่ใช้บ่อย และตัวแก้ไขที่จำกัดขอบเขตสำหรับส่วนการกำหนดค่า mcp
ใช้หน้านี้สำหรับการแก้ไขโดยผู้ปฏิบัติงานและตรวจสอบรายการอย่างรวดเร็ว ใช้ openclaw mcp doctor --probe หรือ openclaw mcp probe เมื่อต้องการหลักฐานการทำงานจริงของเซิร์ฟเวอร์
ขั้นตอนการทำงานของผู้ปฏิบัติงาน:
- เปิด UI ควบคุมแล้วเลือก MCP
- ตรวจสอบการ์ดสรุปสำหรับเซิร์ฟเวอร์ทั้งหมด เซิร์ฟเวอร์ที่เปิดใช้งาน เซิร์ฟเวอร์ OAuth และเซิร์ฟเวอร์ที่กรอง
- ใช้แต่ละแถวของเซิร์ฟเวอร์เพื่อดูคำใบ้เกี่ยวกับการรับส่งข้อมูล การยืนยันตัวตน ตัวกรอง ระยะหมดเวลา และคำสั่ง
- สลับการเปิดใช้งานเมื่อต้องการเก็บคำจำกัดความไว้แต่ไม่รวมไว้ในการค้นหาระหว่างรันไทม์
- แก้ไขส่วนการกำหนดค่า
mcpที่จำกัดขอบเขต สำหรับการเปลี่ยนแปลงเชิงโครงสร้าง เช่น เซิร์ฟเวอร์ใหม่ ส่วนหัว TLS เมทาดาทา OAuth หรือตัวกรองเครื่องมือ - เลือก Save เพื่อคงการกำหนดค่าไว้เท่านั้น หรือ Save & Publish เพื่อนำไปใช้ผ่านพาธการกำหนดค่าของ Gateway
- เรียกใช้
openclaw mcp doctor --probeเมื่อต้องการหลักฐานการทำงานจริงว่าเซิร์ฟเวอร์ที่แก้ไขเริ่มทำงานและแสดงรายการเครื่องมือได้
หมายเหตุ:
- ส่วนย่อยคำสั่งจะใส่ชื่อเซิร์ฟเวอร์ไว้ในเครื่องหมายคำพูด เพื่อให้ชื่อที่ไม่ปกติยังคงคัดลอกไปใช้ในเชลล์ได้
- ค่าที่แสดงซึ่งมีลักษณะคล้าย URL จะถูกปกปิดก่อนเรนเดอร์เมื่อมีข้อมูลประจำตัวฝังอยู่
- หน้านี้จะไม่เริ่มการรับส่งข้อมูล MCP ด้วยตนเอง
- รันไทม์ที่ทำงานอยู่อาจต้องใช้
openclaw mcp reloadการเผยแพร่การกำหนดค่า Gateway หรือการเริ่มกระบวนการใหม่ ขึ้นอยู่กับว่ากระบวนการใดเป็นเจ้าของไคลเอ็นต์ MCP
แอป MCP
OpenClaw สามารถเรนเดอร์เครื่องมือที่ใช้งานส่วนขยาย MCP Apps ที่เสถียรได้ แอปเป็นแบบเลือกใช้ เนื่องจาก HTML มาจากเซิร์ฟเวอร์ MCP ที่กำหนดค่า และสามารถขอเครื่องมือหรือทรัพยากรที่แอปมองเห็นได้จากเซิร์ฟเวอร์เดียวกัน
เปิดใช้งานบริดจ์โฮสต์:
openclaw config set mcp.apps.enabled true --strict-jsonเริ่ม Gateway ใหม่หลังเปลี่ยนการตั้งค่านี้ เมื่อเปิดใช้งาน OpenClaw จะเริ่ม Listener HTTP(S) สำหรับแซนด์บ็อกซ์เท่านั้นบนพอร์ต Gateway บวกหนึ่ง (สำหรับ Gateway เริ่มต้นคือ 18790) UI ควบคุมจะโหลดแอปจากต้นทางที่แยกต่างหากนี้ Listener จะไม่ให้บริการ UI ควบคุม เส้นทาง Gateway ที่ผ่านการยืนยันตัวตน หรือข้อมูลผู้ใช้
การเชื่อมต่อ Gateway โดยตรงจำเป็นต้องเข้าถึงทั้งสองพอร์ต หากพร็อกซีย้อนกลับหรือตัวสิ้นสุด TLS เปิดให้เข้าถึง UI ควบคุม ให้กำหนดต้นทางสาธารณะแยกต่างหากสำหรับแอป และพร็อกซีเฉพาะต้นทางนั้นไปยัง Listener แซนด์บ็อกซ์:
{ mcp: { apps: { enabled: true, sandboxOrigin: "https://mcp-apps.example.com", sandboxPort: 18790, }, },}ต้นทางแซนด์บ็อกซ์ต้องแตกต่างจากต้นทางของ UI ควบคุม ห้ามโฮสต์เนื้อหาอื่นที่ผ่านการยืนยันตัวตนหรือมีความละเอียดอ่อนบนต้นทางนี้
ตัวอย่างเช่น สามารถกำหนดค่าเดโม React พื้นฐานอย่างเป็นทางการได้ดังนี้:
{ mcp: { apps: { enabled: true }, servers: { "basic-react": { command: "npx", args: ["-y", "@modelcontextprotocol/server-basic-react", "--stdio"], }, }, },}ขอบเขตด้านพฤติกรรมและความปลอดภัย:
- OpenClaw ประกาศส่วนขยาย
io.modelcontextprotocol/uiเฉพาะเมื่อเปิดใช้งานแอปเท่านั้น - เรนเดอร์เฉพาะทรัพยากร
ui://ที่มีชนิด MIME ตรงกับtext/html;profile=mcp-appทุกประการ - ทรัพยากร UI จำกัดไว้ที่ 2 MiB วางไว้หลังพร็อกซี iframe สองชั้นบนต้นทางภายนอกโดยเฉพาะ โหลดเข้าสู่ต้นทางแอปภายในแบบทึบ และถูกจำกัดด้วย CSP ที่ได้มาจากเมทาดาทาของทรัพยากร
- เครื่องมือสำหรับแอปเท่านั้น (
_meta.ui.visibility: ["app"]) จะไม่อยู่ในรายการเครื่องมือของโมเดล แอปเรียกใช้ได้เฉพาะเครื่องมือที่แอปมองเห็นได้บนเซิร์ฟเวอร์เจ้าของ ซึ่งผ่านนโยบายเครื่องมือ OpenClaw ที่มีผลสำหรับการรันที่สร้างมุมมองนั้นด้วย - สิทธิ์ของแอปที่ผูกกับต้นทาง เช่น กล้อง ไมโครโฟน และตำแหน่งทางภูมิศาสตร์ จะไม่ได้รับอนุญาตขณะที่เอกสารแอปภายในใช้ต้นทางแบบทึบเพื่อแยกแอปออกจากกัน
- HTML ของแอป อาร์กิวเมนต์เครื่องมือแบบสมบูรณ์ และผลลัพธ์ดิบ จะอยู่ในสิทธิ์เช่ามุมมองในหน่วยความจำระยะสิบนาทีที่มีขอบเขตจำกัด และจะไม่ถูกเขียนลงดิสก์หรือคัดลอกไปยังเมทาดาทาตัวอย่างทรานสคริปต์ ทรานสคริปต์จัดเก็บเพียงตัวอธิบายเซิร์ฟเวอร์/เครื่องมือ/ทรัพยากรที่มีขอบเขตจำกัดซึ่งผูกกับ ID การเรียกใช้เครื่องมือเดิม หลัง Gateway เริ่มใหม่ UI ควบคุมสามารถตรวจสอบตัวอธิบายนั้นกับทรานสคริปต์เซสชันที่ผ่านการยืนยันตัวตนและดึงทรัพยากร
ui://อีกครั้ง มุมมองที่สร้างขึ้นใหม่จะเป็นแบบอ่านอย่างเดียวจนกว่าการรันใหม่จะกำหนดสิทธิ์เครื่องมือปัจจุบัน openclaw security auditจะแสดงคำเตือนขณะที่บริดจ์เปิดใช้งานอยู่ ปิดใช้งานด้วยopenclaw config set mcp.apps.enabled false --strict-jsonเมื่อไม่จำเป็นต้องใช้
ข้อจำกัดปัจจุบัน
หน้านี้อธิบายบริดจ์ตามที่เผยแพร่ในปัจจุบัน
ข้อจำกัดปัจจุบัน:
- การค้นหาการสนทนาขึ้นอยู่กับเมทาดาทาเส้นทางเซสชัน Gateway ที่มีอยู่
- ยังไม่มีโปรโตคอลพุชทั่วไปนอกเหนือจากอะแดปเตอร์เฉพาะ Claude
- ยังไม่มีเครื่องมือแก้ไขข้อความหรือแสดงปฏิกิริยา
- การรับส่งข้อมูล HTTP/SSE/streamable-http เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลเพียงเครื่องเดียว ยังไม่มีต้นทางอัปสตรีมแบบมัลติเพล็กซ์
permissions_list_openรวมเฉพาะการอนุมัติที่ตรวจพบขณะที่บริดจ์เชื่อมต่ออยู่