Skip to main content
Glama

Authenticated Next.js MCP Server

route.ts2.24 kB
import { NextRequest, NextResponse } from 'next/server' import { PrismaService } from '@/lib/prisma' const prisma = PrismaService.getInstance() // POST /api/webhook - Process webhook events for real-time updates export async function POST(request: NextRequest): Promise<NextResponse> { try { const { eventType, userId, payload } = await request.json() // Validate webhook secret (basic security) const authHeader = request.headers.get('authorization') const expectedSecret = process.env.WEBHOOK_SECRET if (!authHeader || !authHeader.startsWith('Bearer ') || !expectedSecret) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } const providedSecret = authHeader.substring(7) if (providedSecret !== expectedSecret) { return NextResponse.json({ error: 'Invalid webhook secret' }, { status: 401 }) } // Store webhook event await prisma.webhookEvent.create({ data: { userId, eventType, payload, processed: false, }, }) // Here you could add real-time notification logic // For now, we'll just return success return NextResponse.json({ success: true, message: 'Webhook processed successfully', eventType, userId, }) } catch (error) { console.error('Webhook error:', error) return NextResponse.json( { error: 'Webhook processing failed' }, { status: 500 } ) } } // GET /api/webhook - Get recent webhook events for a user export async function GET(request: NextRequest): Promise<NextResponse> { try { const { searchParams } = new URL(request.url) const userId = searchParams.get('userId') const limit = parseInt(searchParams.get('limit') || '10') if (!userId) { return NextResponse.json({ error: 'userId required' }, { status: 400 }) } const events = await prisma.webhookEvent.findMany({ where: { userId }, orderBy: { timestamp: 'desc' }, take: limit, }) return NextResponse.json(events) } catch (error) { console.error('Error fetching webhook events:', error) return NextResponse.json( { error: 'Failed to fetch events' }, { status: 500 } ) } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vedaterenoglu/ve-nextjs-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server