Skip to main content
Glama
error-capture.ts2.63 kB
/** * Error capture endpoint for debugging Claude Web connections */ import { VercelRequest, VercelResponse } from '@vercel/node'; // Store recent requests for debugging let requestLog: any[] = []; export default async function handler(req: VercelRequest, res: VercelResponse) { // CORS headers res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', '*'); res.setHeader('Access-Control-Allow-Headers', '*'); // Capture ALL request details const requestInfo = { timestamp: new Date().toISOString(), method: req.method, url: req.url, headers: { 'user-agent': req.headers['user-agent'], 'content-type': req.headers['content-type'], 'origin': req.headers['origin'], 'referer': req.headers['referer'], 'authorization': req.headers['authorization'] ? 'present' : 'none' }, body: req.body, query: req.query }; // Log the request requestLog.unshift(requestInfo); requestLog = requestLog.slice(0, 20); // Keep last 20 requests // Handle OPTIONS if (req.method === 'OPTIONS') { return res.status(200).end(); } // Special endpoint to view logs if (req.url?.includes('/logs')) { return res.status(200).json({ message: "Recent requests (last 20)", requests: requestLog, claude_web_indicators: requestLog.filter(r => r.headers['user-agent']?.includes('Claude') || r.headers['origin']?.includes('claude.ai') || r.headers['referer']?.includes('claude.ai') ) }); } try { const body = req.body || {}; // Always return a valid MCP response const response = { timestamp: new Date().toISOString(), debug_info: { received_method: req.method, received_headers: requestInfo.headers, body_method: body.method, is_likely_claude_web: req.headers['user-agent']?.includes('Claude') || req.headers['origin']?.includes('claude.ai') }, tools: [ { name: "debug_connection", description: "Debug connection test", inputSchema: { type: "object", properties: {}, required: [] } } ] }; // Force success for debugging return res.status(200).json(response); } catch (error) { // Even errors return 200 for Claude Web compatibility return res.status(200).json({ captured_error: true, error_message: error instanceof Error ? error.message : 'Unknown error', debug_info: requestInfo, note: "This is a debugging endpoint" }); } }

Latest Blog Posts

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/Bizuayeu/day5-api-remote-mcp'

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