Dalam artikel ini, kita akan membahas cara mengorchestrate Server Model Context Protocol (MCP). dalam dunia nyata aplikasi TypeScript. kita akan menggunakan proyek sebagai basis kami, berfokus pada praktik terbaik untuk pengoreksian yang aman, dapat diperluas, dan dapat dipelihara. merasa bebas untuk menjadi bintang repo untuk diberitahu tentang perubahan terbaru. Keterlibatan.TS Layanan Azure Travel Agent Jika Anda tertarik dengan gambaran keseluruhan proyek Azure AI Travel Agents, silakan baca blog pengumuman kami! Pengumuman Blog Mengapa llamaindex.TS dan MCP? llamaindex.TS menyediakan kerangka kerja modular dan dapat dikompos untuk membangun aplikasi berbasis LLM di TypeScript. MCP memungkinkan interoperabilitas alat dan streaming, menjadikannya ideal untuk mengoreksi beberapa layanan AI. Struktur Proyek The Llamaindex.TS Orchestrator tinggal di , dengan modul penyedia untuk berbagai backend LLM dan klien MCP. Kami saat ini mendukung: src/api/src/orchestrator/llamaindex Aplikasi Azure OpenAI Model Docker Menggunakan Azure Local Foundry Contoh GitHub Ollama merasa bebas untuk mengeksplorasi basis kode dan . Sarankan Lebih Banyak Penyedia Mengatur klien MCP dengan HTTP Streamable Untuk berinteraksi dengan server MCP, tanpa menggunakan Llamaindex.TS, kita dapat menulis implementasi kustom menggunakan untuk komunikasi yang efisien, otentikasi, dan streaming. 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(); } } Selalu melewati header untuk akses yang aman, seperti yang ditunjukkan di atas. Best Practice: Authorization Menggunakan alat MCP secara manual Misalkan Anda ingin mendapatkan rekomendasi tujuan dari server 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(); Selalu tutup klien MCP dengan sopan untuk melepaskan sumber daya. Tip: Orkestrasi LLM dan alat MCP dengan Llamaindex.TS yang Klien dari membuatnya mudah untuk terhubung ke server MCP dan mendapatkan definisi alat secara dinamis. Di bawah ini adalah contoh dari pengaturan orchestrator proyek, menunjukkan bagaimana menggunakan untuk mengambil alat dan membuat agen untuk setiap server MCP. mcp @llamaindex/tools mcp Berikut adalah contoh dari apa yang Objektum dapat terlihat seperti: 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 }; Anda dapat menggunakan konfigurasi ini dengan Pelanggan : 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, }); Anda dapat mengulangi pola ini untuk menyusun alur kerja multi-agent di mana setiap agen didukung oleh alat yang ditemukan pada runtime dari server MCP. . Contoh Lengkap Anda kemudian dapat menggunakan instansi LLM ini untuk mengoreksi panggilan ke alat MCP, seperti perencanaan rute atau rekomendasi tujuan. Pertimbangan keamanan Selalu gunakan token akses dan header yang aman. Jangan pernah membuat rahasia hardcode; gunakan variabel lingkungan dan manajer rahasia. Bergabunglah dengan komunitas: Kami mendorong Anda untuk bergabung dengan komunitas pengembang Azure AI Foundry kami untuk berbagi pengalaman Anda, mengajukan pertanyaan, dan mendapatkan dukungan: aka.ms/foundry/discord Bergabunglah dengan komunitas Discord kami untuk diskusi dan dukungan real-time. aka.ms/foundry/forum - Kunjungi forum pengembang Azure AI Foundry kami untuk mengajukan pertanyaan dan berbagi pengetahuan Anda. Kesimpulan Dengan menggabungkan llamaindex.TS dengan transportasi HTTP Streamable MCP, Anda dapat mengoreksi alur kerja AI yang kuat, aman, dan dapat diperluas di TypeScript. References: Dokumen dari llamaindex.TS Spesifikasi Streamable HTTP Spec Contoh Agen Perjalanan Azure