Files
supabase/apps/studio/lib/ai/tools/mcp-tools.ts
T
d60aceb562 Prompt and tool refactoring (#37500)
* try a really long context window to maximize caching

* update examples

* attempt to update packages and useChat

* update endpoints

* update zod

* zod

* update to v5

* message update

* Revert "zod"

This reverts commit ec39bac6b6.

* revert zod

* zod i

* fix complete endpoints

* remove async

* change to content

* type cleanup

* Revert the package bumps to rebuild them.

* Bump zod to 2.25.76 in all packages.

* Bump openai in all packages.

* Bump ai and ai-related packages.

* Remove unneeded files.

* Fix the rest of the migration stuff.

* Prettier fixes.

* add policy list tool

* refactor

* ai sdk 5 fixes

* refactor complete endpoint

* edge function prompt

* remove example

* slight prompt change

* Minor clean up

* More clean up

---------

Co-authored-by: Jordi Enric <jordi.err@gmail.com>
Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-08 15:25:57 +07:00

35 lines
1.1 KiB
TypeScript

import { AiOptInLevel } from 'hooks/misc/useOrgOptedIntoAi'
import { createSupabaseMCPClient } from '../supabase-mcp'
import { filterToolsByOptInLevel, toolSetValidationSchema } from '../tool-filter'
export const getMcpTools = async ({
accessToken,
projectRef,
aiOptInLevel,
}: {
accessToken: string
projectRef: string
aiOptInLevel: AiOptInLevel
}) => {
// If platform, fetch MCP client and tools which replace old local tools
const mcpClient = await createSupabaseMCPClient({
accessToken,
projectId: projectRef,
})
const availableMcpTools = await mcpClient.tools()
// Filter tools based on the (potentially modified) AI opt-in level
const allowedMcpTools = filterToolsByOptInLevel(availableMcpTools, aiOptInLevel)
// Validate that only known tools are provided
const { data: validatedTools, error: validationError } =
toolSetValidationSchema.safeParse(allowedMcpTools)
if (validationError) {
console.error('MCP tools validation error:', validationError)
throw new Error('Internal error: MCP tools validation failed')
}
return validatedTools
}