Skip to main content
Glama

Financial AI Agent System

by NBWolfer
server.js3.41 kB
// server.js import express from 'express'; import { ChatOllama } from "@langchain/community/chat_models/ollama"; import { HumanMessage, SystemMessage } from "@langchain/core/messages"; import { PortfolioFetchingTool } from './tools.js'; // --- Kurulum --- const app = express(); app.use(express.json()); // cors ayarları import cors from 'cors'; app.use(cors({ origin: [ "http://localhost:3000", // React uygulamanızın çalıştığı port "http://localhost:3001", // Eğer başka bir port kullanıyorsanız bur "http://localhost:8001", // Eğer başka bir port kullanıyorsanız buraya ekleyin "http://localhost:8000" // Eğer başka bir port kullanıyorsanız ], credentials: true // Cookie-based authentication için gerekli })); const PORT = 8001; // Python sunucusuyla aynı port // Lokal LLM'i başlatma const llm = new ChatOllama({ model: "gemma3:4b", baseUrl: "http://127.0.0.1:11434", // Ollama sunucu adresi }); // --- API Endpoint --- app.post('/analyze-portfolio', async (req, res) => { const { oid } = req.body; if (!oid) { return res.status(400).json({ error: "Kullanıcı OID'si (oid) eksik." }); } console.log(`--- Yeni analiz isteği alındı | Kullanıcı OID: ${oid} ---`); try { // --- AJAN ORKESTRASYONU (MANUEL) --- // Adım 1: Portföy Verisini Al (Agent 1'in Görevi) console.log("Adım 1: Portföy verisi alınıyor..."); const portfolioTool = new PortfolioFetchingTool(); const portfolioSummary = await portfolioTool.call(oid); console.log("Portföy Özeti:\n", portfolioSummary); // Adım 2: Piyasayı Analiz Et (Agent 2'nin Görevi) console.log("Adım 2: Piyasa analizi yapılıyor..."); const marketAnalysisResponse = await llm.invoke([ new SystemMessage("Sen bir Finansal Piyasa Analistisin. Sana verilen portföy özetine dayanarak piyasa hakkında kısa bir analiz ve risk değerlendirmesi yap."), new HumanMessage(`Lütfen bu portföyü analiz et:\n\n${portfolioSummary}`) ]); const marketAnalysis = marketAnalysisResponse.content; console.log("Piyasa Analizi:\n", marketAnalysis); // Adım 3: Strateji Geliştir (Agent 3'ün Görevi) console.log("Adım 3: Yatırım stratejisi geliştiriliyor..."); const strategyResponse = await llm.invoke([ new SystemMessage("Sen bir Yatırım Stratejisi Danışmanısın. Sana verilen portföy özeti ve piyasa analizine dayanarak müşteriye 3 adet net ve uygulanabilir tavsiye sun."), new HumanMessage(`Portföy Özeti:\n${portfolioSummary}\n\nPiyasa Analizi:\n${marketAnalysis}\n\nLütfen stratejini oluştur.`) ]); const finalStrategy = strategyResponse.content; console.log("Nihai Strateji:\n", finalStrategy); // --- Sonuç --- res.json({ portfolio_summary: portfolioSummary, market_analysis: marketAnalysis, final_strategy: finalStrategy }); } catch (error) { console.error("Analiz sırasında bir hata oluştu:", error); res.status(500).json({ error: "Analiz sırasında bir sunucu hatası oluştu.", details: error.message }); } }); app.listen(PORT, () => { console.log(`Node.js MCP Sunucusu http://127.0.0.1:${PORT} adresinde çalışıyor.`); });

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/NBWolfer/mcpServerNode'

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