UNPKG

@tiflux/mcp

Version:

TiFlux MCP Server - Model Context Protocol integration for Claude Code and other AI clients

83 lines (73 loc) 2.16 kB
/** * AWS Lambda Handler - Entry Point * * Handler principal para AWS Lambda Function URL. * Recebe eventos HTTP e delega para o MCPHandler. * * Formato do evento Lambda Function URL: * https://docs.aws.amazon.com/lambda/latest/dg/urls-invocation.html * * Deploy: * - AWS Lambda Function (Node.js 18.x) * - Memory: 512MB * - Timeout: 30s * - Function URL habilitado */ // Datadog APM - apenas em producao if (process.env.NODE_ENV === 'production') { require('dd-trace').init({ service: 'tiflux-mcp', env: process.env.DD_ENV || 'production' }); } const MCPHandler = require('./src/lambda/handler'); /** * Lambda handler para Function URL * @param {Object} event - Evento Lambda Function URL * @param {Object} context - Contexto Lambda * @returns {Object} - Resposta HTTP */ exports.handler = async (event, context) => { // Configurar timeout do Lambda context context.callbackWaitsForEmptyEventLoop = false; // Log inicial (CloudWatch) console.log('[Lambda] Requisicao recebida', { requestId: context.requestId, path: event.requestContext?.http?.path || event.path, method: event.requestContext?.http?.method || event.httpMethod, timestamp: new Date().toISOString() }); try { // Delegar para MCPHandler const response = await MCPHandler.handle(event); console.log('[Lambda] Requisicao processada com sucesso', { requestId: context.requestId, statusCode: response.statusCode, timestamp: new Date().toISOString() }); return response; } catch (error) { // Erro nao tratado (ultima barreira) console.error('[Lambda] Erro nao tratado', { requestId: context.requestId, error: error.message, stack: error.stack, timestamp: new Date().toISOString() }); // Retornar erro 500 generico return { statusCode: 500, headers: { 'content-type': 'application/json', 'x-powered-by': 'TiFlux MCP Lambda' }, body: JSON.stringify({ error: { code: 'INTERNAL_ERROR', message: 'Erro interno do servidor', statusCode: 500 } }) }; } };