LarsZilch

dtb-members-mcp

Community LarsZilch
Updated

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

npm install
npm run build

Konfiguration

Kopiere .env.example nach .env und passe die Pfade an. Keine echten Zugangsdaten ins Repository einchecken.

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

npm start

Fuer Entwicklung:

npm run dev
npm run typecheck

Hermes/MCP Beispiel

{
  "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

{ "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.

MCP Server ยท Populars

MCP Server ยท New