dtb-members-mcp
by LarsZilch
README.md
# dtb-members-mcp
MCP-Server fuer Vereins-Mitgliederdaten aus einem lokalen CSV- oder Excel-Export. Die lokale Datei ist die fuehrende Datenquelle. Ein Playwright-basierter DTB/nuLiga-Refresh ist vorbereitet, wird aber nur auf expliziten Tool-Aufruf gestartet und erzwingt noch keinen Download.
## Installation
```bash
npm install
npm run build
```
## Konfiguration
Kopiere `.env.example` nach `.env` und passe die Pfade an. Keine echten Zugangsdaten ins Repository einchecken.
```dotenv
MEMBERS_FILE_PATH=./data/mitglieder.csv
ARCHIVE_DIR=./data/archive
DOWNLOAD_DIR=./data/downloads
DTB_USERNAME=
DTB_PASSWORD=
DTB_LOGIN_URL=https://dtb.liga.nu
DTB_MEMBERS_URL=
```
Lege den DTB/nuLiga-Export lokal ab, zum Beispiel als `data/mitglieder.csv`, oder setze `MEMBERS_FILE_PATH` auf den Pfad deiner lokalen Datei. Mitgliederdaten werden nicht ins Repository eingecheckt.
## Start
```bash
npm start
```
Fuer Entwicklung:
```bash
npm run dev
npm run typecheck
```
## Hermes/MCP Beispiel
```json
{
"mcpServers": {
"dtb-members": {
"command": "node",
"args": ["S:/Code/tennis-mcp/dist/server.js"],
"env": {
"MEMBERS_FILE_PATH": "S:/Code/tennis-mcp/data/mitglieder.csv"
}
}
}
}
```
## Tools
- `get_data_status`: geladene Datei, Aenderungsdatum, Mitgliederzahl, erkannte Spalten.
- `list_members`: Mitglieder mit `limit` und `offset` auflisten.
- `search_members`: Freitextsuche ueber Name, E-Mail, Ort und Mitgliedsnummer.
- `get_member`: eindeutige Suche nach Mitgliedsnummer, E-Mail oder Name.
- `filter_members`: Filter nach Alter, Geschlecht, Status, Ort, Mannschaft, Lizenz und Eintrittsdatum.
- `round_birthdays`: runde Geburtstage in einem Jahr.
- `birthdays_between`: Geburtstage zwischen zwei Datumswerten im Format `YYYY-MM-DD`.
- `member_statistics`: Gesamtzahl, aktiv/inaktiv, Geschlecht und Altersgruppen.
- `reload_local_file`: lokale Datei neu laden.
- `refresh_members_from_dtb`: defensiver Playwright-Platzhalter fuer spaeteren DTB/nuLiga-Download.
## Beispielabfragen
```json
{ "tool": "get_data_status", "arguments": {} }
{ "tool": "list_members", "arguments": { "limit": 10, "offset": 0 } }
{ "tool": "search_members", "arguments": { "query": "Berlin", "limit": 20 } }
{ "tool": "filter_members", "arguments": { "minAge": 7, "maxAge": 17, "includeInactive": false } }
{ "tool": "round_birthdays", "arguments": { "year": 2026 } }
{ "tool": "birthdays_between", "arguments": { "from": "2026-01-01", "to": "2026-01-31" } }
```
## Daten und Datenschutz
CSV- oder Excel-Dateien sollen manuell aus DTB/nuLiga exportiert und lokal abgelegt werden. `.env`, `data/*.csv`, `data/*.xlsx`, `data/downloads/` und `data/archive/` sind in `.gitignore` ausgeschlossen. Der Server loggt keine Mitgliedsdaten und gibt bei Fehlern keine Passwoerter aus.
Der optionale Playwright-Refresh haengt von der konkreten Login- und Portalstruktur ab. Wenn Zugangsdaten oder Ziel-URL fehlen, liefert `refresh_members_from_dtb` eine klare Fehlermeldung. Wenn Selektoren nicht eindeutig erkannt werden, bricht die Funktion mit einem Hinweis ab, damit die konkreten Portal-Selektoren spaeter sauber ergaenzt werden koennen.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues