diff --git a/apps/webapp/app/trigger/chat/chat-utils.ts b/apps/webapp/app/trigger/chat/chat-utils.ts index fba87d5..7d53818 100644 --- a/apps/webapp/app/trigger/chat/chat-utils.ts +++ b/apps/webapp/app/trigger/chat/chat-utils.ts @@ -262,6 +262,7 @@ export async function* run( let guardLoop = 0; let tools = { + ...(await mcp.allTools()), "core--progress_update": progressUpdateTool, "core--search_memory": searchMemoryTool, "core--add_memory": addMemoryTool, diff --git a/apps/webapp/app/trigger/chat/chat.ts b/apps/webapp/app/trigger/chat/chat.ts index d05bf26..5365571 100644 --- a/apps/webapp/app/trigger/chat/chat.ts +++ b/apps/webapp/app/trigger/chat/chat.ts @@ -37,9 +37,11 @@ export const chat = task({ const { previousHistory, ...otherData } = payload.context; + const { agents = [] } = payload.context; // Initialise mcp const mcp = new MCP(); await mcp.init(); + await mcp.load(agents, { Authorization: `Bearer ${init?.token}` }); // Prepare context with additional metadata const context = { diff --git a/apps/webapp/app/trigger/utils/mcp.ts b/apps/webapp/app/trigger/utils/mcp.ts index 85d7ab4..7ef3bc2 100644 --- a/apps/webapp/app/trigger/utils/mcp.ts +++ b/apps/webapp/app/trigger/utils/mcp.ts @@ -3,7 +3,7 @@ import { logger } from "@trigger.dev/sdk/v3"; import { jsonSchema, tool, type ToolSet } from "ai"; import { type MCPTool } from "./types"; - +import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; export class MCP { private Client: any; private clients: Record = {}; @@ -23,15 +23,14 @@ export class MCP { return Client; } - async load(agents: string[], mcpConfig: any) { + async load(agents: string[], headers: any) { await Promise.all( agents.map(async (agent) => { - const mcp = mcpConfig.mcpServers[agent]; - - return await this.connectToServer(agent, mcp.command, mcp.args, { - ...mcp.env, - DATABASE_URL: mcp.env?.DATABASE_URL ?? "", - }); + return await this.connectToServer( + agent, + `${process.env.BACKEND_HOST}/api/v1/mcp/${agent}`, + headers, + ); }), ); } @@ -113,12 +112,7 @@ export class MCP { return response; } - async connectToServer( - name: string, - command: string, - args: string[], - env: any, - ) { + async connectToServer(name: string, url: string, headers: any) { try { const client = new this.Client( { @@ -130,12 +124,9 @@ export class MCP { }, ); - // Conf - // igure the transport for MCP server - const transport = new this.StdioTransport({ - command, - args, - env, + // Configure the transport for MCP server + const transport = new StreamableHTTPClientTransport(new URL(url), { + requestInit: { headers }, }); // Connect to the MCP server