mcp
This commit is contained in:
73
README.md
Normal file
73
README.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# Strava MCP
|
||||
|
||||
Diese Anwendung besteht aus einer NestJS API, einem Angular Client und einem MCP-Server fuer KI-Zugriff auf die synchronisierten Strava-Daten.
|
||||
|
||||
## MCP starten
|
||||
|
||||
Im Docker-Container startet der MCP-Server automatisch als HTTP-Endpunkt. nginx veroeffentlicht ihn unter `/mcp` auf demselben Port wie den Client.
|
||||
|
||||
```bash
|
||||
docker run -d --env-file .env -p 8080:80 --name strava-mcp 192.168.30.40:3000/bastian/strava-mcp:latest
|
||||
```
|
||||
|
||||
Der MCP-Endpunkt ist dann erreichbar unter:
|
||||
|
||||
```text
|
||||
http://<server>:8080/mcp
|
||||
```
|
||||
|
||||
Optional kann der Endpunkt mit `MCP_AUTH_TOKEN` geschuetzt werden. MCP-Clients muessen dann den Header `Authorization: Bearer <token>` senden.
|
||||
|
||||
Fuer lokale stdio-Nutzung gibt es weiterhin einen separaten Einstieg. Die `.env` kann im Repository-Root oder im `api`-Ordner liegen.
|
||||
|
||||
```bash
|
||||
cd api
|
||||
npm run build
|
||||
npm run start:mcp
|
||||
```
|
||||
|
||||
Beispiel fuer einen MCP-Client:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"strava": {
|
||||
"command": "node",
|
||||
"args": ["C:/repositories/strava-mcp/api/dist/mcp-main.js"],
|
||||
"env": {
|
||||
"DATABASE_HOST": "mysql.example.internal",
|
||||
"DATABASE_PORT": "3306",
|
||||
"DATABASE_USER": "strava_app",
|
||||
"DATABASE_PASSWORD": "change-me",
|
||||
"DATABASE_NAME": "strava_app",
|
||||
"APP_ENCRYPTION_KEY": "change-me-to-a-long-random-secret",
|
||||
"STRAVA_CLIENT_ID": "change-me",
|
||||
"STRAVA_CLIENT_SECRET": "change-me",
|
||||
"STRAVA_REDIRECT_URI": "http://localhost:3000/auth/strava/callback"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Der HTTP-MCP kann lokal auch ohne Docker gestartet werden:
|
||||
|
||||
```bash
|
||||
cd api
|
||||
npm run build
|
||||
npm run start:mcp:http
|
||||
```
|
||||
|
||||
## MCP Tools
|
||||
|
||||
- `get_athlete_profile`: verbundenes Strava-Profil, Aktivitaetsanzahl, Sportarten und neueste Aktivitaet.
|
||||
- `get_training_dashboard`: Summen, Durchschnitte, Wochenverlauf, Sportarten und letzte Aktivitaeten.
|
||||
- `get_running_summary`: Laufumfang, Pace, laengster Lauf, Hoehenmeter und Wochenverlauf.
|
||||
- `get_running_kpis`: Load, Acute/Chronic Ratio, Monotony, Recovery, Intensitaetsverteilung, Progression und PR-Schaetzungen.
|
||||
- `list_activities`: Aktivitaeten nach Zeitraum, Sportart und Name suchen.
|
||||
- `get_activity_detail`: Details zu einer Aktivitaet, optional mit begrenzten Stream-Punkten und Raw Payload.
|
||||
- `get_running_activity_detail`: Laufdetails mit Splits und Serien.
|
||||
- `get_sync_status`: letzter Strava-Sync-Job.
|
||||
- `start_strava_sync`: startet oder reaktiviert den Strava-Sync.
|
||||
|
||||
Zusätzlich gibt es den Prompt `training_review`, der eine KI zur strukturierten Analyse der Trainingsdaten anleitet.
|
||||
Reference in New Issue
Block a user