# การค้นหาเครื่องมือใน Claude Code: เอเจนต์ค้นหาเครื่องมือ MCP ที่ต้องการได้อย่างไร

> การค้นหาเครื่องมือใน Claude Code ทำงานอย่างไร: อะไรถูกโหลดเข้าสู่บริบททันที กลไกปิดตัวเองเมื่อใด และวิธีกำหนดค่า ENABLE_TOOL_SEARCH กับ alwaysLoad

Source: https://ailoot.ai/blog/th/claude-code-tool-search-mcp-limit/
Canonical: https://ailoot.ai/blog/th/claude-code-tool-search-mcp-limit/
Language: th
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-055
Revision: sha256-4284d37112f46ccc047bd21798282b7aa99ca0ca25b163230ae69fcb2f6765d0


หากคุณเชื่อมต่อเซิร์ฟเวอร์ MCP หลายเครื่องกับ Claude Code การค้นหาเครื่องมือจะช่วยให้โหลดเครื่องมือที่จำเป็นได้ตามต้องการ โดยไม่ต้องโหลดคำจำกัดความทั้งหมดไว้ล่วงหน้า เมื่อเริ่มทำงาน เอเจนต์จะได้รับชื่อเครื่องมือที่เลื่อนการโหลดไว้และคำแนะนำของเซิร์ฟเวอร์ จากนั้นจึงค้นหาในแคตตาล็อกเพื่อหาเครื่องมือที่ต้องการ วิธีนี้ช่วยให้ทำงานกับชุดเครื่องมือขนาดใหญ่ได้: เอกสารของ Anthropic ระบุว่าความแม่นยำในการเลือกจะลดลงเมื่อโหลดเครื่องมือพร้อมกันมากกว่า 30-50 รายการ นี่เป็นคำแนะนำทั่วไป ไม่ใช่ค่าที่วัดจากเซสชันของคุณ การค้นหาเครื่องมือเปิดใช้งานตามค่าเริ่มต้นเมื่อโมเดลรองรับ แต่แพลตฟอร์ม พร็อกซี หรือการตั้งค่าอาจปิดใช้งานได้

[เอกสาร Ailoot: API, คีย์ และการตั้งค่า](https://ailoot.ai/docs/).

## เกิดอะไรขึ้นกับบริบทเมื่อไม่มีการค้นหาเครื่องมือ

เซิร์ฟเวอร์ MCP ที่เชื่อมต่อแต่ละเครื่องจะเพิ่มเครื่องมือของตนลงในรายการสิ่งที่เอเจนต์เรียกใช้ได้ หากไม่มีการค้นหาเครื่องมือ คำจำกัดความของเครื่องมือเหล่านั้น — ชื่อ คำอธิบาย และสคีมาพารามิเตอร์ — จะถูกโหลดเข้าสู่บริบทไว้ล่วงหน้า เซิร์ฟเวอร์จะเชื่อมต่อในเบื้องหลังเมื่อเริ่มเซสชัน หากต้องใช้เครื่องมือจากเซิร์ฟเวอร์ที่ยังเชื่อมต่อไม่เสร็จ Claude Code จะรอผ่านเครื่องมือภายใน `WaitForMcpServers` คุณสามารถประเมินจำนวนเครื่องมือและโทเค็นที่เซิร์ฟเวอร์หนึ่งเพิ่มให้ได้แยกกันในแต่ละการเชื่อมต่อ

เอกสารทางการของ Anthropic ระบุตัวเลขโดยประมาณไว้สองค่า (เป็นตัวเลขทั่วไปโดยไม่ได้ระบุวิธีการวัด):

- เครื่องมือ 50 รายการอาจใช้โทเค็นบริบท 10-20 พันโทเค็น;
- ความแม่นยำในการเลือกเครื่องมือที่เหมาะสมจะลดลงเมื่อโหลดเครื่องมือพร้อมกันมากกว่า 30-50 รายการ

## วิธีประเมินการค้นหาเครื่องมือจากการตั้งค่า

หากต้องการทราบว่าการค้นหาเครื่องมือควรทำงานในเซสชันปัจจุบันหรือไม่ ให้ตรวจสอบเงื่อนไขเหล่านี้:

- โมเดลใดกำลังตอบ — Sonnet/Haiku/Opus 4.5 หรือใหม่กว่า: กลไกนี้ใช้งานได้; โมเดลรุ่นเก่ากว่านั้น: ใช้งานไม่ได้;
- `ANTHROPIC_BASE_URL` ตั้งเป็นโฮสต์ที่ไม่ใช่มาตรฐานหรือไม่ — ในกรณีนั้น กลไกจะปิดอยู่ตามค่าเริ่มต้น เว้นแต่จะเปิดใช้งานอย่างชัดเจนผ่าน `ENABLE_TOOL_SEARCH`;
- ค่าของตัวแปร `ENABLE_TOOL_SEARCH` — `false` จะปิดกลไกทั้งหมด; `auto`/`auto:N` จะเปิดใช้งานเฉพาะเมื่อปริมาณคำจำกัดความถึงเกณฑ์ที่กำหนด;
- มีการตั้งค่า `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` หรือไม่ — หากไม่มีการตั้งค่าที่องค์กรจัดการ ตัวแปรนี้จะทำให้การค้นหาเครื่องมือปิดอยู่ แม้ผู้ใช้จะตั้ง `ENABLE_TOOL_SEARCH` ไว้ก็ตาม;
- เครื่องมือ `ToolSearch` ถูกบล็อกผ่าน `permissions.deny` ในการตั้งค่าหรือไม่ — การจำกัดเช่นนี้จะปิดการค้นหา;
- ใช้แพลตฟอร์มใด — กลไกนี้ใช้ไม่ได้บนการติดตั้ง Microsoft Foundry ใน Azure ส่วนบน Google Cloud Agent Platform พฤติกรรมจะขึ้นอยู่กับเวอร์ชัน Claude Code และโมเดล

การตรวจสอบนี้ช่วยให้ประเมินสถานะจากการกำหนดค่าได้ แต่ไม่ได้ช่วยให้สังเกตสถานะภายในเซสชัน เอกสารส่วน MCP และส่วนการค้นหาเครื่องมือใน Agent SDK ไม่ได้อธิบายตัวบ่งชี้โดยตรงในอินเทอร์เฟซว่า “การค้นหาเครื่องมือ: เปิด/ปิด” การที่ไม่มีการกล่าวถึงในเอกสารสองฉบับนี้ไม่ได้พิสูจน์ว่าไม่มีตัวบ่งชี้เช่นนั้นอยู่ที่อื่น

คุณตั้งค่าตัวแปรก่อนเริ่มเซสชันได้ เช่น `ENABLE_TOOL_SEARCH=auto:15 claude` หากต้องการให้โหลดเครื่องมือของเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งเสมอ ให้ใช้ฟิลด์ `alwaysLoad: true` ในการกำหนดค่าเซิร์ฟเวอร์ ฟิลด์นี้ใช้ได้กับเซิร์ฟเวอร์ทุกประเภท ส่วนเงื่อนไขและข้อจำกัดอธิบายไว้ด้านล่างในหัวข้อ alwaysLoad

## การค้นหาเครื่องมือทำงานอย่างไร

เมื่อเปิดใช้งานการค้นหาเครื่องมือ จะโหลดเข้าสู่บริบทเฉพาะชื่อเครื่องมือที่เลื่อนการโหลดไว้และคำแนะนำของเซิร์ฟเวอร์เมื่อเริ่มเซสชัน คำแนะนำของเซิร์ฟเวอร์อธิบายว่าเซิร์ฟเวอร์มีประโยชน์กับงานประเภทใด เมื่องานต้องใช้ความสามารถที่ยังไม่มีในบริบท เอเจนต์จะค้นหาเครื่องมือที่เหมาะสมในแคตตาล็อกด้วยตัวเอง

เอกสาร Agent SDK อธิบายกลไกการค้นหาอย่างละเอียดขึ้น: ตามค่าเริ่มต้น การค้นหาแต่ละครั้งจะโหลดเครื่องมือที่เกี่ยวข้องมากที่สุดจากแคตตาล็อกได้สูงสุดห้ารายการ เครื่องมือเหล่านี้จะยังใช้ได้ในรอบถัด ๆ ไปของเซสชัน จนกว่า SDK จะย่อข้อความที่เอเจนต์ใช้ค้นพบเครื่องมือเหล่านั้น หลังจากย่อแล้ว เครื่องมือที่ค้นพบก่อนหน้านี้อาจหลุดออกจากบริบท และเอเจนต์จะค้นหาอีกครั้งเมื่อต้องใช้ในครั้งถัดไป แคตตาล็อกรองรับเครื่องมือได้สูงสุด 10 000 รายการ เอกสาร MCP ของ Claude Code เองไม่ได้ระบุตัวเลขเหล่านี้โดยเฉพาะ แต่กล่าวถึงหลักการเดียวกัน คือการเลื่อนโหลดไว้ภายหลัง

ตามเอกสาร Agent SDK การค้นหาแต่ละครั้งเพิ่มการเดินทางไปกลับอีกหนึ่งรอบ เอกสารไม่ได้ระบุชัดเจนว่าการเดินทางไปกลับนั้นประกอบด้วยอะไรบ้าง สำหรับ Claude Code เอกสาร MCP ยังอธิบายความแตกต่างในการรายงานข้อผิดพลาดด้วย: หากไม่มีการค้นหาเครื่องมือ Claude Code จะไม่แจ้งโมเดลเมื่อการเชื่อมต่อเซิร์ฟเวอร์ล้มเหลว เมื่อเปิดการค้นหา โมเดลจะได้รับข้อมูลว่าเซิร์ฟเวอร์ใดเชื่อมต่อไม่สำเร็จและเกิดข้อผิดพลาดอะไร

Claude Code ไม่กำหนดขีดจำกัดตายตัวสำหรับจำนวนเครื่องมือจากเซิร์ฟเวอร์เดียว ขีดจำกัดในทางปฏิบัติคืองบประมาณหน้าต่างบริบทของเซสชันนั้น

การกำหนดค่าเครื่องมือเป็นหนึ่งในงานที่เกี่ยวข้องกับการจัดการบริบทของเอเจนต์ AI



## เมื่อใดที่การค้นหาเครื่องมือปิดอยู่ตามค่าเริ่มต้น

กลไกนี้เปิดใช้งานตามค่าเริ่มต้น แต่การทำงานขึ้นอยู่กับโมเดล โฮสต์ API และแพลตฟอร์ม

**โมเดล** การค้นหาเครื่องมือต้องใช้โมเดลที่รองรับบล็อก tool_reference ได้แก่ Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5 หรือรุ่นใหม่กว่า สำหรับโมเดลรุ่นเก่ากว่านั้น Claude Code จะโหลดคำจำกัดความของเครื่องมือไว้ล่วงหน้า

**โฮสต์ API** Claude Code ปิดการค้นหาเครื่องมือเมื่อค่าตัวแปร `ANTHROPIC_BASE_URL` ชี้ไปยังโฮสต์ของบุคคลที่สาม: พร็อกซีส่วนใหญ่ไม่ส่งต่อบล็อก tool_reference พิเศษ กรณีนี้ใช้กับการเชื่อมต่อ Claude ผ่านเกตเวย์หรือพร็อกซีเซิร์ฟเวอร์ของคุณเอง แทนการเชื่อมต่อโดยตรงผ่านที่อยู่ของ Anthropic สาเหตุที่ปิดใช้งานคือการตั้ง `ANTHROPIC_BASE_URL` ที่ไม่ใช่มาตรฐาน; วิธีชำระค่าสมาชิกไม่ได้เป็นสาเหตุด้วยตัวมันเอง คุณตั้ง `ENABLE_TOOL_SEARCH` อย่างชัดเจนเพื่อบังคับใช้พฤติกรรมนี้ได้ หากพร็อกซีเองไม่รองรับบล็อก tool_reference การบังคับเปิดกลไกจะทำให้เกิดข้อผิดพลาดของคำขอ ในกรณีนี้ระบบจะไม่เปลี่ยนกลับไปโหลดคำจำกัดความไว้ล่วงหน้า

**แพลตฟอร์มการติดตั้งใช้งาน** การค้นหาเครื่องมือไม่ทำงานบนการติดตั้ง Microsoft Foundry ที่โฮสต์บน Azure: เซิร์ฟเวอร์ปฏิเสธคำขอ และ `ENABLE_TOOL_SEARCH` ใช้ข้ามข้อจำกัดนี้ไม่ได้ บน Google Cloud Agent Platform ก่อน Claude Code เวอร์ชัน 2.1.221 กลไกนี้ปิดอยู่สำหรับทุกโมเดล เว้นแต่จะตั้ง `ENABLE_TOOL_SEARCH=true` อย่างชัดเจน ตั้งแต่เวอร์ชันดังกล่าวเป็นต้นไป กลไกนี้เปิดใช้งานตามค่าเริ่มต้นสำหรับ Opus/Sonnet/Haiku 4.5 และรุ่นใหม่กว่า สำหรับโมเดลรุ่นเก่าบนแพลตฟอร์มนี้ Claude Code ยังคงโหลดเครื่องมือทั้งหมดไว้ล่วงหน้า เพราะโครงสร้างพื้นฐานเซิร์ฟเวอร์ของโมเดลเหล่านั้นปฏิเสธส่วนหัวภายในที่จำเป็น

ตัวแปร `ENABLE_TOOL_SEARCH` มีการตั้งค่าที่เป็นไปได้ห้าแบบ:

- ไม่ได้ตั้งค่า — ใช้พฤติกรรมมาตรฐาน โดยมีข้อยกเว้นตามที่ระบุไว้ข้างต้น;
- `true` — เปิดกลไกในโมเดลที่รองรับ ยกเว้นสองกรณี: Azure Foundry และโมเดลรุ่นเก่าบน Agent Platform; คำขอที่ส่งผ่านพร็อกซีซึ่งไม่รองรับบล็อก tool_reference จะล้มเหลว;
- `auto` — Claude Code จะโหลดเครื่องมือไว้ล่วงหน้าตราบใดที่คำจำกัดความรวมกันใช้พื้นที่น้อยกว่า 10% ของหน้าต่างบริบท และจะเปลี่ยนเป็นการโหลดแบบเลื่อนออกไปเมื่อถึงเกณฑ์ดังกล่าว;
- `auto:N` — ใช้หลักการเดียวกัน โดยกำหนดเกณฑ์เปอร์เซ็นต์เอง;
- `false` — ปิดกลไกทั้งหมดและโหลดเครื่องมือทั้งหมดไว้ล่วงหน้า

นอกจากนี้ยังมีตัวแปร `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`: หากตั้งค่าไว้ การค้นหาเครื่องมือจะยังปิดอยู่ และการที่ผู้ใช้ตั้ง `ENABLE_TOOL_SEARCH` จะไม่เปลี่ยนสถานะนี้ ข้อยกเว้นคือเมื่อองค์กรเปิดการค้นหาเครื่องมือไว้ผ่านการตั้งค่าที่จัดการโดยองค์กร ซึ่งเริ่มใช้งานได้ตั้งแต่ Claude Code เวอร์ชัน 2.1.227

## alwaysLoad ทำอะไรและส่งผลต่อบริบทกับการเริ่มต้นอย่างไร

ฟิลด์ `alwaysLoad: true` ในการกำหนดค่าเซิร์ฟเวอร์ใช้ได้กับเซิร์ฟเวอร์ทุกประเภท เมื่อใช้ฟิลด์นี้ เครื่องมือทั้งหมดของเซิร์ฟเวอร์ดังกล่าวจะถูกโหลดเข้าสู่บริบทเมื่อเริ่มเซสชัน ไม่ว่า `ENABLE_TOOL_SEARCH` จะตั้งค่าไว้อย่างไร เอเจนต์ไม่จำเป็นต้องค้นหาเครื่องมือก่อนใช้งาน

การโหลดเครื่องมือไว้เสมอมีผลสองประการ เครื่องมือแต่ละรายการที่โหลดไว้ล่วงหน้าจะใช้พื้นที่บางส่วนของบริบทที่อาจนำไปใช้กับงานได้ นอกจากนี้ การเริ่มเซสชันจะรอให้เซิร์ฟเวอร์นี้เชื่อมต่อ ภายในช่วงหมดเวลามาตรฐานห้าวินาที

ข้อยกเว้นคือเซิร์ฟเวอร์ระยะไกลที่มีรายการแคชที่ถูกต้อง: เซิร์ฟเวอร์จะส่งเครื่องมือจากแคชโดยไม่เชื่อมต่อ และไม่ทำให้การเริ่มต้นล่าช้า แคชการค้นพบปิดอยู่ตามค่าเริ่มต้น เว้นแต่จะเปิดใช้กับบัญชีไว้แล้วในระหว่างการทยอยเปิดตัวฟีเจอร์นี้ คุณยังเปิดใช้ได้อย่างชัดเจนผ่าน `MCP_DISCOVERY_CACHE=1` ข้อยกเว้นด้านการเริ่มต้นอย่างรวดเร็วใช้ได้เมื่อแคชทำงานอยู่และมีรายการที่ถูกต้อง เครื่องมือที่มี `alwaysLoad` ยังคงใช้พื้นที่ในบริบทตลอดเวลา ไม่ว่าเอเจนต์จะจำเป็นต้องใช้เครื่องมือเหล่านั้นระหว่างทำงานผ่านการค้นหาหรือไม่ก็ตาม

สำหรับผู้ที่เขียนเซิร์ฟเวอร์ MCP เอง: คำแนะนำของเซิร์ฟเวอร์ช่วยให้ Claude เข้าใจว่าควรค้นหาเครื่องมือของเซิร์ฟเวอร์เมื่อใด คล้ายกับ Skills โดยค่าเริ่มต้น Claude Code จะตัดคำอธิบายของเครื่องมือแต่ละรายการและคำแนะนำของเซิร์ฟเวอร์แต่ละเครื่องให้เหลือ 2048 อักขระ ดังนั้นให้วางรายละเอียดสำคัญไว้ตอนต้น

การเลือกวิธีขยาย Claude Code ขึ้นอยู่กับปัจจัยมากกว่าจำนวนเซิร์ฟเวอร์ MCP ที่เชื่อมต่อ คู่มือ [Claude Code: ควรเปิดส่วนขยายไว้พร้อมกันกี่รายการ](https://ailoot.ai/blog/th/claude-code-skills-subagents-mcp-plugins/) และ [เลือกอะไรใน Claude Code: Skills, Subagents, MCP หรือ Plugins](https://ailoot.ai/blog/th/skills-subagents-mcp-plugins-claude-code/) อธิบายการใช้ Skills, Subagents, MCP และ Plugins กับงานประเภทต่าง ๆ สำหรับคำแนะนำทีละขั้นตอนในการตั้งค่าเซิร์ฟเวอร์ MCP เฉพาะ โปรดดู [เซิร์ฟเวอร์ MCP สำหรับ Claude Code: ชุดการตั้งค่าพร้อมใช้](https://ailoot.ai/blog/th/mcp-servers-claude-code/)

## ทำอะไรต่อ

สำหรับชุดเครื่องมือที่มีน้อยกว่าประมาณ 10 รายการและมีคำจำกัดความที่ใส่ในบริบทได้โดยไม่ลำบาก เอกสาร Agent SDK ระบุว่าการโหลดทั้งหมดพร้อมกันมักจะเร็วกว่า อย่างไรก็ตาม ตามพฤติกรรมเริ่มต้นของ Claude Code เมื่อไม่ได้ตั้งค่าตัวแปรและไม่มีข้อจำกัดข้างต้น การค้นหาเครื่องมือจะเปิดใช้งานและเลื่อนการโหลดเครื่องมือ MCP ไว้จนกว่าจะค้นหา ยกเว้นเซิร์ฟเวอร์ที่มี `alwaysLoad`

ในกรณีนี้ คุณตั้ง `ENABLE_TOOL_SEARCH=auto` อย่างชัดเจนได้: คำจำกัดความจะถูกโหลดไว้ล่วงหน้าตราบใดที่ปริมาณรวมกันน้อยกว่า 10% ของหน้าต่างบริบท และการค้นหาจะเปิดใช้งานเมื่อถึงเกณฑ์ อีกทางเลือกหนึ่งคือ `ENABLE_TOOL_SEARCH=false` หากคุณทราบว่าชุดเครื่องมือจะไม่ขยาย ในกรณีนั้น Claude Code จะหยุดแจ้งโมเดลเมื่อการเชื่อมต่อเซิร์ฟเวอร์ล้มเหลว ตามที่อธิบายไว้ข้างต้น

ในกรณีอื่น ๆ ให้ตรวจสอบเงื่อนไขการทำงานอีกครั้งเมื่อสภาพแวดล้อมเปลี่ยนแปลง:

- เปลี่ยนไปใช้ Sonnet/Haiku/Opus 4.5 หรือรุ่นใหม่กว่า หากเซสชันใช้โมเดลรุ่นเก่ากว่านั้น;
- หากการเชื่อมต่อใช้ `ANTHROPIC_BASE_URL` ที่ไม่ใช่มาตรฐาน ให้ตั้ง `ENABLE_TOOL_SEARCH=true` อย่างชัดเจนเฉพาะเมื่อพร็อกซีส่งต่อบล็อก tool_reference ได้;
- ตรวจสอบว่าแพลตฟอร์มการติดตั้งใช้งานไม่อยู่ในรายการข้อยกเว้น: Azure Foundry หรือโมเดลรุ่นเก่าบน Google Cloud Agent Platform

หากเงื่อนไขครบถ้วนและการตั้งค่าไม่ได้บล็อกการค้นหา คุณก็เชื่อมต่อเซิร์ฟเวอร์ MCP ที่ต้องการได้ ใช้ `alwaysLoad` เฉพาะกับเซิร์ฟเวอร์ที่ต้องใช้เครื่องมือในทุกเทิร์นของเซสชัน ส่วนเซิร์ฟเวอร์อื่นให้โหลดผ่านการค้นหา

<div class="section" role="doc-bibliography" aria-label="Sources">

### แหล่งที่มา

- [MCP ใน Claude Code ส่วน “Scale with MCP tool search” — เอกสารทางการของ Anthropic](https://code.claude.com/docs/en/mcp.md)
- [การค้นหาเครื่องมือใน Agent SDK — เอกสารทางการของ Anthropic](https://code.claude.com/docs/en/agent-sdk/tool-search.md)

</div>



หากคุณต้องการเข้าถึงโมเดล AI ผ่าน Ailoot ลองดูที่ [Ailoot](https://ailoot.ai/).

## คำถามที่พบบ่อย

### ทำไม tool search ผ่านพร็อกซีอาจล้มเหลวแม้เปิดแล้ว?

โฮสต์ API ภายนอกต้องรองรับบล็อก tool_reference การบังคับ ENABLE_TOOL_SEARCH ไม่ได้เพิ่มความสามารถนั้น พร็อกซีที่ไม่รองรับอาจปฏิเสธคำขอแทนการกลับไปโหลดเครื่องมือทั้งหมด

### เมื่อไรควรตั้ง alwaysLoad ให้เซิร์ฟเวอร์ MCP?

ใช้เมื่อจำเป็นต้องใช้เครื่องมือของเซิร์ฟเวอร์นั้นทุกรอบ คำอธิบายเครื่องมือทั้งหมดจะอยู่ในบริบทเริ่มต้น และอาจต้องรอเชื่อมต่อ เว้นแต่มีรายการ discovery-cache ที่ยังใช้ได้


## Ailoot · บริษัทและพอร์ตโฟลิโอโครงการของบริษัท

Ailoot อาศัยประสบการณ์การดำเนินงานที่สั่งสม ฐานลูกค้าขนาดใหญ่ บริการที่เสถียร และการติดตาม KPI อย่างต่อเนื่อง

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท: ลูกค้าหลายล้านราย; ยอดขายระดับหลายพันล้านต่อเดือน.

Ailoot นำประสบการณ์การดำเนินงานนี้มาใช้เพื่อให้เข้าถึงฟังก์ชัน AI ผ่าน API ในผลิตภัณฑ์ของลูกค้า เอเจนต์ แอปพลิเคชัน และระบบอัตโนมัติ
