llama.cpp รองรับ MCP แบบ stdio แล้ว · โมเดลที่รันในเครื่องสั่งงานเครื่องมือภายนอกได้เอง
llama.cpp รวมโค้ด PR #26062 เข้าโปรเจกต์หลักเรียบร้อยแล้ว ทำให้เชื่อมต่อกับเครื่องมือ MCP แบบ stdio ในเครื่องได้ครบทุกช่องทาง พร้อมเปลี่ยน WebUI ให้สั่งงานแบบ agent ได้จริง บทความนี้สรุปสิ่งที่ปลดล็อก วิธีตั้งค่า และข้อควรระวังสำคัญ

ตอนนี้เราประกอบผู้ช่วยเขียนโค้ดขึ้นมาใช้งานเองบน llama.cpp ได้แล้ว ตัวผู้ช่วยสามารถเปิดอ่านโปรเจกต์ในเครื่องและทำงานเป็นขั้นตอนได้ โดยไม่ส่งโค้ดออกไปข้างนอกเลย
llama.cpp เป็นโปรแกรมโอเพนซอร์สสำหรับรันโมเดล AI บนคอมพิวเตอร์ตัวเองแทนการเชื่อมต่อคลาวด์ ปัจจุบันมีคนกดดาวบน GitHub เกิน 122,000 ครั้ง จุดเปลี่ยนสำคัญรอบนี้เกิดจากโค้ดชุดใหญ่ใน PR #26062 ที่ ngxson เป็นหัวเรี่ยวหัวแรงในการพัฒนา ซึ่งรวมเข้าโปรเจกต์หลักเรียบร้อยแล้ว ผลลัพธ์คือ llama.cpp รองรับการใช้งาน MCP หรือ Model Context Protocol ได้ครบทุกช่องทางตามมาตรฐาน มาตรฐานนี้เปิดทางให้ AI คุยกับเครื่องมือภายนอกและแหล่งข้อมูลอื่นได้ ตั้งแต่การอ่านไฟล์ ค้นหาเว็บ เชื่อมต่อฐานข้อมูล ไปจนถึงการเรียกใช้เครื่องมือสายเขียนโค้ด
MCP คือรายชื่อเครื่องมือที่ AI หยิบไปใช้เองได้
ลองนึกภาพโปรแกรมเล็กๆ ที่ทำหน้าที่แค่อย่างเดียว คือคอยบอกว่าตัวเองมีเครื่องมืออะไรให้ใช้งานบ้าง โปรแกรมลักษณะนี้เรียกว่าเซิร์ฟเวอร์ MCP
เวลาทำงานจริง โมเดลจะถามเซิร์ฟเวอร์ก่อนว่ามีเครื่องมืออะไรบ้าง เซิร์ฟเวอร์จะส่งรายชื่อกลับมา พร้อมคำอธิบายว่าแต่ละตัวทำหน้าที่อะไรและต้องส่งค่าอะไรเข้าไป เมื่อถึงจังหวะใช้งาน โมเดลจะระบุชื่อเครื่องมือพร้อมค่าที่ต้องการ จากนั้นเซิร์ฟเวอร์จะรันคำสั่ง แล้วส่งผลลัพธ์กลับมาให้โมเดลอ่านต่อ ระบบจะทำงานวนรอบแบบนี้ไปเรื่อยๆ จนกว่างานจะเสร็จ
ความสามารถนี้ทำให้เราเรียก AI ลักษณะนี้ว่า agent เพราะไม่ได้ทำแค่ตอบข้อความ แต่ลงมือทำงานเป็นขั้นตอนได้จริง และเมื่อทุกคนพัฒนาตามมาตรฐานเดียวกัน เครื่องมือชิ้นหนึ่งจึงนำไปเชื่อมต่อกับโปรแกรมไหนก็ได้ที่รองรับ MCP โดยไม่ต้องเขียนตัวเชื่อมต่อใหม่ทุกครั้ง
ถ้าสงสัยว่า MCP ต่างจาก Agent Skills อย่างไร บทความ Agent Skills จะมาฆ่า MCP จริงไหม อธิบายไว้ว่า Agent Skills คือความรู้และสคริปต์ที่เก็บอยู่ในเครื่อง ส่วน MCP คือสะพานเชื่อมออกไปหาโลกภายนอก
ของใหม่จริงๆ คือฝั่ง stdio ไม่ใช่ MCP ทั้งก้อน

ถ้าพูดให้ชัดเจน llama.cpp ไม่ได้เพิ่งรู้จัก MCP เป็นครั้งแรก ก่อนหน้านี้โปรแกรมเชื่อมต่อกับเซิร์ฟเวอร์บนเว็บที่คุยผ่าน HTTP ได้อยู่แล้ว เพราะมี URL ให้ยิงคำขอไปหาเหมือนเว็บทั่วไป ตัวโปรแกรมฝั่งที่เรียกใช้จึงแทบไม่ต้องเขียนตัวเชื่อมอะไรเพิ่ม
สิ่งที่เพิ่มเข้ามาใหม่คือเซิร์ฟเวอร์ชนิด stdio ซึ่งไม่ได้อยู่บนเว็บ แต่เป็นโปรแกรมที่รันอยู่ในเครื่องเราเอง เวลาทำงาน llama.cpp จะเปิดโปรแกรมนั้นขึ้นมาเป็นโปรแกรมลูก จากนั้นส่งข้อความผ่านช่องรับข้อมูลมาตรฐาน (stdio) ของโปรแกรม แล้วอ่านคำตอบกลับมาจากช่องส่งข้อมูล เหมือนสองโปรแกรมคุยกันโดยตรงบนเครื่องเดียวโดยไม่ต้องผ่านอินเทอร์เน็ต
แม้จะฟังดูเรียบง่าย แต่งานหลังบ้านซับซ้อนกว่ามาก เพราะ llama.cpp ต้องดูแลโปรแกรมลูกเองทั้งหมด ทั้งการเปิดทำงาน ตรวจสอบว่าโปรแกรมค้างหรือหยุดทำงานหรือไม่ สั่งเปิดใหม่เมื่อจำเป็น ไปจนถึงปิดโปรแกรมเมื่อเลิกใช้งาน โค้ดที่เพิ่มเข้ามารอบนี้จึงยาวประมาณ 2,680 บรรทัด พร้อมชุดทดสอบใหม่ 21 รายการ ครอบคลุมตั้งแต่การค้นหาและเรียกใช้เครื่องมือ ไปจนถึงการรับมือเมื่อเซิร์ฟเวอร์หยุดทำงานกลางคันหรือตอบสนองช้าจนหมดเวลา
สรุปคือ สิ่งที่เพิ่มเข้ามาไม่ใช่การรองรับ MCP ทั้งหมดตั้งแต่ต้น แต่เป็นชิ้นส่วนสุดท้ายที่เข้ามาเติมเต็มระบบให้สมบูรณ์ และเป็นชิ้นส่วนสำคัญที่เครื่องมือซึ่งต้องเข้าถึงไฟล์ในเครื่องจำเป็นต้องใช้พอดี
แชตบน WebUI ของ llama.cpp สั่งงานได้จริงแล้ว
WebUI คือหน้าเว็บสำหรับแชตที่ llama.cpp เปิดให้ใช้งานบนเบราว์เซอร์เวลาสั่งรัน llama-server จากเดิมที่เป็นเพียงช่องแชตโต้ตอบกับโมเดลทั่วไป เมื่อรวมโค้ดชุดนี้แล้ว หน้าเว็บเดิมก็ใช้งานเป็นหน้าแชตแบบ agent ได้เต็มรูปแบบ
เครื่องมือทั้งหมดที่เชื่อมต่อเข้ามาจะไปรวมกันอยู่ที่ช่องทางเรียกใช้ชื่อ /tools และสั่งงานผ่านหน้าแชตได้ โดยตั้งชื่อในรูปแบบ <server>_<tool> ที่นำชื่อเซิร์ฟเวอร์มาไว้ข้างหน้าชื่อเครื่องมือ ถ้าชื่อเครื่องมือไปซ้ำกับตัวที่มีอยู่เดิม ระบบจะข้ามเครื่องมือที่ซ้ำนั้นไป

ตัวอย่างหนึ่งที่มีการพูดคุยกันในเธรด คือการต่อ Serena เข้ากับโมเดลที่รันบนเครื่อง Serena เป็นเครื่องมือสายเขียนโค้ดที่ทำงานเป็นเซิร์ฟเวอร์ MCP เมื่อต่อแล้ว เราจะได้ผู้ช่วยเขียนโค้ดที่เดินงานเองทีละขั้น โดยไม่ต้องพึ่งพาบริการภายนอกเลยแม้แต่ตัวเดียว ทั้งนี้ Serena เป็นผลงานของอีกทีมพัฒนาและคนละโปรเจกต์กับ llama.cpp โดยเป็นเพียงตัวอย่างเครื่องมือที่นำมาเชื่อมต่อได้ ไม่ใช่เครื่องมือที่แถมมาในกล่อง
หากต้องการดูภาพรวมว่า agent ที่รันบนเครื่องประกอบด้วยองค์ประกอบอะไรบ้าง ตั้งแต่ที่อยู่อาศัย สมอง ไปจนถึงความจำ สามารถอ่านสรุปเพิ่มเติมได้ในบทความ กายวิภาคของ Local AI Agent
ตั้งค่าด้วยแฟล็ก --mcp-servers-config
วิธีใช้งานหลักคือเขียนค่าตั้งต้นลงในไฟล์ JSON หนึ่งไฟล์ แล้วใช้แฟล็กระบุตำแหน่งไฟล์ขณะสั่งรันโปรแกรม
llama-server --mcp-servers-config mcp.jsonไฟล์ mcp.json ใช้โครงสร้างแบบเดียวกับไฟล์คอนฟิกของ Cursor ซึ่งเป็นโปรแกรมเขียนโค้ดที่มี AI ช่วย ภายในไฟล์จะมีคีย์ mcpServers สำหรับระบุคำสั่งที่ใช้เปิดแต่ละเซิร์ฟเวอร์ ข้อดีของการใช้โครงสร้างร่วมกันคือ ถ้าเคยตั้งค่าไว้กับเครื่องมืออื่นอยู่แล้ว ก็นำไฟล์เดิมมาใช้งานต่อได้ทันที
อีกวิธีหนึ่งคือระบุค่าลงบนบรรทัดคำสั่งโดยตรง ซึ่งเหมาะกับการทดลองใช้งานสั้นๆ แต่มีข้อควรระวังที่ต้องพิจารณา
| วิธีตั้งค่า | เหมาะกับ | ข้อควรระวัง |
|---|---|---|
--mcp-servers-config ชี้ไปที่ไฟล์ | ใช้งานประจำ มีหลายเซิร์ฟเวอร์ | ต้องเขียนไฟล์คอนฟิกเองก่อน |
--mcp-servers-json ใส่ค่าตรงบรรทัดคำสั่ง | ลองชั่วคราว เซิร์ฟเวอร์เดียว | ค่าที่พิมพ์ไปโผล่ให้คนอื่นในเครื่องอ่านได้ผ่านรายการโปรเซส ถ้ามีคีย์ลับอยู่ในนั้นถือว่าอันตราย |
ทีมรีวิวจึงแนะนำว่าถ้าคอนฟิกมีคีย์ลับ ควรเก็บไว้ในไฟล์ หรือส่งผ่านค่าที่ตั้งไว้ในระบบ (environment variable) ชื่อ LLAMA_ARG_MCP_SERVERS_JSON แทนการพิมพ์ลงบรรทัดคำสั่งโดยตรง
นอกจากนี้ เมื่อเปิดใช้งาน MCP ตัวเซิร์ฟเวอร์จะรับคำขอเฉพาะจากภายในเครื่องตัวเองเป็นค่าเริ่มต้น เช่นเดียวกับการเปิดโหมดเครื่องมือปกติ เพื่อป้องกันไม่ให้เผลอเปิดช่องทางเชื่อมต่อไปยังภายนอก
ทำไมสายรันโมเดลในเครื่องถึงรอเรื่องนี้กันมานาน
คนที่รันโมเดลบนเครื่องตัวเองผ่านไฟล์ GGUF (รูปแบบไฟล์โมเดลที่บีบอัดมาให้คอมพิวเตอร์ทั่วไปรันไหว) มักเริ่มจากเหตุผลสองข้อ คือไม่อยากให้ข้อมูลรั่วไหลออกนอกเครื่อง และไม่อยากจ่ายค่าบริการ API รายเดือน
ทว่าที่ผ่านมา ถ้าต้องการให้โมเดลในเครื่องเชื่อมต่อกับเครื่องมือฝั่ง stdio เราจำเป็นต้องตั้งค่า proxy คั่นกลางเพื่อรับคำสั่งจากโมเดลแล้วส่งต่อให้เครื่องมืออีกทอดหนึ่ง ซึ่งกลายเป็นภาระที่ต้องดูแลเพิ่มโดยไม่ได้ช่วยเพิ่มความสามารถใหม่ๆ การอัปเดตครั้งนี้จึงช่วยตัดตัวกลางออกไปอย่างสมบูรณ์
ความคิดเห็นในชุมชน r/LocalLLaMA เป็นไปในทิศทางเดียวกัน คือยินดีที่ตัดตัวกลางออกไปได้ และถูกใจที่นำไฟล์คอนฟิกชุดเดิมไปใช้ได้ทั้งกับโมเดลที่รันบนเครื่องและบริการบนคลาวด์ โดยไม่ต้องแยกการตั้งค่าออกจากกันอีกต่อไป
คนที่จะได้ประโยชน์โดยตรงที่สุดจึงเป็นคนที่ใช้งาน llama.cpp อยู่แล้ว หรือพร้อมอัปเดตและบิลด์โค้ดด้วยตนเอง มากกว่าคนที่มองหาแอปพลิเคชันสำเร็จรูปที่กดปุ่มเดียวจบ
ของจริงยังต้องลงมือตั้งค่าเอง

เงื่อนไขข้อแรกคือรุ่นที่ใช้งานต้องรวมโค้ด PR #26062 เข้าไปแล้ว ถ้ายังเป็นรุ่นเก่ากว่านั้น จะยังไม่มีแฟล็กดังกล่าวให้ใช้งาน
ข้อสองคือเรื่องเอกสารคู่มือ มีผู้ใช้งานในเธรดระบุตรงๆ ว่า เมื่อลองทำตามคู่มือเดิมที่ติดมากับโปรแกรมกลับเชื่อมต่อ MCP ไม่สำเร็จ ต้องอ่านโพสต์แนะนำในชุมชนถึงจะเข้าใจวิธีตั้งค่า ดังนั้น คนที่เริ่มต้นใช้งานในวันนี้จึงควรเผื่อเวลาทดลองตั้งค่าไฟล์คอนฟิกและชื่อแฟล็ก มากกว่าคาดหวังว่าจะต่อติดได้ทันทีตั้งแต่ครั้งแรก
ข้อสามคือเรื่องความปลอดภัย ซึ่งมองข้ามได้ง่าย แม้การรันทุกอย่างบนเครื่องตัวเองจะช่วยลดโอกาสข้อมูลหลุดออกไปข้างนอก แต่ agent ที่มีเครื่องมือ MCP อยู่ในมือ ก็ยังสั่งส่งโค้ดขึ้นเซิร์ฟเวอร์ ลบไฟล์ หรือยิงคำสั่งไปยังระบบภายนอกได้อยู่ดี การรันในเครื่องจึงช่วยลดความเสี่ยงเรื่องข้อมูลรั่วไหลได้แค่ส่วนหนึ่ง แต่ไม่ได้แปลว่าปลอดภัยโดยอัตโนมัติ
ข้อสุดท้ายคือฟีเจอร์นี้ยังใหม่อยู่มาก ในช่วงก่อนรวมโค้ด ทีมงานได้ตรวจสอบหาจุดบกพร่องจนพบปัญหาหลายอย่าง ทั้งโปรเซสค้างที่ไม่ยอมปิดตัว การหมดเวลาที่ลากช่องทางสื่อสารพังไปทั้งรอบ รวมถึงการเปิดโปรแกรมใหม่ซ้ำๆ โดยไม่จำกัดในบางกรณี บันทึกการรีวิวระบุว่า ทีมงานได้แก้ไขปัญหาที่ตรวจพบเรียบร้อยก่อนรวมเข้าโปรเจกต์หลัก โดยเหลือเพียงบางประเด็นที่ตั้งใจยกไปพัฒนาต่อในรอบถัดไป เช่น การรองรับภาระงานหลายอย่างพร้อมกันในเซิร์ฟเวอร์เดียว
หลังจากนี้ สิ่งที่ช่วยเพิ่มความสามารถให้ผู้ช่วย AI ในเครื่อง อาจไม่ใช่การเปลี่ยนไปใช้โมเดลขนาดใหญ่ขึ้น แต่เป็นชุดเครื่องมือที่เราเลือกนำมาเชื่อมต่อให้มัน
ที่มา:
- บทความ llama.cpp now has full MCP support จาก r/LocalLLaMA
- โปรเจกต์ server: support MCP stdio by ngxson · Pull Request #26062 บน GitHub
ชอบเรื่องแนวนี้ มีอีบุ๊คฟรีให้อ่านต่อ
ChatGPT Work ฉบับเข้าใจง่าย มอบงานให้ AI ทำจนจบ ตั้งแต่งานแรกจนถึงงานอัตโนมัติ พร้อม workflow ใช้ได้จริง 8 แบบ
กดสมัครแล้วเราจะส่งเทคนิค AI และของแจกใหม่ๆ ให้ทางอีเมล เลิกรับได้ตลอด
Claude Cowork · The Business Playbook

ฉบับภาษาไทย 15 บท เรียนรู้ผ่านโปรเจกต์จำลองต่อเนื่องทั้งเล่ม ตั้งแต่ตั้งค่า Workspace จัดการไฟล์ เชื่อมแอป ตั้งระบบอัตโนมัติ จนถึงสร้าง Plugin


