| 12345678910111213141516171819202122232425262728293031323334353637 |
- import { createMCPClient } from '@ai-sdk/mcp'
- import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js' // .js required for esbuild ESM resolution
- import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase'
- import { createSupabaseApiPlatform } from '@supabase/mcp-server-supabase/platform/api'
- import { API_URL } from '@/lib/constants'
- export async function createSupabaseMCPClient({
- accessToken,
- projectId,
- }: {
- accessToken: string
- projectId: string
- }) {
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair()
- // Instantiate the MCP server and connect to its transport
- const apiUrl = API_URL?.replace('/platform', '')
- const server = createSupabaseMcpServer({
- platform: createSupabaseApiPlatform({
- accessToken,
- apiUrl,
- }),
- contentApiUrl: process.env.NEXT_PUBLIC_CONTENT_API_URL,
- projectId,
- readOnly: true,
- })
- await server.connect(serverTransport)
- // Create the MCP client and connect to its transport
- const client = await createMCPClient({
- name: 'supabase-studio',
- transport: clientTransport,
- })
- return client
- }
|