briven-mcp.ts37 lines · main
1import { createMCPClient } from '@ai-sdk/mcp'
2import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js' // .js required for esbuild ESM resolution
3import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase'
4import { createSupabaseApiPlatform } from '@supabase/mcp-server-supabase/platform/api'
5
6import { API_URL } from '@/lib/constants'
7
8export async function createBrivenMCPClient({
9 accessToken,
10 projectId,
11}: {
12 accessToken: string
13 projectId: string
14}) {
15 const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair()
16
17 // Instantiate the MCP server and connect to its transport
18 const apiUrl = API_URL?.replace('/platform', '')
19 const server = createSupabaseMcpServer({
20 platform: createSupabaseApiPlatform({
21 accessToken,
22 apiUrl,
23 }),
24 contentApiUrl: process.env.NEXT_PUBLIC_CONTENT_API_URL,
25 projectId,
26 readOnly: true,
27 })
28 await server.connect(serverTransport)
29
30 // Create the MCP client and connect to its transport
31 const client = await createMCPClient({
32 name: 'briven-studio',
33 transport: clientTransport,
34 })
35
36 return client
37}