ZVV-MCP mit SpiceAI
Dieses Projekt demonstriert die Integration von SpiceAI in eine Next.js-Anwendung.
Lokale Entwicklung
- Installiere die Abhängigkeiten:
- Installiere die SpiceAI-Runtime:
- Starte die SpiceAI-Runtime:
- Starte den Entwicklungsserver:
- Öffne http://localhost:3000 im Browser
Vercel-Deployment
Für das Deployment auf Vercel benötigst du einen Spice.ai-API-Key:
- Erstelle einen Account auf spice.ai
- Erstelle eine App und generiere einen API-Key
- Verknüpfe dein GitHub-Repository mit Vercel
- Füge den API-Key als Umgebungsvariable
SPICE_API_KEY
in deinen Vercel-Projekteinstellungen hinzu - Deploye dein Projekt
Funktionen
- SQL-Abfragen an SpiceAI senden
- Ergebnisse in einer Tabelle anzeigen
- Fehlerbehandlung für fehlgeschlagene Abfragen
Technologien
- Next.js 14
- TypeScript
- SpiceAI Client
- Vercel Deployment
Übersicht
ZVV-MCP ist eine Anwendung, die Spice.ai mit Daten von opendata.swiss kombiniert, um öffentliche Verkehrsdaten des Zürcher Verkehrsverbunds (ZVV) mittels LLM abfragbar zu machen.
Features
- Spice.ai Integration: Beschleunigte Datenabfragen für effiziente Verarbeitung großer Verkehrsdatensätze
- opendata.swiss Anbindung: Zugriff auf offizielle ZVV-Daten
- LLM-Abfragen: Natürlichsprachliche Abfrage von Verkehrsinformationen
- Responsive Design: Optimale Nutzung auf allen Geräten
Projektstruktur
src/
: Quellcode der Anwendungcomponents/
: Wiederverwendbare UI-Komponentenpages/
: Next.js-Seiten und API-Routesstyles/
: Globale CSS-Stile
public/
: Statische Dateiendocs/
: Dokumentationzvv-data/
: Spice.ai Konfiguration und Daten
Technische Architektur
Systemkomponenten
Die Anwendung besteht aus drei Hauptkomponenten:
- Next.js Frontend: React-basierte Benutzeroberfläche
- Spice.ai Engine: Verarbeitet und analysiert Verkehrsdaten
- OpenAI Service: Stellt LLM-Funktionalitäten für natürlichsprachliche Abfragen bereit
Datenfluss
Sequenzdiagramm für eine Benutzeranfrage
Installation
Voraussetzungen
- Node.js (>= 14.x)
- npm oder yarn
- Spice.ai CLI (siehe docs/installation.md)
- Docker (optional, für Containerisierung)
Setup
Entwicklung
Daten
ZVV GTFS-Daten
Das Projekt verwendet GTFS-Daten (General Transit Feed Specification) vom Zürcher Verkehrsverbund. Die Daten werden im data/
-Verzeichnis erwartet und sind in der spicepod.yaml
konfiguriert.
Hinweis: Die CSV-Datendateien sind sehr groß und werden nicht im Git-Repository gespeichert. Sie müssen separat heruntergeladen und im data/
-Verzeichnis platziert werden.
Folgende Dateien werden benötigt:
stops.csv
- Haltestellen (~5.791 Einträge)routes.csv
- Linien (~383 Einträge)trips.csv
- Fahrten (~205.526 Einträge)stop_times.csv
- Fahrplanzeiten (~3.456.460 Einträge)calendar.csv
- Betriebstage (~1.695 Einträge)transfers.csv
- Umsteigeverbindungen (~10.342 Einträge)agency.csv
- Verkehrsunternehmenshapes.csv
- Streckenverläufecalendar_dates.csv
- Zusätzliche Betriebstage/Ausnahmen
Die Daten können von opendata.swiss heruntergeladen werden.
Best Practices
Entwicklung
- Komponenten-Design: Funktionale React-Komponenten mit Hooks verwenden
- Typisierung: TypeScript für statische Typprüfung und bessere IDE-Unterstützung
- State Management: React Context für geteilten Zustand zwischen Komponenten
- CSS-Organisation: Tailwind-Klassen für konsistentes Design
Datenverarbeitung
- Daten-Caching: Spice.ai Beschleunigung für schnelle Abfragen großer Datensätze
- Inkrementelles Laden: Nur benötigte Daten laden, um Leistung zu optimieren
- Error Handling: Robuste Fehlerbehandlung für API-Aufrufe und Datenverarbeitung
LLM-Integration
- Prompt Engineering: Präzise System-Prompts für genaue Antworten
- Kontext-Management: Relevante Daten ins LLM-Prompt aufnehmen
- Antwort-Parsing: Strukturierte Verarbeitung der LLM-Antworten
Produktion
Dokumentation
- Installation von Spice.ai
- Datenmodell
- Projektplan
- LLM-Integration
- API-Dokumentation - OpenAPI/Swagger Spezifikation
Technologie-Stack
- Frontend: Next.js, React, TypeScript, Tailwind CSS
- Datenverarbeitung: Spice.ai
- Datenquellen: opendata.swiss (GTFS-Daten)
- KI-Modelle: OpenAI GPT-4o für natürlichsprachliche Abfragen
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
An application that combines Spice.ai with ZVV (Zurich Public Transport) data from opendata.swiss, enabling natural language queries of public transport information through LLM integration.
Related MCP Servers
- AsecurityAlicenseAqualityProvides integration with OpenRouter.ai, allowing access to various AI models through a unified interface.Last updated -415428TypeScriptApache 2.0
- AsecurityFlicenseAqualityEnables Large Language Models to access real-time data on Vilnius public transport stops and routes through the Model Context Protocol.Last updated -21Python
- AsecurityAlicenseAqualityThis server allows users to interact with their Zotero library through the Model Context Protocol, providing tools for searching items, retrieving metadata, and accessing full text using natural language queries.Last updated -361PythonMIT License
- -securityAlicense-qualityAn integration server implementing the Model Context Protocol that enables LLM applications to interact with Milvus vector database functionality, allowing vector search, collection management, and data operations through natural language.Last updated -122PythonApache 2.0