KI Chatbots / MCP Server

Vorteile des MCP Servers
Der TeslaLogger MCP Server verbindet deine lokal gespeicherten Fahrzeugdaten mit KI-Assistenten wie Claude oder anderen MCP-fähigen Anwendungen. Das bringt mehrere praktische Vorteile:
Natürlichsprachliche Auswertung
Statt SQL-Abfragen oder Grafana-Dashboards kannst du einfach in normaler Sprache fragen – z.B. „Wie viel habe ich diese Woche geladen?" oder „Zeig mir meine längsten Fahrten im letzten Monat." Der KI-Assistent übersetzt die Frage automatisch in den passenden Tool-Aufruf.
Datensouveränität – keine Cloud
Alle Daten bleiben lokal auf deinem Raspberry Pi oder Docker-Host. Der MCP Server läuft im eigenen Netzwerk; es werden keine Fahrzeugdaten an externe Server übertragen. Die KI bekommt nur das, was du explizit abfragst.
Offenes Protokoll – viele Clients
MCP (Model Context Protocol) ist ein offener Standard. Neben Claude Desktop funktioniert der TeslaLogger MCP Server mit jedem kompatiblen Client – z.B. VS Code mit Copilot, Cursor, oder eigenen Skripten. Die Konfiguration ist minimal (eine URL, kein API-Key).
Komplexe Analysen ohne Programmierkenntnisse
Zusammenhänge, die in Grafana mehrere Dashboards erfordern würden, lassen sich per Chat auf einmal beantworten: „An welchen Tagen war mein Reifendruck niedrig und wie war gleichzeitig der Verbrauch?" – der Assistent kombiniert get_tpms und get_trips selbstständig.
Erweiterbar für eigene Workflows
Da der Server eine Standard JSON-RPC 2.0 API bietet, lässt er sich auch in Automatisierungen (z.B. n8n, Home Assistant Automations, eigene Skripte) einbinden – nicht nur in Chat-Clients.
Funktionstest
Raspberries verwenden Port 5001 für den MCP Server. Als Test kann man im Browser eingeben:
Wenn alles klappt bekommt man als Ausgabe:
{"status":"ok","server":"TeslaLogger MCP Server","port":5001}
Im Docker muss man den Port öffnen:
ports:
- ${TESLALOGGER_PORT:-5010}:5000
- 5001:5001
Chat-Client einrichten (Claude Desktop)
Als Beispiel mit Claude Desktop.
Claude Desktop runterladen:
- In den Einstellungen von Claude Desktop zu Entwickler gehen
- Config bearbeiten
- mcpServer hinzufügen
- Wenn auf dem System Node.js nicht installiert ist, dann muss man es nachinstallieren: https://nodejs.org/en/download
- ganz wichtig: nach dem speichern der Config muss Claude Desktop beendet und neu gestartet werden!
- Prompt für einen Funktionstest: "Wie viele Fahrzeuge habe ich im Teslalogger"
{
"mcpServers": {
"TeslaLogger": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://raspberry:5001/mcp",
"--allow-http"
]
}
},
"preferences": {
"coworkScheduledTasksEnabled": false,
"ccdScheduledTasksEnabled": false,
"coworkWebSearchEnabled": true,
"epitaxyPrefs": {
"starred-local-code-sessions": [],
"starred-cowork-spaces": [],
"starred-session-groups": [],
"dframe-local-slice": {
"pinnedOrder": [],
"customGroupAssignments": {},
"customGroupOrder": {}
}
},
"sidebarMode": "chat"
}
}
Beispiel config für VS-Code mcp.json
{
"servers": {
"TeslaLogger mcp server": {
"url": "http://raspberry:5001/mcp",
"type": "http"
}
},
"inputs": []
}
Test ob der MCP Server funktioniert:
curl -X POST http://raspberry:5001/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":1,
"method":"tools/list"
}'
Als Ausgabe kommen die Befehle, die der MCP Server kann:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "get_vehicles",
"description": "Retrieve all vehicles from TeslaLogger. Returns ID, display name, VIN, model and status.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
}
},
{
"name": "get_trips",
"description": "Retrieve trips for a vehicle. Returns start/destination, distance, consumption, duration and temperatures. Use 'from'/'to' for a specific date range, or 'days' to look back from now.",
...
Verfügbare Tools
get_vehicles
Liefert alle Fahrzeuge.
Parameter: keine
get_trips
Liefert Fahrten im Zeitraum.
Parameter:
car_id(required)from(optional,yyyy-MM-ddoderyyyy-MM-dd HH:mm:ss)to(optional,yyyy-MM-ddoderyyyy-MM-dd HH:mm:ss)days(optional, Default7; wird ignoriert, wennfromgesetzt ist)
get_charges
Liefert Ladevorgänge im Zeitraum.
Parameter:
car_id(required)from(optional)to(optional)days(optional)
get_errors
Liefert Alerts/Fehler aus alerts/alert_names, gefiltert auf startedAt.
Parameter:
car_id(required)from(optional)to(optional)days(optional)
get_degradation
Liefert Degradation-relevante Ladepunkte (max range, odometer).
Parameter:
car_id(required)from(optional)to(optional)days(optional)
get_firmware
Liefert Firmware-Historie aus car_version.
Parameter:
car_id(required)from(optional)to(optional)days(optional)
get_tpms
Liefert TPMS-Werte aus Tabelle TPMS, stündlich aggregiert.
Parameter:
car_id(required)from(optional)to(optional)days(optional)
Rückgabe-Felder:
hourtpms_fltpms_frtpms_rltpms_rr
Zeitfilter-Logik
Alle Tools mit Zeitfilter nutzen dieselbe Logik:
- Wenn
from/togesetzt sind, wird dieser Bereich verwendet. - Wenn
fromnicht gesetzt ist, wirddaysgenutzt (now - daysbisnow). - Wenn
tofehlt, istto = now.
Logging
Alle MCP Requests werden mit Methode, ID und Parametern geloggt.
Beispiel-Logeintrag:
MCP Request: method=tools/call id=123 params={...}
Beispiel-Request (tools/list)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
Beispiel-Request (tools/call)
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_charges",
"arguments": {
"car_id": 1,
"from": "2025-01-01 00:00:00",
"to": "2025-01-31 23:59:59"
}
}
}