Ліниве завантаження MCP-інструментів: хто підтримує та як це працює
Більшість людей вважають, що витрати на MCP-сервери закладені в коді. Вони помиляються.
Якщо ви створюєте MCP-сервер, ви стикаєтеся з двома типами витрат на токени:
- Фіксовані витрати: визначення інструментів, що завантажуються в контекст під час кожного кроку.
- Змінні витрати: розмір відповіді, яку повертає інструмент.
Ви контролюєте змінні витрати. Ви можете використовувати пагінацію результатів або обмежувати розмір виводу.
Ви не контролюєте фіксовані витрати. Це завдання хоста (клієнта).
Якщо у вас є десять серверів із багатьма інструментами, ви можете витратити 40 000 токенів ще до того, як модель прочитає ваше перше повідомлення. Це стається тому, що хост завантажує всі визначення інструментів заздалегідь.
Рішенням є ліниве завантаження (lazy loading). Це означає, що хост завантажує лише крихітний інструмент пошуку, а інші визначення підтягує лише за потреби.
Проблема? Більшість клієнтів ще не підтримують це.
Поточний стан лінивого завантаження:
- Claude Code: Підтримує. Інструменти завантажуються за запитом через інструмент пошуку.
- Cursor, Devin та інші: Не підтримують. Вони завантажують усе одночасно.
Якщо ваш контекст роздувається на клієнті, який не має підтримки лінивого завантаження, у вас є два варіанти:
Використовуйте лінивий проксі Направте ваш хост на проксі-сервер замість ваших справжніх серверів. Проксі надає лише два інструменти: search_tools та execute_tool. Він завантажує ваші справжні визначення лише за запитом. Це зменшує ваш контекст, але позбавляє можливості тонкого контролю дозволів.
Використовуйте патерн роутера Якщо один сервер стає занадто великим, не додавайте більше інструментів. Замість цього створіть один інструмент із параметром операції. Наприклад, використовуйте один інструмент "docs" із командами на кшталт "list", "get" або "search". Це зменшує кількість схем, які має завантажити хост.
Підсумок стратегії:
- Від 6 до 15 інструментів: Нічого не робіть. Витрати занадто низькі, щоб про них турбуватися.
- Багато інструментів в одному сервері: Використовуйте патерн роутера.
- Багато різних серверів: Використовуйте лінивий проксі.
Перевірте поведінку вашого клієнта, перш ніж витрачати години на оптимізацію коду. Виправлення може бути взагалі не у вашому сервері.
Source: https://dev.to/ismaestro/lazy-loading-mcp-tools-which-clients-support-it-and-how-4414
Optional learning community: https://t.me/GyaanSetuAi