UNPKG

@agentpaid/mcp-use

Version:

A utility library for integrating Model Context Protocol (MCP) with LangChain, Zod, and related tools. Provides helpers for schema conversion, event streaming, and SDK usage.

63 lines (62 loc) 2.11 kB
/** * AI SDK Integration Utilities * * Utility functions for integrating MCPAgent's streamEvents with Vercel AI SDK. * These utilities help convert stream events to AI SDK compatible formats. */ /** * Converts streamEvents to AI SDK compatible stream (basic version) * Only yields the actual content tokens from chat model streams */ export async function* streamEventsToAISDK(streamEvents) { for await (const event of streamEvents) { if (event.event === 'on_chat_model_stream' && event.data?.chunk?.text) { const textContent = event.data.chunk.text; if (typeof textContent === 'string' && textContent.length > 0) { yield textContent; } } } } /** * Converts async generator to ReadableStream for AI SDK compatibility */ export function createReadableStreamFromGenerator(generator) { return new ReadableStream({ async start(controller) { try { for await (const chunk of generator) { controller.enqueue(chunk); } controller.close(); } catch (error) { controller.error(error); } }, }); } /** * Enhanced adapter that includes tool information along with chat content * Yields both content tokens and tool usage notifications */ export async function* streamEventsToAISDKWithTools(streamEvents) { for await (const event of streamEvents) { switch (event.event) { case 'on_chat_model_stream': if (event.data?.chunk?.text) { const textContent = event.data.chunk.text; if (typeof textContent === 'string' && textContent.length > 0) { yield textContent; } } break; case 'on_tool_start': yield `\n🔧 Using tool: ${event.name}\n`; break; case 'on_tool_end': yield `\n✅ Tool completed: ${event.name}\n`; break; } } }