ก่อนต่อ AI เข้ากับ Odoo 20 ต้องเลือกก่อนว่าจะให้มันทำอะไรได้
สมมติว่าผู้จัดการคลังถาม AI ว่า “สินค้ารุ่นนี้เหลือเท่าไร และมีรายการจองค้างอยู่ไหม” คำถามแรกคือ AI อ่านข้อมูลได้หรือไม่ แต่คำถามถัดไปสำคัญกว่า ถ้าพนักงานถามต่อว่า “ช่วยสร้างใบสั่งขายให้ลูกค้ารายนี้ด้วย” ระบบจะอนุญาตให้สร้างหรือแก้ไขข้อมูลหรือเปล่า
Odoo 20 มีเอกสารสำหรับเชื่อม external AI agent ผ่าน MCP server เพื่ออ่านหรือแก้ไขข้อมูลในฐานข้อมูล Odoo โดย client จะเรียกใช้ tools ที่เปิดให้เห็นตามคำสั่งของผู้ใช้ Odoo, AI MCP server Odoo ประกาศ Odoo 20 เมื่อวันที่ 24 กันยายน 2569 ในบทความ “Meet Odoo 20” แต่การเชื่อมต่อ MCP เป็นงานที่เจ้าของฐานข้อมูลต้องกำหนดเอง ไม่ใช่สิ่งที่ควรเปิดตามเดโมทันที Odoo, Meet Odoo 20
ประเด็นจึงไม่ใช่แค่เลือก AI client ให้ได้ แต่ต้องตัดสินใจว่า tools ใดควรถูกเปิด ใครเป็นเจ้าของ API key และสิทธิ์ของผู้ใช้นั้นพอสำหรับงานแค่ไหน
MCP ของ Odoo ทำให้ AI แตะข้อมูลอย่างไร
ในลำดับการทำงานของ Odoo ผู้ใช้ตั้งค่า client ด้วยรายละเอียด server และ authentication key เมื่อเชื่อมต่อสำเร็จ client จะขอรายการ AI tools หรือ Server Actions ที่เปิดไว้ จากนั้นผู้ใช้พิมพ์คำสั่ง client ขอให้ server เรียก tool ที่เกี่ยวข้อง และส่งผลลัพธ์กลับมาให้ผู้ใช้ Odoo, AI MCP server
เอกสารนี้อธิบายความสามารถของ MCP server ไม่ได้ยืนยันว่า agent ทุกตัวจะตีความคำสั่งได้เหมือนกัน หรือว่าทุก tool จะเปิดใช้ได้ในทุกฐานข้อมูล ดังนั้นเจ้าของระบบควรทดสอบ client, รุ่น Odoo, โมดูล และการตั้งค่าจริงของตนเองก่อนใช้งาน
จุดที่ควรจำคือ AI ไม่ได้มีสิทธิ์แยกออกมาแบบลอย ๆ การเรียกแต่ละครั้งใช้ API key เพื่อยืนยันตัวตนและ permissions ของผู้ใช้ Odoo คนนั้น สิทธิ์ของผู้ใช้จึงกลายเป็นขอบเขตพื้นฐานของสิ่งที่ client จะขอให้ server ทำได้
จุดตัดสินใจอยู่ที่ tools และสิทธิ์
เมื่อเชื่อมต่อ server แล้ว Odoo ระบุว่า database จะเปิด tools พื้นฐาน 5 รายการให้ client เห็นโดยค่าเริ่มต้น ได้แก่ AI Tool: Get Fields, AI Tool: Get Models, AI Tool: MCP Retrieve initial context, AI Tool: Search และ AI Tool: Read group Odoo, AI MCP server
เครื่องมือที่เหลือจะยังซ่อนจาก client จนกว่าจะมีคนเปิดเองใน Settings > Technical > Server Actions โดยเลือก Available in MCP ใน Usage tab นี่คือจุดที่ทีมควรทำ inventory ก่อนเชื่อมต่อจริง เพราะการเปิด tool คือการเพิ่มชนิดของการกระทำที่ client มองเห็นและอาจเรียกใช้ได้
คำแนะนำของ Enersys คือเริ่มจากงานที่ต้องอ่านข้อมูลก่อน เช่น ตรวจยอดคงคลังหรือค้นสถานะคำสั่งขาย แล้วค่อยพิจารณางานที่สร้างหรือแก้ไขข้อมูลเป็นรายกรณี ใครเปิด tool ต้องตอบได้ว่า tool นี้ใช้กับกระบวนการไหน ผู้ใช้คนใดจำเป็นต้องใช้ และถ้าเกิดผลลัพธ์ผิดจะตรวจพบจากหลักฐานใด
อย่ารวมคำว่า “ต่อ MCP แล้ว” กับ “AI ทำทุกอย่างใน Odoo ได้” เพราะขอบเขตจริงขึ้นกับ tools ที่เปิดและ permissions ของ API-key user ซึ่งเป็นการตั้งค่าของระบบที่ต้องตรวจสอบเป็นรายฐานข้อมูล
Readonly ไม่ใช่กำแพงความปลอดภัย
ในฟอร์ม Server Action Odoo มีช่อง Readonly Tool ให้เลือกเมื่อทีมเห็นว่า tool นั้นไม่เขียนหรือแก้ไขข้อมูลเดิม เอกสารระบุว่าช่องนี้มีไว้เพื่อบอก client ว่า tool เรียกได้โดยไม่ต้องขอ user approval อย่างชัดเจน
ข้อจำกัดอยู่ตรงนี้: Odoo ระบุด้วยว่า Readonly Tool ไม่ได้ซ่อน tool จาก AI client และไม่ได้ทำหน้าที่เป็นกฎความปลอดภัยที่บังคับให้ tool อ่านได้อย่างเดียว Odoo, AI MCP server
เพราะฉะนั้นทีมไม่ควรใช้เครื่องหมายนี้แทนการตรวจโค้ดหรือการตรวจสิทธิ์ หาก tool มีผลต่อข้อมูลหรือกระบวนการ ควรทดสอบจากบัญชีที่ใช้จริง ดูผลลัพธ์ในฐานข้อมูล และกำหนดว่า client ต้องขอการอนุมัติในจุดใด การที่ client เรียกได้อัตโนมัติไม่ได้แปลว่า Odoo อนุมัติทุกการกระทำของ agent หรือว่าการกระทำจะปลอดภัยในทุกบริบท
ตัวอย่างก่อนเปิดใช้ในงานจริง
สถานการณ์ต่อไปนี้เป็นตัวอย่างสมมติ ไม่ใช่การยืนยันว่าฐานข้อมูลของ Enersys ตั้งค่าไว้เช่นนี้
ทีมคลังต้องการให้ AI ตอบคำถามเรื่องยอดคงเหลือและสินค้าที่ถูกจองไว้ ทีมอาจเริ่มด้วยบัญชี Odoo ที่มีสิทธิ์อ่านเฉพาะโมเดลและบริษัทที่เกี่ยวข้อง เปิด tools ที่จำเป็นต่อการค้นหาและอ่านข้อมูล แล้วทดสอบว่า AI เห็นยอดของคลังที่ควรเห็นเท่านั้น ไม่เห็นราคาซื้อหรือข้อมูลของบริษัทอื่น
ถ้าทีมต้องการให้ AI สร้างหรือแก้ไขใบสั่งขาย งานนั้นควรเป็นการตัดสินใจแยกต่างหาก ต้องระบุว่าใครอนุมัติ ลูกค้ากลุ่มไหนแก้ไขได้ ฟิลด์ใดห้ามเปลี่ยน และจะตรวจรายการที่ AI สร้างอย่างไร การเปิด tool สำหรับสร้างหรือแก้ไขข้อมูลไม่ได้เกิดจากการติ๊ก Readonly และไม่ควรใช้ API key ของผู้ดูแลระบบเพียงเพราะตั้งค่าได้ง่าย
ผลทดสอบที่ควรเก็บไว้ไม่ใช่แค่ภาพว่า client เชื่อมต่อสำเร็จ แต่รวมถึงคำถามที่อ่านได้ คำสั่งที่ถูกปฏิเสธ ข้อมูลที่ถูกเปิดเผย ผลของการสร้างหรือแก้ไข record และผู้รับผิดชอบเมื่อผลไม่ตรงกับที่คาด
เช็กลิสต์วางสิทธิ์แบบค่อยเป็นค่อยไป
- กำหนดงานก่อนเปิด tool เขียนให้ชัดว่าจะให้ AI ช่วยอ่าน ค้น เปิดหน้าจอ สร้าง หรือแก้ไขอะไร อย่าเริ่มจากรายการ tools ที่มีแล้วหางานมารองรับ
- สร้างผู้ใช้สำหรับ MCP โดยเฉพาะ ใช้บัญชีที่มีสิทธิ์เท่าที่งานต้องใช้ แยกจากบัญชีผู้ดูแล และตรวจสิทธิ์ตามบริษัท คลัง โมเดล และฟิลด์ที่เกี่ยวข้อง
- เปิดเฉพาะ tools ที่มีเจ้าของ ระบุชื่อผู้อนุมัติ เหตุผลในการเปิด และวิธีปิด หากงานเลิกใช้หรือผลทดสอบไม่ผ่าน
- แยก read จาก write เริ่มด้วยงานอ่านข้อมูลก่อน งานสร้างหรือแก้ไข record ต้องมีกรณีทดสอบและผู้รับผิดชอบชัดเจน อย่าถือว่า Readonly เป็นตัวบังคับสิทธิ์
- จัดการ API key เหมือนกุญแจของผู้ใช้ Odoo ระบุว่า key มีการกำหนดระยะเวลาได้และจะแสดงให้ผู้ใช้เห็นครั้งเดียวตอนสร้าง จึงควรเก็บผ่านวิธีที่องค์กรควบคุมได้ ไม่ใส่ไว้ในแชตหรือไฟล์ที่แชร์กว้างเกินจำเป็น Odoo, AI MCP server
- ทดสอบกรณีที่ไม่ควรผ่าน ใช้บัญชี MCP ค้นข้อมูลนอกขอบเขต สั่งสร้าง record โดยไม่มีสิทธิ์ แก้ฟิลด์ที่ไม่อนุญาต และเรียก tool ที่ยังไม่ได้เปิด ผลลัพธ์ต้องปฏิเสธหรือไม่เปิดข้อมูลเกินขอบเขตตามที่ออกแบบไว้
- วางทางหยุดและทบทวน กำหนดวิธีปิด tool, ยกเลิกหรือออก key ใหม่, ตรวจ record ที่ถูกสร้างหรือแก้ไข และทบทวนเมื่อคนย้ายหน้าที่ โมดูลเปลี่ยน หรือ client เปลี่ยนรุ่น
MCP ทำให้การคุยกับข้อมูล Odoo เป็นภาษาธรรมชาติมากขึ้น แต่ความสะดวกนั้นควรเริ่มจากคำถามที่เป็นระบบว่า “จะให้ AI แตะข้อมูลอะไร ผ่าน tool ไหน ด้วยสิทธิ์ของใคร” เมื่อทีมตอบได้และมีหลักฐานจากฐานข้อมูลทดสอบแล้ว จึงค่อยขยายจากการอ่านไปสู่การเขียนข้อมูล