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 อาจใช้ภายหลัง
ใช้ 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 แบบจำกัดขอบเขต |
| ให้ app-server ของ Codex มีเซิร์ฟเวอร์ MCP เนทีฟแบบจำกัดขอบเขต | mcp.servers.<name>.codex |
บล็อก codex ส่งผลเฉพาะต่อการฉายเธรด app-server ของ Codex และจะถูกตัดออกก่อนส่งต่อค่ากำหนดเนทีฟ |
| รันเซสชันฮาร์เนสที่โฮสต์ด้วย ACP | openclaw acp และ เอเจนต์ ACP |
โหมดบริดจ์ ACP ไม่รับการฉีดเซิร์ฟเวอร์ MCP รายเซสชัน; ให้กำหนดค่าบริดจ์ Gateway/Plugin แทน |
OpenClaw เป็นเซิร์ฟเวอร์ MCP
นี่คือเส้นทาง openclaw mcp serve
เมื่อใดควรใช้ serve
ใช้ openclaw mcp serve เมื่อ:
- Codex, Claude Code หรือไคลเอนต์ MCP อื่นควรคุยโดยตรงกับบทสนทนาช่องทางที่หนุนด้วย OpenClaw
- คุณมี OpenClaw Gateway แบบภายในเครื่องหรือระยะไกลพร้อมเซสชันที่กำหนดเส้นทางแล้ว
- คุณต้องการเซิร์ฟเวอร์ MCP เดียวที่ทำงานได้ข้ามแบ็กเอนด์ช่องทางของ OpenClaw แทนการรันบริดจ์แยกตามแต่ละช่องทาง
ใช้ openclaw acp แทนเมื่อ OpenClaw ควรโฮสต์รันไทม์เขียนโค้ดด้วยตัวเองและเก็บเซสชันเอเจนต์ไว้ภายใน OpenClaw
วิธีทำงาน
openclaw mcp serve เริ่มเซิร์ฟเวอร์ MCP แบบ stdio ไคลเอนต์ MCP เป็นเจ้าของโปรเซสนั้น ขณะที่ไคลเอนต์เปิดเซสชัน stdio ไว้ บริดจ์จะเชื่อมต่อกับ OpenClaw Gateway ภายในเครื่องหรือระยะไกลผ่าน WebSocket และเปิดเผยบทสนทนาช่องทางที่กำหนดเส้นทางผ่าน MCP
ไคลเอนต์สร้างบริดจ์
ไคลเอนต์ MCP สร้าง openclaw mcp serve
บริดจ์เชื่อมต่อกับ Gateway
บริดจ์เชื่อมต่อกับ OpenClaw Gateway ผ่าน 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เครื่องมือบริดจ์
บริดจ์ปัจจุบันเปิดเผยเครื่องมือ MCP เหล่านี้:
conversations_list
แสดงรายการบทสนทนาล่าสุดที่หนุนด้วยเซสชันและมีเมทาดาทาเส้นทางในสถานะเซสชัน Gateway อยู่แล้ว
ตัวกรองที่มีประโยชน์:
limitsearchchannelincludeDerivedTitlesincludeLastMessage
conversation_get
ส่งคืนบทสนทนาหนึ่งรายการตาม session_key โดยใช้การค้นหาเซสชัน Gateway โดยตรง
messages_read
อ่านข้อความทรานสคริปต์ล่าสุดสำหรับบทสนทนาที่หนุนด้วยเซสชันหนึ่งรายการ
attachments_fetch
แยกบล็อกเนื้อหาข้อความที่ไม่ใช่ข้อความจากข้อความทรานสคริปต์หนึ่งรายการ นี่เป็นมุมมองเมทาดาทาบนเนื้อหาทรานสคริปต์ ไม่ใช่ที่เก็บบล็อบไฟล์แนบถาวรแบบสแตนด์อโลน
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 ได้ด้วย
ปิด
--claude-channel-mode off: เฉพาะเครื่องมือ MCP มาตรฐาน
เปิด
--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 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 รู้วิธีกำหนดเส้นทางอยู่แล้วเท่านั้น
นั่นหมายความว่า:
- allowlist ของผู้ส่ง การจับคู่ และความเชื่อถือระดับช่องทางยังคงเป็นของการกำหนดค่าช่องทาง OpenClaw พื้นฐาน
messages_sendตอบกลับได้เฉพาะผ่านเส้นทางที่จัดเก็บไว้แล้ว- สถานะการอนุมัติเป็นแบบสด/อยู่ในหน่วยความจำเท่านั้นสำหรับเซสชันบริดจ์ปัจจุบัน
- การยืนยันตัวตนของบริดจ์ควรใช้การควบคุมโทเค็นหรือรหัสผ่าน Gateway แบบเดียวกับที่คุณไว้วางใจสำหรับไคลเอนต์ Gateway ระยะไกลอื่น ๆ
หากการสนทนาหายไปจาก conversations_list สาเหตุปกติมักไม่ใช่การกำหนดค่า MCP แต่เป็นข้อมูลเมตาเส้นทางที่ขาดหายหรือไม่สมบูรณ์ในเซสชัน Gateway พื้นฐาน
การทดสอบ
OpenClaw มาพร้อม Docker smoke แบบกำหนดผลได้สำหรับบริดจ์นี้:
pnpm test:docker:mcp-channelssmoke นี้:
- เริ่มคอนเทนเนอร์ Gateway ที่ seed ไว้
- เริ่มคอนเทนเนอร์ที่สองซึ่ง spawn
openclaw mcp serve - ตรวจสอบการค้นพบการสนทนา การอ่านทรานสคริปต์ การอ่านข้อมูลเมตาไฟล์แนบ พฤติกรรมคิวเหตุการณ์สด และการกำหนดเส้นทางการส่งออก
- ตรวจสอบการแจ้งเตือนช่องทางและสิทธิ์สไตล์ Claude ผ่านบริดจ์ stdio MCP จริง
นี่เป็นวิธีที่เร็วที่สุดในการพิสูจน์ว่าบริดจ์ทำงานได้โดยไม่ต้องเชื่อมบัญชี Telegram, Discord หรือ iMessage จริงเข้ากับการรันทดสอบ
สำหรับบริบทการทดสอบที่กว้างขึ้น โปรดดู การทดสอบ
การแก้ไขปัญหา
ไม่มีการส่งคืนการสนทนา
โดยปกติหมายถึงเซสชัน Gateway ยังไม่สามารถกำหนดเส้นทางได้อยู่แล้ว ให้ยืนยันว่าเซสชันพื้นฐานมีข้อมูลเมตาเส้นทางช่องทาง/ผู้ให้บริการ ผู้รับ และบัญชี/เธรดที่ไม่บังคับจัดเก็บไว้
events_poll หรือ events_wait พลาดข้อความเก่า
เป็นไปตามที่คาดไว้ คิวสดเริ่มเมื่อบริดจ์เชื่อมต่อ อ่านประวัติทรานสคริปต์เก่าด้วย messages_read
การแจ้งเตือน Claude ไม่ปรากฏ
ตรวจสอบทั้งหมดนี้:
- ไคลเอนต์เปิดเซสชัน stdio MCP ค้างไว้
--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
นิยามที่บันทึกไว้เหล่านั้นมีไว้สำหรับ runtime ที่ OpenClaw เริ่มหรือกำหนดค่าในภายหลัง เช่น OpenClaw แบบฝังตัวและอะแดปเตอร์ runtime อื่น ๆ OpenClaw จัดเก็บนิยามไว้ส่วนกลางเพื่อให้ runtime เหล่านั้นไม่จำเป็นต้องเก็บรายการเซิร์ฟเวอร์ 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 ที่ resolve แล้วโดยไม่เชื่อมต่อdoctorตรวจสอบนิยามที่บันทึกไว้เพื่อหาปัญหาการตั้งค่าในเครื่อง เช่น คำสั่ง stdio ที่หายไป ไดเรกทอรีทำงานที่ไม่ถูกต้อง ไฟล์ TLS ที่หายไป เซิร์ฟเวอร์ที่ปิดใช้งาน ค่า header/env ที่อ่อนไหวแบบ literal และการอนุญาต OAuth ที่ไม่สมบูรณ์doctor --probeเพิ่มหลักฐานการเชื่อมต่อสดแบบเดียวกับprobeหลังจากการตรวจสอบแบบ static ผ่านprobeเชื่อมต่อกับเซิร์ฟเวอร์ที่เลือกหรือเซิร์ฟเวอร์ที่กำหนดค่าทั้งหมด แสดงรายการเครื่องมือ และรายงานความสามารถ/การวินิจฉัยaddสร้างนิยามจากแฟล็กและ probe ก่อนบันทึก เว้นแต่จะตั้งค่า--no-probeหรือจำเป็นต้องอนุญาต OAuth ก่อน- อะแดปเตอร์ runtime ตัดสินใจว่า transport shape ใดที่รองรับจริงในเวลารัน
enabled: falseเก็บเซิร์ฟเวอร์ไว้ แต่แยกออกจากการค้นพบ runtime แบบฝังตัวtimeoutและconnectTimeoutตั้ง timeout คำขอและการเชื่อมต่อรายเซิร์ฟเวอร์เป็นวินาทีsupportsParallelToolCalls: trueทำเครื่องหมายเซิร์ฟเวอร์ที่อะแดปเตอร์สามารถเรียกพร้อมกันได้- เซิร์ฟเวอร์ HTTP ใช้ header แบบ static, การเข้าสู่ระบบ 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 filter เดียวกัน - การเปลี่ยนแปลงรายการเครื่องมือ MCP แบบ dynamic ทำให้แค็ตตาล็อกที่แคชไว้สำหรับเซสชันนั้นไม่ถูกต้อง; การค้นพบ/ใช้งานครั้งถัดไปจะรีเฟรชจากเซิร์ฟเวอร์
- ความล้มเหลวของคำขอ/โปรโตคอลเครื่องมือ MCP ที่เกิดซ้ำจะพักเซิร์ฟเวอร์นั้นชั่วครู่ เพื่อไม่ให้เซิร์ฟเวอร์เสียเพียงตัวเดียวใช้ทั้งเทิร์น
- runtime MCP แบบบันเดิลที่มีขอบเขตตามเซสชันจะถูกเก็บกวาดหลังจากไม่มีการใช้งานเป็นเวลา
mcp.sessionIdleTtlMsมิลลิวินาที (ค่าเริ่มต้น 10 นาที; ตั้ง0เพื่อปิดใช้งาน) และการรันแบบฝังตัวครั้งเดียวจะล้าง runtime เหล่านั้นเมื่อจบการรัน
อะแดปเตอร์ runtime อาจ normalize รีจิสทรีที่ใช้ร่วมกันนี้ให้เป็น shape ที่ไคลเอนต์ปลายทางคาดหวัง ตัวอย่างเช่น OpenClaw แบบฝังตัวใช้ค่า transport ของ OpenClaw โดยตรง ขณะที่ Claude Code และ Gemini รับค่า type แบบ native ของ CLI เช่น http, sse หรือ stdio
Codex app-server ยังรองรับบล็อก codex ที่ไม่บังคับในแต่ละเซิร์ฟเวอร์ด้วย นี่คือข้อมูลเมตาการ projection ของ OpenClaw สำหรับเธรด Codex app-server เท่านั้น; ไม่ได้เปลี่ยนเซสชัน ACP, การกำหนดค่าฮาร์เนส Codex ทั่วไป หรืออะแดปเตอร์ runtime อื่น ๆ ใช้ codex.agents ที่ไม่ว่างเพื่อ project เซิร์ฟเวอร์เข้าไปเฉพาะใน id เอเจนต์ OpenClaw ที่ระบุ รายการเอเจนต์ที่ว่าง เปล่า หรือไม่ถูกต้องจะถูกปฏิเสธโดยการตรวจสอบความถูกต้องของการกำหนดค่า และถูกละเว้นโดยเส้นทาง runtime projection แทนที่จะกลายเป็น global ใช้ codex.defaultToolsApprovalMode (auto, prompt หรือ approve) เพื่อส่งออก default_tools_approval_mode แบบ native ของ Codex สำหรับเซิร์ฟเวอร์ที่เชื่อถือได้ OpenClaw จะตัดข้อมูลเมตา codex ออกก่อนส่งมอบการกำหนดค่า mcp_servers แบบ native ให้ Codex
นิยามเซิร์ฟเวอร์ MCP ที่บันทึกไว้
OpenClaw ยังจัดเก็บรีจิสทรีเซิร์ฟเวอร์ MCP แบบเบาไว้ในการกำหนดค่าสำหรับพื้นผิวที่ต้องการนิยาม 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 ที่ resolve แล้วdoctorทำการตรวจสอบแบบ static โดยไม่เชื่อมต่อ เพิ่ม--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 ที่จัดเก็บไว้สำหรับเซิร์ฟเวอร์ที่ระบุ โดยไม่ลบนิยามเซิร์ฟเวอร์ที่บันทึกไว้reloaddispose runtime MCP ในกระบวนการที่แคชไว้ กระบวนการ Gateway หรือเอเจนต์ในอีกกระบวนการหนึ่งยังต้องมีเส้นทาง reload หรือ restart ของตัวเอง- ใช้
transport: "streamable-http"สำหรับเซิร์ฟเวอร์ Streamable HTTP MCPopenclaw mcp setยัง normalizetype: "http"แบบ native ของ CLI ให้เป็น shape การกำหนดค่า 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จำกัดขอบเขตเซิร์ฟเวอร์ระบบไฟล์ให้อยู่ในต้นไม้ไดเรกทอรีที่เล็กที่สุดที่เอเจนต์ควรอ่านหรือแก้ไข
หน่วยความจำ
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 ได้จากสภาพแวดล้อมที่กำหนดค่าไว้
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 แบบตรงตัว
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เซิร์ฟเวอร์ควบคุมเดสก์ท็อปโดยตรงจะรับสิทธิ์ของกระบวนการที่เซิร์ฟเวอร์เปิดใช้ ใช้ตัวกรองเครื่องมือที่แคบและพร้อมต์สิทธิ์ระดับระบบปฏิบัติการ
รูปแบบเอาต์พุต 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 แบบสด ใช้สำหรับพิสูจน์การเข้าถึงและความสามารถ ไม่ใช่สำหรับการตรวจสอบการกำหนดค่าแบบคงที่
ตัวอย่างรูปแบบการกำหนดค่า:
{ "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 ต่อเซิร์ฟเวอร์ หน่วยวินาทีหรือ 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 จะถูกปกปิดในบันทึกและเอาต์พุตสถานะ openclaw mcp doctor จะเตือนเมื่อรายการ headers หรือ env ที่ดูเหมือนมีความละเอียดอ่อนมีค่าแบบตรงตัว เพื่อให้ผู้ปฏิบัติงานย้ายค่าเหล่านั้นออกจากการกำหนดค่าที่ 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 เพื่อสร้างคำขออนุญาต
openclaw mcp login docsOpenClaw พิมพ์ URL การอนุญาตและจัดเก็บสถานะตัวตรวจสอบ OAuth ชั่วคราวไว้ใต้ไดเรกทอรีสถานะของ OpenClaw
Finish with the 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หากผู้ให้บริการหมุนเวียนโทเค็นหรือสถานะการอนุญาตค้างอยู่ ให้เรียกใช้ openclaw mcp logout <name> แล้วทำ login ซ้ำ logout สามารถล้างข้อมูลรับรองสำหรับเซิร์ฟเวอร์ HTTP ที่บันทึกไว้ได้ แม้หลังจากลบ auth: "oauth" ออกจากการกำหนดค่าแล้ว ตราบใดที่ชื่อเซิร์ฟเวอร์และ URL ยังระบุรายการที่เก็บข้อมูลรับรองได้
การขนส่ง Streamable HTTP
streamable-http เป็นตัวเลือกการขนส่งเพิ่มเติมควบคู่กับ sse และ stdio โดยใช้การสตรีม HTTP สำหรับการสื่อสารสองทางกับเซิร์ฟเวอร์ MCP ระยะไกล
| ฟิลด์ | คำอธิบาย |
|---|---|
url |
URL HTTP หรือ HTTPS ของเซิร์ฟเวอร์ระยะไกล (จำเป็น) |
transport |
ตั้งเป็น "streamable-http" เพื่อเลือกการขนส่งนี้; เมื่อละไว้ OpenClaw จะใช้ sse |
headers |
แผนที่คีย์-ค่าเพิ่มเติมของส่วนหัว HTTP (เช่น โทเค็น auth) |
connectionTimeoutMs |
การหมดเวลาการเชื่อมต่อต่อเซิร์ฟเวอร์ หน่วย ms (ไม่บังคับ) |
connectTimeout |
การหมดเวลาการเชื่อมต่อต่อเซิร์ฟเวอร์ หน่วยวินาที (ไม่บังคับ) |
timeout / requestTimeoutMs |
การหมดเวลาคำขอ MCP ต่อเซิร์ฟเวอร์ หน่วยวินาทีหรือ ms |
auth: "oauth" |
ใช้ที่เก็บโทเค็น MCP OAuth และ openclaw mcp login |
sslVerify |
ตั้งเป็น false เฉพาะ endpoint HTTPS ส่วนตัวที่เชื่อถืออย่างชัดเจน |
clientCert / clientKey |
เส้นทางใบรับรองและคีย์ไคลเอนต์ mTLS |
supportsParallelToolCalls |
คำใบ้ว่าการเรียกพร้อมกันปลอดภัยสำหรับเซิร์ฟเวอร์นี้ |
การกำหนดค่า OpenClaw ใช้ transport: "streamable-http" เป็นการสะกดแบบมาตรฐาน ค่า MCP แบบ CLI-native type: "http" จะถูกรับเมื่อบันทึกผ่าน 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>" } } } }}Control UI
Control UI ในเบราว์เซอร์มีหน้าการตั้งค่า MCP เฉพาะที่ /mcp หน้านี้แสดงจำนวนเซิร์ฟเวอร์ที่กำหนดค่าไว้ สรุปการเปิดใช้งาน/OAuth/ตัวกรอง แถวการขนส่งต่อเซิร์ฟเวอร์ ตัวควบคุมเปิด/ปิด คำสั่ง CLI ทั่วไป และตัวแก้ไขแบบจำกัดขอบเขตสำหรับส่วนการกำหนดค่า mcp
ใช้หน้านี้สำหรับการแก้ไขโดยผู้ปฏิบัติงานและการทำรายการสินทรัพย์อย่างรวดเร็ว ใช้ openclaw mcp doctor --probe หรือ openclaw mcp probe เมื่อต้องการหลักฐานเซิร์ฟเวอร์แบบสด
เวิร์กโฟลว์ผู้ปฏิบัติงาน:
- เปิด UI ควบคุม แล้วเลือก MCP
- ตรวจสอบการ์ดสรุปสำหรับเซิร์ฟเวอร์ทั้งหมด เซิร์ฟเวอร์ที่เปิดใช้งาน OAuth และเซิร์ฟเวอร์ที่ถูกกรอง
- ใช้แต่ละแถวของเซิร์ฟเวอร์เพื่อดูคำใบ้เกี่ยวกับ transport, auth, filter, timeout และคำสั่ง
- สลับการเปิดใช้งานเมื่อคุณต้องการเก็บคำนิยามไว้ แต่ไม่รวมไว้ในการค้นพบตอนรันไทม์
- แก้ไขส่วนการกำหนดค่า
mcpที่มีขอบเขตสำหรับการเปลี่ยนแปลงเชิงโครงสร้าง เช่น เซิร์ฟเวอร์ใหม่, headers, TLS, metadata ของ OAuth หรือ tool filters - เลือก บันทึก เพื่อคงการกำหนดค่าไว้เท่านั้น หรือ บันทึกและเผยแพร่ เพื่อปรับใช้ผ่านเส้นทางการกำหนดค่า Gateway
- รัน
openclaw mcp doctor --probeเมื่อคุณต้องการหลักฐานแบบสดว่าเซิร์ฟเวอร์ที่แก้ไขแล้วเริ่มทำงานและแสดงรายการเครื่องมือได้
หมายเหตุ:
- ส่วนย่อยคำสั่งจะครอบชื่อเซิร์ฟเวอร์ด้วยเครื่องหมายอัญประกาศ เพื่อให้ชื่อที่ไม่ปกติยังคัดลอกไปใช้ในเชลล์ได้
- ค่าที่แสดงซึ่งมีลักษณะคล้าย URL จะถูกปกปิดก่อนเรนเดอร์เมื่อมีข้อมูลรับรองฝังอยู่
- หน้านี้ไม่ได้เริ่ม MCP transports ด้วยตัวเอง
- รันไทม์ที่ใช้งานอยู่อาจต้องใช้
openclaw mcp reload, การเผยแพร่การกำหนดค่า Gateway หรือการรีสตาร์ทโปรเซส ขึ้นอยู่กับว่าโปรเซสใดเป็นเจ้าของ MCP clients
ข้อจำกัดปัจจุบัน
หน้านี้บันทึกบริดจ์ตามที่จัดส่งในปัจจุบัน
ข้อจำกัดปัจจุบัน:
- การค้นพบการสนทนาขึ้นอยู่กับ metadata ของเส้นทางเซสชัน Gateway ที่มีอยู่
- ยังไม่มีโปรโตคอล push ทั่วไปนอกเหนือจากอะแดปเตอร์เฉพาะ Claude
- ยังไม่มีเครื่องมือแก้ไขข้อความหรือรีแอ็กต์
- transport แบบ HTTP/SSE/streamable-http เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลตัวเดียว ยังไม่มี upstream แบบ multiplexed
permissions_list_openรวมเฉพาะการอนุมัติที่พบเห็นขณะบริดจ์เชื่อมต่ออยู่เท่านั้น