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
- Custom MCP — Raw MCP SDK usage
- MCP Endpoint Reference — Full specification