Vercel AI SDK

Integrate BlueNexus MCP tools into your Vercel AI SDK application.

Install

npm install ai @ai-sdk/openai @ai-sdk/mcp @modelcontextprotocol/sdk

Setup

import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { experimental_createMCPClient as createMCPClient } from "@ai-sdk/mcp";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const BLUENEXUS_TOKEN = process.env.BLUENEXUS_TOKEN!;

async function main() {
  // Create MCP client connected to BlueNexus
  const mcpClient = await createMCPClient({
    transport: new StreamableHTTPClientTransport(
      new URL("https://api.bluenexus.ai/mcp"),
      {
        requestInit: {
          headers: {
            Authorization: `Bearer ${BLUENEXUS_TOKEN}`,
          },
        },
      }
    ),
  });

  // Get tools from BlueNexus
  const tools = await mcpClient.tools();

  // Use with generateText
  const { text } = await generateText({
    model: openai("gpt-4o"),
    tools,
    prompt: "What's on my Google Calendar today?",
    maxSteps: 5,
  });

  console.log(text);

  // Clean up
  await mcpClient.close();
}

main();

With Streaming

import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";

const { textStream } = streamText({
  model: openai("gpt-4o"),
  tools,
  prompt: "Summarize my unread Slack messages",
  maxSteps: 5,
});

for await (const chunk of textStream) {
  process.stdout.write(chunk);
}

Next.js Route Handler

// app/api/chat/route.ts
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";
import { experimental_createMCPClient as createMCPClient } from "@ai-sdk/mcp";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

export async function POST(req: Request) {
  const { messages } = await req.json();

  // Create BlueNexus MCP client with the user's token
  const userToken = req.headers.get("x-bluenexus-token");

  const mcpClient = await createMCPClient({
    transport: new StreamableHTTPClientTransport(
      new URL("https://api.bluenexus.ai/mcp"),
      {
        requestInit: {
          headers: {
            Authorization: `Bearer ${userToken}`,
          },
        },
      }
    ),
  });

  const tools = await mcpClient.tools();

  const result = streamText({
    model: openai("gpt-4o"),
    messages,
    tools,
    maxSteps: 5,
    onFinish: () => mcpClient.close(),
  });

  return result.toDataStreamResponse();
}

Using BlueNexus as the LLM Provider

You can also use BlueNexus's OpenAI-compatible LLM API directly:

import { createOpenAI } from "@ai-sdk/openai";

const bluenexus = createOpenAI({
  baseURL: "https://api.bluenexus.ai/api/v1",
  apiKey: BLUENEXUS_TOKEN,
});

const { text } = await generateText({
  model: bluenexus("bluenexus/glm-4.7-flash-tee"),
  prompt: "Hello!",
});

Next Steps