Skip to main content
Glama
TuokkiCode

Finviz MCP

by TuokkiCode

Finviz MCP

MCP-Server, der Claude (oder jedem anderen MCP-Client) Zugriff auf Finviz-Aktiendaten gewährt: Kennzahlen einer einzelnen Aktie, Nachrichten und Screener-Suchen sowie korrekte historische Kursdaten (Yahoo Finance). Die Daten werden live mit den Bibliotheken finvizfinance und yfinance abgerufen, es sind keine API-Schlüssel erforderlich.

Werkzeuge

  • get_stock(ticker) – Finviz-Kennzahlen einer einzelnen Aktie (KGV, Marktkapitalisierung, Margen, Renditen usw.)

  • get_stock_news(ticker) – Aktuelle Nachrichtenüberschriften der Aktie

  • get_price_history(ticker, days=7) – Korrekte tägliche Verlaufsdaten (Eröffnung/Höchst/Tiefst/Schluss/Volumen) von Yahoo Finance für bis zu 365 Tage, sowie eine fertige Analyse, welcher Tag der beste Kauftag gewesen wäre (niedrigster Preis und beste Rendite im Vergleich zum letzten Schlusskurs). Finviz selbst hat keine Verlaufsdaten-API, nur eine aktuelle Momentaufnahme und ein statisches Chart-Bild.

  • screen_stocks(...) – Finviz-Screener mit natürlichen Parametern (market_cap, sector, pe_max, rsi, dividend_yield_min, signal, ...). Claude muss nicht die internen Filterbezeichnungen von Finviz erklären – der Server übersetzt die Parameter automatisch in den nächstgelegenen von Finviz unterstützten Wert. Funktioniert nur, wenn lokal ausgeführt, nicht auf einem gehosteten Cloud-Server – siehe Einschränkungen.

  • list_screener_filters(search=None) / list_screener_signals() – Hilfsmittel für Claude, falls es einen Filter benötigt, der von screen_stocks noch nicht mit einem benannten Parameter abgedeckt wird. Der gefundene Wert kann als Parameter screen_stocks(extra_filters={...}) übergeben werden.

Die Parameter von screen_stocks werden stets dem nächstgelegenen von Finviz bereitgestellten „Korb“ zugeordnet (z. B. pe_max=18 → „Unter 20“), da der Finviz-Screener nur vordefinierte Wertebereiche und keine beliebigen Zahlen unterstützt.

Related MCP server: Yahoo Finance MCP Server

1. Lokales Testen

Erfordert Python 3.10+:

pip install -r requirements.txt
python server.py

Der Server startet unter http://localhost:8000/mcp (Streamable HTTP).

End-to-End getestet in dieser Umgebung (Installation, Start, initialize-Handshake und alle fünf Werkzeuge mit echten Finviz-Daten). Während des Tests stellte sich heraus, dass finvizfinance 1.3.0 von PyPI noch nicht auf dem neuesten Stand des überarbeiteten Finviz-Seitenlayouts war: get_stock stürzte vollständig ab (die alte CSS-Klasse quote-links heißt jetzt quote-header_categories, mit anderem Inhalt), und in der Tickerspalte von screen_stocks befand sich ein zusätzlicher Anfangsbuchstabe (z. B. „NVDA“ → „NNVDA“, aufgrund des neuen Logoplatzhalters von Finviz). server.py behebt beide Probleme direkt (siehe Kommentar am Anfang der Datei) – falls Finviz seine Seite erneut ändert, sollten diese Korrekturen zuerst überprüft werden.

Falls Python nicht auf dem Rechner installiert ist, aber Docker vorhanden ist, können Sie ohne lokale Python-Installation testen:

docker build -t finviz-mcp .
docker run -p 8000:8000 finviz-mcp

Ein schneller Funktionstest von der Befehlszeile aus (erfordert curl und dass der Server läuft):

curl -X POST http://localhost:8000/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}"

In der Antwort sollten sechs Werkzeuge angezeigt werden: get_stock, get_stock_news, get_price_history, screen_stocks, list_screener_filters, list_screener_signals.

2. Veröffentlichung (z. B. Render)

  1. Übertragen Sie dieses Verzeichnis in Ihr eigenes Git-Repository (GitHub/GitLab).

  2. Render → Neu + → Webdienst → Repository verbinden.

  3. Render erkennt die Dockerfile automatisch. Es sind keine separaten Umgebungsvariablen erforderlich – der Server liest den Port aus der von Render gesetzten PORT-Variable.

  4. Nach der Veröffentlichung erhalten Sie eine Adresse wie https://finviz-mcp.onrender.com. Der MCP-Endpunkt befindet sich dahinter unter /mcp, also: https://finviz-mcp.onrender.com/mcp.

Railway, Fly.io usw. funktionieren nach dem gleichen Prinzip (Dockerfile-basiertes Python-Hosting, Umgebungsvariable PORT).

3. Verbindung mit Claude

Claude → Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen → MCP-URL einfügen (https://<eigene-adresse>/mcp).

Claude unterstützt Remote-MCP-Server über Streamable HTTP, daher funktioniert dies ohne Weiteres.

4. Beispielaufforderungen

  • „Hol mir die Finviz-Grunddaten für NVDA.“

  • „Finde überverkaufte Technologieaktien mit einer Marktkapitalisierung über 10 Mrd. USD.“

  • „Zeige mir 15 Large-Cap-Dividendenaktien mit einer Rendite über 4 % und einem KGV unter 20.“

  • „Was sind die neuesten Nachrichten zu TSLA?“

  • „Finde Aktien, die heute als Top-Gewinner markiert sind und ein durchschnittliches Volumen über 1 Mio. haben.“

Einschränkungen

  • screen_stocks (und list_screener_filters/list_screener_signals) funktioniert nicht auf einem gehosteten Cloud-Server (getestet auf Render): Finviz gibt einen 403 Forbidden speziell für den Screener-Endpunkt (finviz.com/screener.ashx) von Rechenzentrums-IP-Adressen zurück, obwohl get_stock/get_stock_news/get_price_history vom selben Server völlig normal funktionieren (diese verwenden andere, weniger geschützte Endpunkte). Dies ließ sich nicht durch Anpassen der HTTP-Header beheben – es scheint sich um eine bewusste Sperre von Finviz für Rechenzentrums-IPs speziell für den Screener zu handeln. Wenn Sie die Funktion screen_stocks benötigen, führen Sie den Server lokal aus (python server.py) und verbinden Sie sich z. B. über einen cloudflared/ngrok-Tunnel, sodass die Anfragen von der IP Ihres Heimnetzwerks ausgehen.

  • Die Daten werden von den Websites von Finviz/Yahoo Finance gescrapt (keine offiziellen API-Schlüssel), daher kann die Funktionalität beeinträchtigt werden, wenn diese die Struktur ihrer Seiten ändern.

  • screen_stocks begrenzt die Ergebnisse standardmäßig auf 20 und maximal 50 Zeilen, damit die Anfrage schnell bleibt.

  • get_price_history begrenzt den Parameter days auf maximal 365.

  • Enthält keine Authentifizierung – wenn der Dienst öffentlich im Internet verfügbar ist, kann jeder, der die URL kennt, darauf zugreifen. Die Daten sind öffentlich, aber denken Sie daran, falls Sie später kostenpflichtige/eingeschränkte Funktionen hinzufügen.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides comprehensive financial market data and news through the Finnhub API. Enables real-time stock quotes, company profiles, financial metrics, analyst recommendations, and market news access.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time stock quotes, historical price data, financial news, and multi-stock comparisons using Yahoo Finance data. Enables users to access comprehensive financial market information through natural language queries.
    243 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time stock market data through Yahoo Finance without requiring an API key. Get quotes, historical data, company information, financial statements, and ticker search capabilities.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time stock quotes, historical data, and stock search via Yahoo Finance, enabling AI assistants to access and analyze financial market data.
    57 npm
    19
    MIT