utils.ts•1.41 kB
import { anthropic } from '@ai-sdk/anthropic';
import { StreamTransport } from '@supabase/mcp-utils';
import { experimental_createMCPClient as createMCPClient } from 'ai';
import { createSupabaseMcpServer } from '../../src/index.js';
import { createSupabaseApiPlatform } from '../../src/platform/api-platform.js';
import { ACCESS_TOKEN, API_URL, MCP_CLIENT_NAME } from '../mocks.js';
const DEFAULT_TEST_MODEL = 'claude-3-7-sonnet-20250219';
type SetupOptions = {
projectId?: string;
};
/**
* Sets up an MCP client and server for testing.
*/
export async function setup({ projectId }: SetupOptions = {}) {
const clientTransport = new StreamTransport();
const serverTransport = new StreamTransport();
clientTransport.readable.pipeTo(serverTransport.writable);
serverTransport.readable.pipeTo(clientTransport.writable);
const platform = createSupabaseApiPlatform({
apiUrl: API_URL,
accessToken: ACCESS_TOKEN,
});
const server = createSupabaseMcpServer({
platform,
projectId,
});
await server.connect(serverTransport);
const client = await createMCPClient({
name: MCP_CLIENT_NAME,
transport: clientTransport,
});
return { client, clientTransport, server, serverTransport };
}
/**
* Gets the default model for testing, with the ability to override.
*/
export function getTestModel(modelId?: string) {
return anthropic(modelId ?? DEFAULT_TEST_MODEL);
}