في هذه المقالة ، سنقوم بإظهار كيفية تركيب خادمات بروتوكول نموذج الاتصال (MCP) باستخدام في تطبيق TypeScript في العالم الحقيقي. سوف نستخدم المشروع كأساس لدينا، تركز على أفضل الممارسات لتوجيه الأقمار الصناعية آمنة، قابلة للتوسع، ومستدامة. الـمـنـتـدى خدمة Azure Travel Agents إذا كنت مهتمًا بتصوير مشروع Azure AI Travel Agents، يرجى قراءة مدونة إعلاننا! المدونة الإعلانية لماذا llamaindex.TS و MCP؟ يوفر llamaindex.TS إطارًا متكاملًا متكاملًا لإنشاء التطبيقات التي تعمل على LLM في TypeScript. يتيح MCP التفاعلية بين الأدوات والإنترنت، مما يجعلها مثالية لتصميم خدمات AI متعددة. هيكل المشروع الأكاديمية Llamaindex.TS تعيش في ، مع وحدات الموردين لعدد مختلف من خيارات LLM والعملاء MCP. نحن حاليا تدعم: src/api/src/orchestrator/llamaindex Azure OpenAI نموذج Docker Azure AI Foundry المحلي نموذج GitHub الألوان تشعر بالحرية لاستكشاف قاعدة الكود و . دعونا نقدم المزيد من الموردين إعداد ملف MCP باستخدام HTTP Streamable للتفاعل مع خادمات 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: تصميم أدوات LLM و MCP مع Llamaindex.TS ذاك عميل من يجعل من السهل الانضمام إلى خادمات MCP وتتلقى تعريفات الأدوات بشكل ديناميكي. أدناه نموذج من إعداد المتصفح للمشروع، والذي يوضح كيفية استخدام الحصول على أدوات وتصنيع العمالة لكل خادم MCP. mcp @llamaindex/tools mcp إليك مثال على ما هو يمكن أن تبدو الأشياء مثل: 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. . مثال كامل بعد ذلك، يمكنك استخدام هذه الحالة LLM لتنظيم الدعوات إلى أدوات MCP، مثل تخطيط الرحلة أو توصية وجهة. الاعتبارات الأمنية تستخدم دائمًا تكسيرات الوصول والخلفيات الآمنة. لا تستخدم أيًا من الملفات الصوتية أبدًا، باستخدام المتغيرات البيئية والمديرين السرية. الانضمام إلى المجتمع: ونحن ندعوك إلى الانضمام إلى مجتمع Azure AI Foundry Developer لتبادل تجربتك، وإرسال الأسئلة، وإيجاد الدعم: aka.ms/foundry/discord الانضمام إلى مجتمع Discord لدراسة في الوقت الحقيقي ودعم. aka.ms/foundry/forum - زيارة منتدى Azure AI Foundry Developer Forum لتقديم الأسئلة وتبادل المعرفة الخاصة بك. النتيجة من خلال الجمع بين llamaindex.TS و MCP Streamable HTTP Transport، يمكنك تركيب تدفقات عمل الذكاء الاصطناعي القوية، آمنة ومتوسطة في TypeScript. References: كلمات متعلقة llamaindex.TS ملف MCP Streamable HTTP Spec Azure AI خدمة السفر نموذج