financial-analyst-mcp
MCP-gestützter Finanzanalyst
Ein lokaler KI-Finanzanalyst, der auf einem echten MCP-Server (Model Context Protocol) basiert. Statt dass ein einzelner Chatbot Aktientrends errät, arbeiten zwei Agenten zusammen:
Validator-Agent – prüft Daten aus dem Internet (Yahoo Finance, News-APIs) auf Lücken, fehlerhafte Werte oder Ticker-Mismatches, bevor etwas an das LLM gelangt.
Analyst-Agent – analysiert die validierten Daten und die Ausgaben der MCP-Tools, um eine strukturierte Zusammenfassung zu erstellen (Trend, gleitende Mittelwerte, Volatilität und relevante Nachrichtenstimmung).
Beide Agenten rufen Tools auf, die von einem eigenen MCP-Server bereitgestellt werden – das ist der Kern des Projekts, nicht nur LangChain-Klebe-Code.
Was ich über eine einfache Tutorial-Version hinaus hinzugefügt habe
Zwei-Agenten-Aufteilung (Validator → Analyst) statt eines einzelnen Agenten, der alles erledigt
Ein echter MCP-Server mit 3 Tools, einschließlich Validierung als eigenem Tool
LangSmith-Tracing für beide Agenten
Neon-Postgres-Caching-Schicht (vermeidet erneutes Aufrufen von APIs mit Ratenbegrenzung)
Eine kleine Evaluations-Suite mit handberechneten Ground-Truth-Werten
Eine bereitgestellte Web-App (FastAPI auf Render, statisches Frontend auf Vercel)
Related MCP server: MonteWalk
Architektur
User query (ticker + date range)
│
▼
Validator agent ──calls──▶ MCP server ──▶ fetch_price_data (Yahoo Finance)
│ ▶ validate_data
│ (retries once on bad data)
▼
Analyst agent ──calls──▶ MCP server ──▶ analyze_chart (moving averages, volatility)
│ ▶ get_news_sentiment
▼
Structured summary + chart data → FastAPI → frontendProjektstruktur
backend/
mcp_server/ # the MCP server + its 3 tools (this is the centerpiece)
agents/ # Validator agent, Analyst agent
orchestration/ # LangGraph wiring: Validator -> Analyst
db/ # Neon Postgres cache + eval result storage
evals/ # hand-checked test cases + eval runner
main.py # FastAPI app, deployed on Render
frontend/
index.html # single-page UI, deployed on Vercel
vercel.json
render.yaml # Render deployment config for the backend
requirements.txt
.env.exampleEinrichtung
Klonen und installieren
git clone <your-repo-url> cd financial-analyst-mcp python -m venv venv && source venv/bin/activate pip install -r requirements.txtUmgebungsvariablen – kopiere
.env.examplenach.envund fülle aus:GROQ_API_KEY– kostenlos, keine Zahlung erforderlich (Anmeldung unter console.groq.com), wird vom Analyst-Agenten und der Nachrichten-Relevanzprüfung verwendetDATABASE_URL– deine RDS-Postgres-VerbindungszeichenfolgeNEWSAPI_KEY– kostenlose Stufe unter newsapi.org (100 Anfragen/Tag, keine Karte erforderlich)LANGCHAIN_API_KEY,LANGCHAIN_PROJECT– für LangSmith-Tracing (optional, kostenlose Stufe)
Datenbanktabellen einrichten
python -m backend.db.database --initBackend lokal ausführen
uvicorn backend.main:app --reload --port 8000Frontend lokal ausführen – öffne einfach
frontend/index.htmlin einem Browser oder stelle es bereit:cd frontend && python -m http.server 5500Aktualisiere die Konstante
API_BASE_URLnahe dem Anfang vonindex.html, sodass sie auf dein Backend zeigt (http://localhost:8000lokal, deine Render-URL nach der Bereitstellung).Evaluations-Suite ausführen
python -m backend.evals.run_evals
Bereitstellung (AWS kostenlose Stufe)
Alles unten bleibt innerhalb von AWS 12-monatiger kostenloser Stufe (solange du die angegebenen Instanzgrößen der kostenlosen Stufe wählst). Hierfür sind keine Codeänderungen erforderlich – dieselbe FastAPI-App und derselbe MCP-Server laufen unverändert.
1. Datenbank → RDS (Postgres)
AWS Console → RDS → Datenbank erstellen.
Engine: PostgreSQL. Vorlagen: Kostenlose Stufe.
Instanzklasse:
db.t3.micro(oderdb.t4g.micro, je nachdem, was die Konsole als kostenlose Stufe anbietet).Hauptbenutzernamen und Passwort festlegen und notieren.
Unter „Konnektivität" Öffentlicher Zugriff: Ja setzen (erforderlich, damit deine EC2-Instanz und dein eigener Rechner darauf zugreifen können – für ein Portfolio-Projekt ist das in Ordnung; später kannst du es einschränken).
Sobald sie läuft, den Endpunkt kopieren (sieht aus wie
xxxx.rds.amazonaws.com) und deine Verbindungszeichenfolge erstellen:DATABASE_URL=postgresql://<username>:<password>@<endpoint>:5432/postgresIn der Security Group der RDS-Instanz eine eingehende Regel hinzufügen: PostgreSQL (Port 5432), Quelle = deine IP (für lokale Tests) und später die Security Group deiner EC2-Instanz.
2. Backend → EC2
AWS Console → EC2 → Instanz starten.
AMI: Amazon Linux 2023 (oder Ubuntu 22.04). Instanztyp: t2.micro (für kostenlose Stufe geeignet).
Ein Schlüsselpaar erstellen/herunterladen (
.pem-Datei) – du brauchst es für SSH.Security Group: eingehendes SSH (Port 22, deine IP) und benutzerdefinierten TCP-Port 8000 von überall (
0.0.0.0/0) erlauben, damit das Frontend die API erreichen kann.Instanz starten und dann per SSH verbinden:
ssh -i your-key.pem ec2-user@<instance-public-ip>Auf der Instanz:
git clone <your-repo-url> financial-analyst-mcp cd financial-analyst-mcp nano .env # paste in GROQ_API_KEY (free, from console.groq.com), DATABASE_URL (from RDS), NEWSAPI_KEY, etc. bash aws/ec2-setup.shDies installiert Python, Abhängigkeiten, erstellt die Datenbanktabellen und startet das Backend als
systemd-Dienst (financial-analyst), der auch nach dem Trennen der Verbindung weiterläuft und bei einem Neustart der Instanz automatisch neu startet.Prüfen, ob es läuft:
curl http://<öffentliche-instanz-ip>:8000/health
3. Frontend → S3-Statische-Website
API_BASE_URLnahe dem Anfang vonfrontend/index.htmlaufhttp://<deine-ec2-öffentliche-ip>:8000aktualisieren.Von deinem eigenen Rechner (mit installierter AWS CLI und einmalig ausgeführten
aws configuremit deinen Anmeldedaten):BUCKET_NAME=your-unique-bucket-name bash aws/deploy-frontend-s3.shDas Skript erstellt den Bucket, aktiviert das Hosting statischer Websites und lädt
index.htmlhoch. Es gibt am Ende deine Live-URL aus (http://<bucket>.s3-website-<region>.amazonaws.com).Wenn du das Frontend änderst, führe einfach dasselbe Skript erneut aus, um es erneut hochzuladen.
Hinweise
Die öffentliche IP von EC2 ändert sich, wenn du die Instanz stoppst/startest (außer du weist eine elastische IP zu, die ebenfalls kostenlos ist, solange sie an eine laufende Instanz angehängt ist). Wenn sich deine IP ändert, aktualisiere
API_BASE_URLund führe das S3-Bereitstellungsskript erneut aus.Um die Kosten bei null zu halten, bleib bei den kostenlosen Größen
t2.micro/db.t3.micround denke daran, dass die AWS-kostenlose Stufe nur deine ersten 12 Monate abdeckt.
Wird das in der AWS-kostenlosen Stufe etwas kosten?
Nein, solange du innerhalb dieser Grenzen bleibst (alles Teil der 12-monatigen kostenlosen Stufe von AWS für neue Konten):
Service | Limit der kostenlosen Stufe | Nutzung dieses Projekts |
EC2 (t2.micro/t3.micro) | 750 Stunden/Monat | 1 Instanz rund um die Uhr = ~730 Std. – passt in das Limit |
RDS (db.t3.micro/t4g.micro) | 750 Stunden/Monat + 20 GB Speicher | 1 Datenbankinstanz = passt in das Limit |
S3 | 5 GB Speicher, 20.000 GET / 2.000 PUT Anfragen/Monat | Eine einzelne HTML-Datei und leichter Portfolio-Verkehr – bei Weitem nicht erreicht |
Datenübertragung nach außen | 100 GB/Monat (erste 12 Monate) | Portfolio-Niveau-Verkehr kommt dem nicht nahe |
Dinge, die GELD kosten werden, also vermeide sie:
Starten einer zweiten EC2-Instanz oder RDS-Datenbank gleichzeitig (nur die ersten kostenlosen Stunden pro Dienst sind kostenlos – zwei laufende Instanzen verbrauchen doppelte Stunden)
Verwenden eines größeren Instanztyps als
t2.micro/t3.micro(EC2) oderdb.t3.micro/db.t4g.micro(RDS)Anfordern einer elastischen IP und diese nicht an eine laufende Instanz anhängen – AWS berechnet Gebühren für nicht angehängte elastische IPs, genau um dies zu verhindern
Wenn dein AWS-Konto nicht brandneu ist – die kostenlose Stufe gilt 12 Monate ab Kontoerstellung. Wenn du das Konto also länger hast, werden diese Dienste normal abgerechnet
Ein Sicherheitsnetz, das sich auf jeden Fall lohnt: AWS Console → Billing → Budgets → ein Budget- Benachrichtigung für 1 $ erstellen. Du bekommst sofort eine E-Mail, sobald etwas Geld kostet, und bist nie überrascht.
Hinweise zur MCP-Ebene
Der MCP-Server (backend/mcp_server/server.py) ist ein eigenständiger Prozess, der das Model
Context Protocol über stdio spricht. Die Agenten verbinden sich als MCP-Clients mit ihm und verwenden
langchain-mcp-adapters, das die MCP-Tools automatisch in LangChain-kompatible Tools umwandelt.
Das bedeutet, derselbe MCP-Server könnte ohne Änderungen in Claude Desktop, Cursor oder
jeden anderen MCP-kompatiblen Host eingebunden werden – genau darum geht es, ihn so zu bauen,
statt Tool-Schemata fest im Agenten zu verdrahten.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
Real-time market events, sentiment, and technical analysis as MCP tools, backed by real data.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to retrieve real-time stock data, manage watchlists, and perform comprehensive technical analysis using Yahoo Finance API. Provides 18+ tools for stock price tracking, trend analysis, volatility assessment, and financial indicators through MCP integration.MIT
- AlicenseCqualityDmaintenanceProvides AI agents with institutional-grade quantitative finance tools including real-time market data, paper trading via Alpaca, risk analysis with Monte Carlo simulations, backtesting, and multi-source news sentiment analysis for portfolio management and trading strategy development.315MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to access financial data and perform analysis by exposing AlphaVantage API endpoints as MCP tools, including company overview, income statement, balance sheet, cash flow, and earnings reports.1
- AlicenseNot gradedqualityDmaintenanceProvides 10 financial data tools (market data, economic indicators, news, insider trades, and calendars) via a single MCP layer, enabling any MCP-compatible LLM to access diverse financial data through a unified interface.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MalindaBotheju/financial-analyst-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server