สำหรับสาย Developer ที่เริ่มย้ายมาใช้ OpenCode (AI Coding Assistant ตัวแรง) แล้วอยากเพิ่มเครื่องมือเสริมผ่าน MCP (Model Context Protocol) อาจจะเคยเจอการสั่งงานล้มเหลวเพราะ Copy ค่า Config มาจากตัวอื่น เช่น Claude Code หรือ Cursor ตรงๆ ไม่ได้
สาเหตุเพราะ OpenCode มีรูปแบบการตั้งค่า MCP เฉพาะตัวที่ต่างจากเจ้าอื่น วันนี้เราจะพามาดูจุดแตกต่าง พร้อมโครงสร้างแบบครบๆ ทั้ง Local และ Remote ครับ!
ความแตกต่าง: Standard Format vs OpenCode Format
บอทและ CLI ส่วนใหญ่ (เช่น Claude Code, Cursor) จะใช้ key คำว่า mcpServers และแยกคำสั่งหลักกับ Parameter ออกจากกันใน args:
แบบ Standard (ที่ใช้ใน Cursor / Claude Code):
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
แบบ OpenCode (Local MCP Server):
ใน OpenCode จะเปลี่ยน Key หลักเป็น mcp รวมเอาทั้ง command กับ args มาไว้ใน Array เดียวกัน และต้องระบุประเภทเป็น "type": "local":
{
"mcp": {
"playwright": {
"type": "local",
"command": ["npx", "-y", "@playwright/mcp@latest"],
"enabled": true
}
}
}
การตั้งค่าแบบ Remote MCP Server ใน OpenCode
หากคุณใช้งาน MCP Server ที่รันอยู่บน Remote หรือบริการอื่นผ่าน HTTP/SSE ให้เปลี่ยนประเภทเป็น "type": "remote" แล้วใส่ URL แทนคำสั่ง command ดังนี้:
{
"mcp": {
"my-remote-service": {
"type": "remote",
"url": "https://example.com/mcp",
"enabled": true
}
}
}
สรุป จุดเปลี่ยนสำคัญเมื่อตั้งค่าใน OpenCode
- เปลี่ยน Root Key: จาก
mcpServersให้เปลี่ยนเป็นmcp - กำหนด Type ชัดเจน: ต้องระบุ
"type": "local"สำหรับโปรแกรมในเครื่อง หรือ"type": "remote"สำหรับบริการผ่าน URL - รวม Command & Args (กรณี Local): ยุบรวมช่อง
commandและargsเข้าด้วยกันในรูปแบบ Array เช่น["npx", "-y", "@playwright/mcp@latest"] - ใช้ URL (กรณี Remote): เปลี่ยนมาใช้ key
urlเพื่อชี้ไปยัง Server ที่ให้บริการ
วิธีนำไปใช้งานใน OpenCode
- เปิดไฟล์ Config หลักของ OpenCode (ปกติจะอยู่ที่
~/.config/opencode/opencode.jsonหรือopencode.jsonc) - แปะ JSON ตาม Format ข้างต้นลงไป
- รันคำสั่ง
opencode mcp listใน Terminal เพื่อตรวจสอบว่า OpenCode ตรวจพบ MCP ตัวใหม่เรียบร้อยแล้ว
Tips: หาก MCP ของคุณต้องใช้ Environment Variable หรือ API Key สามารถเพิ่ม object
"environment": { "KEY": "VALUE" }ต่อท้ายเข้าไปในบล็อกของ MCP ตัวนั้นได้ทันที!
No comments:
Post a Comment