diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 58b083d..1ebae9d 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -67,37 +67,6 @@ export const chatRequestSchema = z.object({ model: z.string(), }) -// Get tools request schema -export const getToolsRequestSchema = z.object({ - url: z.string().url('Invalid URL format'), - name: z - .string() - .regex( - /^[a-zA-Z][a-zA-Z0-9_-]*$/, - 'Name must start with a letter and can only contain letters, numbers, dashes, and underscores', - ), -}) - -// Get tools response schema -export const getToolsResponseSchema = z.object({ - status: z.enum(['ok', 'error', 'redirect']), - redirectUrl: z.string().optional(), - tools: z.record(toolStateSchema).optional(), - toolStates: z.record(toolStateSchema).optional(), - error: z.string().optional(), -}) - -// Server form schema -export const serverFormSchema = z.object({ - name: z - .string() - .regex( - /^[a-zA-Z][a-zA-Z0-9_-]*$/, - 'Name must start with a letter and can only contain letters, numbers, dashes, and underscores', - ), - url: z.string().url('Invalid server URL'), -}) - // Types export type PomeriumServerInfo = z.infer export type PomeriumRoutesResponse = z.infer< diff --git a/src/routes/api/get-tools.ts b/src/routes/api/get-tools.ts deleted file mode 100644 index 0dfce6a..0000000 --- a/src/routes/api/get-tools.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { json } from '@tanstack/react-start' -import { createAPIFileRoute } from '@tanstack/react-start/api' -import { getToolsRequestSchema } from '../../lib/schemas' -import OpenAI from 'openai' - -export const APIRoute = createAPIFileRoute('/api/get-tools')({ - POST: async ({ request }) => { - const bearerToken = request.headers.get('Authorization')?.split(' ')[1] - - try { - const body = await request.json() - const result = getToolsRequestSchema.safeParse(body) - - if (!result.success) { - return json({ error: result.error.errors }, { status: 400 }) - } - - const { url, name } = result.data - - if (!bearerToken) { - return json({ error: 'Unauthorized' }, { status: 401 }) - } - - const mcpServer = [ - { - type: 'mcp' as const, - server_label: name, - server_url: url, - require_approval: 'never' as const, - headers: { - Authorization: `Bearer ${bearerToken}`, - }, - }, - ] - - const client = new OpenAI() - await client.responses.create({ - model: 'gpt-4o', - tools: mcpServer, - input: 'List available tools', - }) - - return json({ connected: true }) - } catch (error) { - console.error('Error creating MCP client:', error) - return json({ error: 'Failed to connect to MCP server' }, { status: 500 }) - } - }, -})