UNPKG

invoice-processor-mcp

Version:
101 lines (92 loc) 3.26 kB
// index.js - Punto de entrada para nuestro MCP server de procesamiento de facturas import { MCPServer } from './mcp/server.js'; import { ModelRequest, FunctionDefinition } from './mcp/protocol.js'; import { processInvoice } from './invoiceProcessor.js'; // Definición de las funciones que expondremos a través del MCP const functionDefinitions = [ new FunctionDefinition({ name: 'process_invoice', description: 'Procesa un archivo Excel de factura y extrae la información relevante', parameters: { type: 'object', properties: { filePath: { type: 'string', description: 'Ruta al archivo Excel de la factura' } }, required: ['filePath'] }, implementation: async (params) => { try { const result = await processInvoice(params.filePath); return { success: true, data: result }; } catch (error) { return { success: false, error: error.message }; } } }), new FunctionDefinition({ name: 'summarize_invoices', description: 'Genera un resumen de múltiples facturas en Excel', parameters: { type: 'object', properties: { filePaths: { type: 'array', items: { type: 'string' }, description: 'Lista de rutas a los archivos Excel de facturas' }, outputPath: { type: 'string', description: 'Ruta donde guardar el archivo de resumen' } }, required: ['filePaths', 'outputPath'] }, implementation: async (params) => { try { // Procesar cada factura y generar un resumen const results = await Promise.all(params.filePaths.map(filePath => processInvoice(filePath))); // En una implementación completa, aquí agregaríamos la lógica para generar // el Excel de resumen en outputPath return { success: true, message: `Resumen generado en ${params.outputPath}`, summaryData: results }; } catch (error) { return { success: false, error: error.message }; } } }) ]; // Función para manejar mensajes que llegan al MCP async function handleRequest(request) { // Esta es la función que procesará los mensajes recibidos por el MCP // En una implementación real, aquí manejaríamos la lógica específica // para diferentes tipos de consultas sobre facturas return { model_response: { content: [ { text: "He recibido tu consulta sobre facturas. Puedes usar las funciones 'process_invoice' o 'summarize_invoices' para procesar tus archivos Excel." } ] } }; } // Configuración e inicio del servidor MCP const server = new MCPServer({ functions: functionDefinitions, handleRequest }); // Configuración para Cloud Functions - exportamos la función que será el punto de entrada export const invoiceProcessorMCP = server.createExpressMiddleware(); // Si ejecutamos directamente (no como Cloud Function) if (process.env.NODE_ENV !== 'production') { const PORT = process.env.PORT || 3000; server.listen(PORT, () => { console.log(`Servidor MCP de procesamiento de facturas ejecutándose en el puerto ${PORT}`); }); }