ZVV-MCP
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.
README
ZVV-MCP mit SpiceAI
Dieses Projekt demonstriert die Integration von SpiceAI in eine Next.js-Anwendung.
Lokale Entwicklung
- Installiere die Abhängigkeiten:
npm install
- Installiere die SpiceAI-Runtime:
curl https://install.spiceai.org | /bin/bash
- Starte die SpiceAI-Runtime:
spice run
- Starte den Entwicklungsserver:
npm run dev
- Ö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_KEYin 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
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ GTFS-Daten │───>│ Spice.ai │<───│ Next.js │<───│ Benutzer- │
│ (opendata) │ │ Engine │ │ Frontend │ │ anfrage │
└─────────────┘ └──────┬──────┘ └──────┬──────┘ └──────────────┘
│ │
│ │
│ ▼
│ ┌─────────────┐
└──────────>│ OpenAI LLM │
│ (GPT-4o) │
└─────────────┘
Sequenzdiagramm für eine Benutzeranfrage
┌─────────┐ ┌─────────┐ ┌──────────┐ ┌────────┐
│ Benutzer│ │ Frontend│ │ OpenAI │ │Spice.ai│
└────┬────┘ └────┬────┘ └─────┬────┘ └────┬───┘
│ │ │ │
│ Stellt Frage │ │ │
│ zu ZVV-Linien │ │ │
│────────────────────>│ │ │
│ │ │ │
│ │ Verbindungsstatus │ │
│ │ abfragen │ │
│ │───────────────────────────────────────────>
│ │ │ │
│ │ Daten-Metadaten │ │
│ │<───────────────────────────────────────────
│ │ │ │
│ │ LLM-Anfrage mit │ │
│ │ Kontext & Frage │ │
│ │────────────────────>│ │
│ │ │ │
│ │ LLM-Antwort │ │
│ │<────────────────────│ │
│ │ │ │
│ Antwort anzeigen │ │ │
│<────────────────────│ │ │
│ │ │ │
┌────┴────┐ ┌────┴────┐ ┌─────┴────┐ ┌────┴───┐
│ Benutzer│ │ Frontend│ │ OpenAI │ │Spice.ai│
└─────────┘ └─────────┘ └──────────┘ └────────┘
Installation
Voraussetzungen
- Node.js (>= 14.x)
- npm oder yarn
- Spice.ai CLI (siehe docs/installation.md)
- Docker (optional, für Containerisierung)
Setup
# Projektabhängigkeiten installieren
npm install
# Spice.ai installieren (siehe docs/installation.md für Details)
curl -fsSL https://raw.githubusercontent.com/spiceai/spiceai/trunk/install/install.sh | bash
# Spice.ai Projekt initialisieren
spice init zvv-data
Entwicklung
# Next.js Entwicklungsserver starten
npm run dev
# In einem separaten Terminal: Spice.ai Runtime starten
cd zvv-data
spice run
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
npm run build
npm start
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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。