ข้ามไปเนื้อหาหลัก

เชื่อม Go Service เข้ากับ AI ด้วย MCP Adapter โดยไม่แก้ Domain

วิธีเพิ่ม Model Context Protocol (MCP) ให้บริการภาษา Go เวอร์ชัน v1.8.0 โดยไม่ต้องแก้ไขโค้ดการจัดการภายใน พร้อมตัวอย่างการทดสอบ CI

เรียบเรียงโดย AI
Inewgen
20 Oct 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
เชื่อม Go Service เข้ากับ AI ด้วย MCP Adapter โดยไม่แก้ Domain

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • เพิ่มช่องทางเชื่อมต่อ Model Context Protocol (MCP) โดยไม่แตะต้องโค้ด Domain ภายใน
  • ใช้ Official MCP Go SDK v1.8.0 สร้าง Adapter แยกต่างหาก
  • จัดการข้อผิดพลาดให้โมเดล AI อ่านเข้าใจและแก้ไขตัวเองได้
  • เขียนตรวจสอบ CI เพื่อป้องกันไม่ให้แพ็กเกจภายในนำเข้า SDK ภายนอก

เมื่อมีตั๋วงานเข้ามาว่า "ทำให้สั่งคืนเงินจากผู้ช่วย AI ได้" บริการคืนเงินของคุณอาจจะมีช่องทางใช้งานอยู่แล้วสองทาง เช่น ทีมสนับสนุนเรียกใช้ผ่าน POST /orders/{id}/refund และวิศวกรบนเวรเรียกใช้งานผ่านคำสั่งเทอร์มินัล แต่ตอนนี้เอเจนต์เขียนโค้ดหรือแชทไคลเอนต์ต้องการช่องทางที่สาม ซึ่งรองรับโปรโตคอล Model Context Protocol (MCP)

สถานการณ์นี้มักจะแบ่งออกเป็นสองแนวทาง ในแบบแรก ใครบางคนอาจจะเพิ่มแท็ก jsonschema ลงในโครงสร้างโดเมน ส่งค่าพอยเตอร์ *mcp.CallToolRequest เข้าไปยังชั้นบริการเพียงเพื่อเอาเมตาเดตาทั้งที่กฎการคืนเงินต้องนำเข้า SDK เพิ่ม ส่วนในแบบที่สอง คุณเขียนแพ็กเกจใหม่ขึ้นมาข้างๆ ตัวจัดการ HTTP และเมื่อรันคำสั่ง git diff --stat จะพบว่าไม่มีบรรทัดใดในโค้ดการผลิตภายใต้โฟลเดอร์ internal/domain และ internal/app ที่ถูกเปลี่ยนแปลงเลย

golang code editor screen software architecture

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

บทความนี้แสดงวิธีการสร้างแนวทางที่สองโดยใช้ Official MCP Go SDK ณ เวอร์ชัน v1.8.0 พร้อมทั้งตั้งค่าการตรวจสอบ CI ให้ล้มเหลวทันทีหากแพ็กเกจภายในมีการนำเข้า SDK ดังกล่าว โดยโดเมนจะรู้เพียงว่าการคืนเงินคืออะไรและอนุญาตให้ทำได้เมื่อไหร่ โดยมีการนำเข้าเฉพาะแพ็กเกจจัดการข้อผิดพลาด (errors) เท่านั้น

v1.8.0Official MCP Go SDK เวอร์ชันที่ใช้งาน

เซิร์ฟเวอร์ MCP จะทำหน้าที่เปิดเผยเครื่องมือต่างๆ ให้ไคลเอนต์เรียกใช้งาน โมเดลจะเลือกเครื่องมือที่เหมาะสมแล้วส่งคำขอมาพร้อมกับอาร์กิวเมนต์ JSON ใน Go SDK ฟังก์ชัน mcp.AddTool จะทำหน้าที่ลงทะเบียนตัวจัดการที่ระบุชนิดข้อมูลไว้แล้ว โดยเอกสารประกอบระบุว่าสีมาของข้อมูลนำเข้าจะถูกอนุมานจากชนิดข้อมูล In คำอธิบายดึงมาจากแท็กโครงสร้าง jsonschema และข้อมูลนำเข้าจะถูกตรวจสอบความถูกต้องก่อนที่ตัวจัดการจะทำงาน

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

สถาปัตยกรรมแบบ Hexagonal (Ports and Adapters) มีประโยชน์อย่างมากในสถานการณ์นี้ เพราะเมื่อมีโปรโตคอลใหม่เข้ามาอย่าง MCP ค่าใช้จ่ายในการพัฒนาจะเหลือเพียงการสร้าง Adapter ใหม่ตัวเดียว เนื่องจาก Use Case เดิมถูกออกแบบไว้ผ่าน Interface ที่ไม่รู้จัก HTTP อยู่แล้ว การออกแบบเช่นนี้ช่วยให้โค้ดมีความยืดหยุ่นและรองรับการขยายระบบในอนาคตได้ง่ายดาย

ในส่วนของการจัดการข้อผิดพลาด สเปกได้กำหนดความล้มเหลวไว้สองประเภท ได้แก่ ข้อผิดพลาดของโปรโตคอลที่เป็น JSON-RPC สำหรับเครื่องมือที่ไม่รู้จักหรือคำขอที่ผิดพลาด และข้อผิดพลาดในการรันเครื่องมือที่จะส่งผลลัพธ์กลับมาพร้อมสถานะ isError: true ซึ่งครอบคลุมถึงข้อผิดพลาดทางธุรกิจ เช่น "ทำการคืนเงินไปเรียบร้อยแล้ว" สเปกแนะนำว่าไคลเอนต์ควรส่งข้อผิดพลาดเหล่านี้ต่อไปยังโมเดลเพื่อให้มันสามารถแก้ไขตัวเองได้

"Refund must be between 1 cent and the amount paid"

บทความต้นฉบับ

ขั้นตอนสุดท้ายคือการสร้างการทดสอบเพื่อพิสูจน์ว่าโดเมนยังคงสะอาดบริสุทธิ์ คำสั่ง go list -deps จะช่วยเดินตรวจแพ็กเกจทั้งหมดที่ถูกเรียกใช้งาน เพื่อให้มั่นใจว่าไม่มีการพึ่งพาแพ็กเกจที่ไม่ควรมี และสามารถเขียนการทดสอบด้วย go list -json เพื่อตรวจสอบว่าโดเมนไม่มีการพึ่งพาภายนอกนอกเหนือจากไลบรารีมาตรฐานเลย

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้