UNPKG

n8n-nodes-mcp-eu

Version:
87 lines (86 loc) 3.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js"); const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js"); const zod_1 = require("zod"); async function fetchWithTimeout(url, timeoutMs = 120000) { const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), timeoutMs); try { const response = await fetch(url, { signal: controller.signal }); clearTimeout(timeoutId); return response; } catch (error) { clearTimeout(timeoutId); if (error instanceof Error && error.name === 'AbortError') { return { content: [ { type: "text", text: `⚠️ La solicitud tardó demasiado y fue cancelada (timeout).`, }, ], }; } throw error; } } const server = new mcp_js_1.McpServer({ name: 'MCP Noticias EU Server', version: '1.0.0', description: 'Servidor MCP para consultar últimas noticias de El Universal Cartagena', }); server.tool('fetch_news', 'consultar las últimas noticias de El Universal Cartagena', { queryString: zod_1.z .string() .describe('información sobre las ultimas noticias de El Universal Cartagena'), }, async ({ queryString }, _extra) => { console.error('[MCP_SERVER] Received fetch_news call for:', queryString); try { const apiServiciosExternos = `https://api.eluniversal.com.co/servicios-externos/mas-leidas?host=eluniversal`; const newsResponse = await fetchWithTimeout(apiServiciosExternos); if (!(newsResponse instanceof Response)) { return newsResponse; } if (!newsResponse.ok) { return { content: [ { type: "text", text: `⚠️ No se pudo obtener las noticias de El Universal Cartagena: ${newsResponse.status} ${newsResponse.statusText}`, }, ], }; } const newsData = await newsResponse.json(); console.error('[MCP_SERVER] API data received.'); if (!Array.isArray(newsData) || newsData.length === 0) { return { content: [{ type: "text", text: `No se encontró información para: ${queryString}.` }], }; } return { content: [{ type: "text", text: JSON.stringify(newsData, null, 2) }], }; } catch (error) { console.error('[MCP_SERVER] Error during fetch_news execution:', error); let errorMessage = 'Error desconocido'; if (error instanceof Error) { errorMessage = error.message; } else { errorMessage = String(error); } return { content: [{ type: "text", text: `Error interno del servidor MCP: ${errorMessage}` }], }; } }); const transport = new stdio_js_1.StdioServerTransport(); (async () => { await server.connect(transport); console.error('Noticias MCP Server running on stdio'); })(); //# sourceMappingURL=mcp_server.js.map