การแก้ปัญหา MCP Authentication ในระดับ Scale
คุณสร้าง MCP server ขึ้นมา มันทำงานได้ดีบนแล็ปท็อปของคุณ ผู้ช่วย AI ของคุณสามารถสร้าง Jira tickets และคิวรีฐานข้อมูลได้ ทุกอย่างดูเหมือนจะไปได้สวย จนกระทั่งเพื่อนร่วมทีมขอใช้งานมัน
หากคุณต้องการขาย MCP ของคุณในรูปแบบผลิตภัณฑ์ คุณจะพบกับปัญหาใหม่ คุณต้องรองรับผู้ใช้งานหลายคน ซึ่งผู้ใช้แต่ละคนจำเป็นต้องมี API keys และการเข้าถึงที่ปลอดภัยเป็นของตัวเอง
นักพัฒนาส่วนใหญ่มักจะตกม้าตายตรงนี้ โดยพวกเขามักจะใช้วิธีการที่ไม่ดีอยู่ 2 แบบ
แบบแรกคือการตั้งค่าด้วยตัวเอง (manual setup) คุณบอกให้ผู้ใช้ clone repo, ติดตั้ง dependencies และตั้งค่า local environment keys ซึ่งต้องใช้เวลาหลายชั่วโมง และผู้ใช้ส่วนใหญ่จะล้มเลิกไปก่อนที่จะทำเสร็จ
แบบที่สองคือฝันร้ายของระบบ serverless คุณ deploy ไปที่ Cloud Run หรือ Vercel แต่เนื่องจากแพลตฟอร์ม serverless ไม่มีการเก็บ session ทำให้ทุกๆ request จะวิ่งไปที่ instance ใหม่เสมอ ผู้ใช้ของคุณจะติดอยู่ในลูป คือพอ authenticate เสร็จ คลิกครั้งต่อไปก็ต้อง authenticate ใหม่ นี่ไม่ใช่ผลิตภัณฑ์ แต่มันคือต้นแบบที่พังๆ
เราแก้ปัญหานี้ที่ BrainGrid โดยเปลี่ยนจากเครื่องมือที่ใช้เฉพาะในเครื่อง (local tool) ไปสู่โครงสร้างพื้นฐานที่พร้อมใช้งานจริง (production-ready infrastructure) และนี่คือวิธีที่เราทำ
- ใช้ Redis Session Store: เนื่องจาก instance ของ serverless จะหายไปและเริ่มใหม่ได้ตลอดเวลา คุณจึงไม่สามารถเก็บ session ไว้ใน memory ได้ ให้ใช้ Redis เพื่อรักษาข้อมูล session ให้คงอยู่ข้ามทุก instance
- ใช้การทำ Multi-Tier Caching: ตรวจสอบใน local memory ก่อน หากไม่พบจึงค่อยตรวจสอบใน Redis วิธีนี้จะช่วยป้องกันการทำ JWT validation ที่สิ้นเปลืองในทุกๆ request
- เข้ารหัสข้อมูลที่สำคัญ: ใช้ AES-256-GCM ในการเข้ารหัสข้อมูล session ก่อนนำไปเก็บใน Redis เพื่อรักษาความปลอดภัยของข้อมูลผู้ใช้
- ใช้รูปแบบ OAuth ที่ถูกต้อง: MCP clients คาดหวัง discovery flows ที่เฉพาะเจาะจง คุณต้องจัดรูปแบบ WWW-Authenticate headers ให้ถูกต้องเพื่อหลีกเลี่ยงข้อผิดพลาด
- ปรับแต่งเพื่อความเร็ว: การทำ JWT validation จะเพิ่ม latency การทำ caching สำหรับ session ที่ผ่านการตรวจสอบแล้วจะช่วยลดเวลาในการตอบสนอง (response times) ลงได้อย่างมาก
ผลลัพธ์ที่ได้คือระบบที่สามารถขยายตัว (scale) จากผู้ใช้หนึ่งคนไปจนถึงหนึ่งพันคนได้ โดยมีค่าใช้จ่ายในการรันที่ต่ำมาก และสามารถเชื่อมต่อกับผู้ให้บริการอย่าง WorkOS หรือ Auth0 ได้อย่างง่ายดาย
เลิกสร้างเครื่องมือเพื่อใช้เอง แล้วเริ่มสร้างโครงสร้างพื้นฐานเพื่อลูกค้าของคุณ