এই পোস্টে, আমরা দেখাব কিভাবে মডেল কনটেক্ট প্রোটোকল (এমসিপি) সার্ভারগুলি পরিচালনা করা যায় একটি বাস্তব বিশ্বের TypeScript অ্যাপ্লিকেশন. আমরা ব্যবহার করব প্রকল্পটি আমাদের ভিত্তি হিসাবে, নিরাপদ, স্কেলযোগ্য এবং রক্ষণাবেক্ষণযোগ্য অর্কেস্টারিংয়ের জন্য সেরা অনুশীলনগুলির উপর মনোযোগ দেয়। অ্যাডমিনিস্ট্রেশন.এস Azure ভ্রমণ এজেন্ট যদি আপনি Azure AI ভ্রমণ এজেন্ট প্রকল্পের একটি পর্যালোচনা সম্পর্কে আগ্রহী হন তবে দয়া করে আমাদের ঘোষণা ব্লগটি পড়ুন! বিজ্ঞপ্তি ব্লগ কেন llamaindex.TS এবং MCP? llamaindex.TS টাইপস্ক্রিপ্টে এলএলএম চালিত অ্যাপ্লিকেশনগুলি তৈরি করার জন্য একটি মডুলার, কম্পোজেবল ফ্রেমওয়ার্ক সরবরাহ করে। এমসিপি সরঞ্জামগুলির সামঞ্জস্যপূর্ণতা এবং স্ট্রিমিংকে সক্ষম করে, যা এটি একাধিক এআই পরিষেবাগুলি সংগঠিত করার জন্য আদর্শ। প্রকল্প গঠন Llamaindex.TS অর্কেস্ট্রেটর বাস করে , বিভিন্ন এলএলএম ব্যাকেন্ড এবং এমসিপি ক্লায়েন্টদের জন্য প্রদানকারীর মডিউল সঙ্গে। src/api/src/orchestrator/llamaindex Azure খোলা ডোকার মডেল Azure এআই ফাউন্ড্রি স্থানীয় GitHub মডেল অলিমা অনুভূতি স্বাধীনভাবে কোড বেস এবং . আরো সরবরাহকারীদের প্রস্তাব Streamable HTTP সঙ্গে MCP ক্লায়েন্ট সেট আপ করুন MCP সার্ভারগুলির সাথে যোগাযোগ করার জন্য, Llamaindex.TS ব্যবহার না করে, আমরা ব্যবহার করে একটি কাস্টম বাস্তবায়ন লিখতে পারি কার্যকর, স্বীকৃত এবং স্ট্রিমিং যোগাযোগের জন্য। StreamableHTTPClientTransport // filepath: src/api/src/mcp/mcp-http-client.ts import EventEmitter from 'node:events'; import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; export class MCPClient extends EventEmitter { private client: Client; private transport: StreamableHTTPClientTransport; constructor(serverName: string, serverUrl: string, accessToken?: string) { this.transport = new StreamableHTTPClientTransport({ url: serverUrl, headers: accessToken ? { Authorization: `Bearer ${accessToken}` } : {}, }); this.client = new Client(serverName, this.transport); } async connect() { await this.client.initialize(); } async listTools() { return this.client.listTools(); } async callTool(name: string, toolArgs: any) { return this.client.callTool(name, toolArgs); } async close() { await this.client.closeGracefully(); } } সবসময় অতিক্রম নিরাপদ অ্যাক্সেসের জন্য হেডার, উপরের মত। Best Practice: Authorization ম্যানুয়ালভাবে একটি MCP টুল কল ধরা যাক আপনি MCP সার্ভার থেকে গন্তব্য সুপারিশগুলি পেতে চান: import { MCPClient } from '../../mcp/mcp-http-client'; const DESTINATION_SERVER_URL = process.env.MCP_DESTINATION_RECOMMENDATION_URL!; const ACCESS_TOKEN = process.env.MCP_DESTINATION_RECOMMENDATION_ACCESS_TOKEN; const mcpClient = new MCPClient('destination-recommendation', DESTINATION_SERVER_URL, ACCESS_TOKEN); await mcpClient.connect(); const tools = await mcpClient.listTools(); console.log('Available tools:', tools); const result = await mcpClient.callTool('getDestinationsByPreferences', { activity: 'CULTURAL', budget: 'MODERATE', season: 'SUMMER', familyFriendly: true, }); console.log('Recommended destinations:', result); await mcpClient.close(); সবসময় সম্পদ মুক্ত করার জন্য MCP ক্লায়েন্টটি চমৎকারভাবে বন্ধ করুন। Tip: Llamaindex.TS এর সাথে LLMs এবং MCP টুলগুলি সংগঠিত করা এর গ্রাহক থেকে MCP সার্ভারগুলির সাথে সংযোগ করা এবং সরঞ্জাম সংজ্ঞাগুলি দৈনন্দিনভাবে পুনরুদ্ধার করা সহজ করে তোলে। প্রতিটি MCP সার্ভারের জন্য সরঞ্জামগুলি সংগ্রহ এবং এজেন্ট তৈরি করুন। mcp @llamaindex/tools mcp এখানে একটি উদাহরণ যা একটি Object হতে পারে: mcpServerConfig const mcpServerConfig = { url: "http://localhost:5007", // MCP server endpoint accessToken: process.env.MCP_ECHO_PING_ACCESS_TOKEN, // Secure token from env name: "echo-ping", // Logical name for the server }; আপনি এই কনফিগার ব্যবহার করতে পারেন। গ্রাহক : mcp import { mcp } from "@llamaindex/tools"; import { agent, multiAgent, ToolCallLLM } from "llamaindex"; // ...existing code... const mcpServerConfig = mcpToolsConfig["echo-ping"].config; const tools = await mcp(mcpServerConfig).tools(); const echoAgent = agent({ name: "EchoAgent", systemPrompt: "Echo back the received input. Do not respond with anything else. Always call the tools.", tools, llm, verbose, }); agentsList.push(echoAgent); handoffTargets.push(echoAgent); toolsList.push(...tools); // ...other code... const travelAgent = agent({ name: "TravelAgent", systemPrompt: "Acts as a triage agent to determine the best course of action for the user's query. If you cannot handle the query, please pass it to the next agent. If you can handle the query, please do so.", tools: [...toolsList], canHandoffTo: handoffTargets .map((target) => target.getAgents().map((agent) => agent.name)) .flat(), llm, verbose, }); agentsList.push(travelAgent); // Create the multi-agent workflow return multiAgent({ agents: agentsList, rootAgent: travelAgent, verbose, }); আপনি এই প্যাটার্নটি পুনরাবৃত্তি করতে পারেন একটি মাল্টি-এজেন্ট ওয়ার্কফ্লো তৈরি করতে, যেখানে প্রতিটি এজেন্টটি MCP সার্ভার থেকে রানটাইমে আবিষ্কার করা সরঞ্জামগুলির দ্বারা চালিত হয়। . পূর্ণ উদাহরণ তারপর আপনি এই এলএলএম ইনস্টিটিউটটি ব্যবহার করতে পারেন MCP সরঞ্জামগুলির কলগুলি, যেমন পথ পরিকল্পনা বা গন্তব্য সুপারিশ করার জন্য। নিরাপত্তা বিবেচনা সবসময় অ্যাক্সেস টোকেন এবং নিরাপদ হেডার ব্যবহার করুন। কখনোই হার্ডকোড গোপনীয়তা ব্যবহার করবেন না; পরিবেশ পরিবর্তন এবং গোপন ম্যানেজার ব্যবহার করুন। কমিউনিটিতে যোগ দিন: আমরা আপনাকে আপনার অভিজ্ঞতা ভাগ করতে, প্রশ্ন জিজ্ঞাসা করতে এবং সমর্থন পেতে আমাদের Azure AI Foundry ডেভেলপার সম্প্রদায়ের সাথে যোগ দিতে উৎসাহিত করি: aka.ms/foundry/discord বাস্তব সময়ে আলোচনা এবং সহায়তা জন্য আমাদের Discord সম্প্রদায়ের সাথে যোগ দিন। aka.ms/foundry/forum - প্রশ্ন করতে এবং আপনার জ্ঞান ভাগ করতে আমাদের Azure AI Foundry ডেভেলপার ফোরামে যান। উপসংহার MCP এর স্ট্রিমেবল HTTP ট্রান্সপোর্টের সাথে llamaindex.TS সংযুক্ত করে, আপনি TypeScript-এ শক্তিশালী, নিরাপদ এবং স্কেলযোগ্য AI ওয়ার্কফ্লোজ অর্গানাইজ করতে পারেন. Azure AI Travel Agents প্রকল্পটি আপনার নিজস্ব অর্গানাইজার তৈরি করার জন্য একটি শক্তিশালী টেমপ্লেট প্রদান করে। References: ডকুমেন্টেশন llamaindex.TS MCP Streamable HTTP স্পেক Azure AI ভ্রমণ এজেন্ট নমুনা