𝗟𝗮𝘇𝘆 𝗟𝗼𝗮𝗱𝗶𝗻𝗴 𝗠𝗖𝗣 𝗧𝗼𝗼𝗹𝘀: ਕੌਣ ਇਸਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ ਅਤੇ ਕਿਵੇਂ

ਜ਼ਿਆਦਾਤਰ ਲੋਕ ਸੋਚਦੇ ਹਨ ਕਿ MCP ਸਰਵਰ ਦੀ ਲਾਗਤ ਕੋਡ ਵਿੱਚ ਹੁੰਦੀ ਹੈ। ਉਹ ਗਲਤ ਹਨ।

ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ MCP ਸਰਵਰ ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਦੋ ਕਿਸਮਾਂ ਦੀਆਂ ਟੋਕਨ ਲਾਗਤਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ:

  • ਫਿਕਸਡ (Fixed) ਲਾਗਤ: ਹਰ ਵਾਰ ਕੰਟੈਕਸਟ (context) ਵਿੱਚ ਲੋਡ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਟੂਲ ਡੈਫੀਨੇਸ਼ਨ (tool definitions)।
  • ਵੇਰੀਏਬਲ (Variable) ਲਾਗਤ: ਇੱਕ ਟੂਲ ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਜਵਾਬ ਦਾ ਆਕਾਰ।

ਤੁਸੀਂ ਵੇਰੀਏਬਲ ਲਾਗਤ ਨੂੰ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਨਤੀਜਿਆਂ ਨੂੰ ਪੇਜ (paginate) ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਆਊਟਪੁੱਟ ਦੇ ਆਕਾਰ ਨੂੰ ਸੀਮਤ ਕਰ ਸਕਦੇ ਹੋ।

ਤੁਸੀਂ ਫਿਕਸਡ ਲਾਗਤ ਨੂੰ ਕੰਟਰੋਲ ਨਹੀਂ ਕਰ ਸਕਦੇ। ਇਹ ਹੋਸਟ (ਕਲਾਇੰਟ) ਦਾ ਕੰਮ ਹੈ।

ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਬਹੁਤ ਸਾਰੇ ਟੂਲਸ ਵਾਲੇ ਦਸ ਸਰਵਰ ਹਨ, ਤਾਂ ਮਾਡਲ ਦੁਆਰਾ ਤੁਹਾਡਾ ਪਹਿਲਾ ਸੁਨੇਹਾ ਪੜ੍ਹਨ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਤੁਸੀਂ 40,000 ਟੋਕਨ ਬਰਬਾਦ ਕਰ ਸਕਦੇ ਹੋ। ਅਜਿਹਾ ਇਸ ਲਈ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਹੋਸਟ ਹਰ ਟੂਲ ਡੈਫੀਨੇਸ਼ਨ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਕਰ ਲੈਂਦਾ ਹੈ।

ਇਸਦਾ ਹੱਲ ਲੇਜ਼ੀ ਲੋਡਿੰਗ (lazy loading) ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਹੋਸਟ ਸਿਰਫ਼ ਇੱਕ ਛੋਟਾ ਜਿਹਾ search tool ਲੋਡ ਕਰਦਾ ਹੈ ਅਤੇ ਹੋਰ ਡੈਫੀਨੇਸ਼ਨਾਂ ਨੂੰ ਸਿਰਫ਼ ਲੋੜ ਪੈਣ 'ਤੇ ਹੀ ਲੈਂਦਾ ਹੈ।

ਸਮੱਸਿਆ ਕੀ ਹੈ? ਜ਼ਿਆਦਾਤਰ ਕਲਾਇੰਟ ਅਜੇ ਤੱਕ ਇਸਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ।

ਲੇਜ਼ੀ ਲੋਡਿੰਗ ਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ:

  • Claude Code: ਇਸਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਟੂਲਸ ਇੱਕ search tool ਰਾਹੀਂ ਮੰਗ 'ਤੇ ਲੋਡ ਹੁੰਦੇ ਹਨ।
  • Cursor, Devin, ਅਤੇ ਹੋਰ: ਉਹ ਇਸਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ। ਉਹ ਸਭ ਕੁਝ ਇੱਕੋ ਵਾਰ ਵਿੱਚ ਲੋਡ ਕਰਦੇ ਹਨ।

ਜੇਕਰ ਤੁਹਾਡਾ ਕੰਟੈਕਸਟ (context) ਅਜਿਹੇ ਕਲਾਇੰਟ 'ਤੇ ਵਧ ਰਿਹਾ ਹੈ ਜਿਸ ਵਿੱਚ ਲੇਜ਼ੀ ਲੋਡਿੰਗ ਦੀ ਘਾਟ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ ਦੋ ਵਿਕਲਪ ਹਨ:

  1. ਇੱਕ ਲੇਜ਼ੀ ਪ੍ਰੌਕਸੀ (lazy proxy) ਦੀ ਵਰਤੋਂ ਕਰੋ ਆਪਣੇ ਹੋਸਟ ਨੂੰ ਆਪਣੇ ਅਸਲੀ ਸਰਵਰਾਂ ਦੀ ਬਜਾਏ ਇੱਕ ਪ੍ਰੌਕਸੀ ਸਰਵਰ ਵੱਲ ਮੋੜੋ। ਪ੍ਰੌਕਸੀ ਸਿਰਫ਼ ਦੋ ਟੂਲ ਪ੍ਰਗਟ ਕਰਦੀ ਹੈ: search_tools ਅਤੇ execute_tool। ਇਹ ਤੁਹਾਡੀਆਂ ਅਸਲੀ ਡੈਫੀਨੇਸ਼ਨਾਂ ਨੂੰ ਸਿਰਫ਼ ਮੰਗ ਕਰਨ 'ਤੇ ਹੀ ਲੋਡ ਕਰਦੀ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਕੰਟੈਕਸਟ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਪਰ ਬਾਰੀਕੀ ਨਾਲ ਪਰਮਿਸ਼ਨ ਕੰਟਰੋਲ (fine-grained permission control) ਨੂੰ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ।

  2. ਰੂਟਰ ਪੈਟਰਨ (router pattern) ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੇਕਰ ਇੱਕ ਸਰਵਰ ਬਹੁਤ ਵੱਡਾ ਹੁੰਦਾ ਜਾ ਰਿਹਾ ਹੈ, ਤਾਂ ਹੋਰ ਟੂਲ ਨਾ ਜੋੜੋ। ਇਸਦੀ ਬਜਾਏ, ਇੱਕ operation parameter ਵਾਲਾ ਇੱਕ ਟੂਲ ਬਣਾਓ। ਉਦਾਹਰਨ ਲਈ, "list", "get", ਜਾਂ "search" ਵਰਗੇ ਕਮਾਂਡਾਂ ਵਾਲਾ ਇੱਕ "docs" ਟੂਲ ਵਰਤੋ। ਇਹ ਉਹਨਾਂ schema ਦੀ ਗਿਣਤੀ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਹੋਸਟ ਨੂੰ ਲੋਡ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।

ਰਣਨੀਤੀ ਦਾ ਸਾਰ:

  • 6 ਤੋਂ 15 ਟੂਲ: ਕੁਝ ਨਾ ਕਰੋ। ਲਾਗਤ ਚਿੰਤਾ ਕਰਨ ਲਈ ਬਹੁਤ ਘੱਟ ਹੈ।
  • ਇੱਕ ਸਰਵਰ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਟੂਲ: ਰੂਟਰ ਪੈਟਰਨ ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਬਹੁਤ ਸਾਰੇ ਵੱਖ-ਵੱਖ ਸਰਵਰ: ਲੇਜ਼ੀ ਪ੍ਰੌਕਸੀ ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਆਪਣੇ ਕੋਡ ਨੂੰ ਅਪਟੀਮਾਈਜ਼ (optimize) ਕਰਨ ਵਿੱਚ ਘੰਟੇ ਬਰਬਾਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਕਲਾਇੰਟ ਦੇ ਵਿਵਹਾਰ ਦੀ ਜਾਂਚ ਕਰੋ। ਹੱਲ ਸ਼ਾਇਦ ਤੁਹਾਡੇ ਸਰਵਰ ਵਿੱਚ ਹੋਵੇ ਹੀ ਨਹੀਂ।

Source: https://dev.to/ismaestro/lazy-loading-mcp-tools-which-clients-support-it-and-how-4414

Optional learning community: https://t.me/GyaanSetuAi