У цій статті ми продемонструємо, як оркеструвати сервери протоколу контексту моделі (MCP) за допомогою в реальному світі програмного забезпечення TypeScript. ми будемо використовувати проект як наша база, зосереджуючись на кращих практиках для безпечної, масштабованої та підтримуваної оркестрації. Не забудьте стати зіркою репо, щоб бути поінформованим про останні зміни. Орієнтація.TS Azure для туристичних агентств Якщо вас цікавить огляд проекту Azure AI Travel Agents, будь ласка, прочитайте наш блог оголошення! Блог оголошення Чому llamaindex.TS і MCP? llamaindex.TS надає модульну, компоновану структуру для створення програм на базі LLM в TypeScript. MCP дозволяє взаємодіяти з інструментами та транслювати їх, що робить його ідеальним для оркестрування декількох послуг AI. Структура проекту Llamaindex.TS оркестр живе в , з модулями провайдера для різних LLM backends і клієнтів MCP. Ми в даний час підтримуємо: src/api/src/orchestrator/llamaindex Відкриття Azure Докер моделі Огляд Azure AI Foundry Local Модель GitHub Ольга Відчуйте себе вільно, щоб досліджувати кодову базу і . Пропонуємо більше постачальників Налаштування клієнта MCP з поточним HTTP Щоб взаємодіяти з серверами 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, щоб поділитися своїм досвідом, задавати питання та отримувати підтримку: aka.ms/foundry/discord Приєднуйтесь до нашої спільноти Discord для обговорення та підтримки в режимі реального часу. aka.ms/foundry/forum - Відвідайте наш Azure AI Foundry Developer Forum, щоб поставити запитання та поділитися своїми знаннями. Висновок Поєднуючи llamaindex.TS з поточним HTTP-транспортом MCP, ви можете оркеструвати потужні, безпечні та масштабовані робочі процеси штучного інтелекту в TypeScript. References: Огляд документації llamaindex.TS Програма MCP Streamable HTTP Spec Програма Azure AI Travel Agents