← back to Goodquestion
src/app/api/mcp/search/route.ts
54 lines
import { NextRequest, NextResponse } from 'next/server'
import { mcpClient } from '@/lib/mcp-client'
import { z } from 'zod'
const SearchRequestSchema = z.object({
query: z.string().min(1),
filters: z
.object({
documentType: z.array(z.string()).optional(),
dateFrom: z.string().optional(),
dateTo: z.string().optional(),
location: z.string().optional(),
})
.optional(),
limit: z.number().int().positive().max(50).default(10),
})
export async function POST(request: NextRequest) {
try {
const body = await request.json()
const { query, filters, limit } = SearchRequestSchema.parse(body)
const results = await mcpClient.search(query, filters, limit)
return NextResponse.json({
success: true,
results,
count: results.length,
})
} catch (error) {
console.error('MCP search error:', error)
if (error instanceof z.ZodError) {
return NextResponse.json(
{
success: false,
error: 'Invalid search parameters',
details: error.errors,
},
{ status: 400 }
)
}
return NextResponse.json(
{
success: false,
error: 'Search failed',
message: error instanceof Error ? error.message : 'Unknown error',
},
{ status: 500 }
)
}
}