Skip to main content
Glama
tomo789

startgg-mcp-server

by tomo789

startgg-mcp-server

Ein Model Context Protocol-Server für die start.gg GraphQL-API. Er ermöglicht es MCP-Clients (Claude Code, Claude Desktop und anderen), Turniere zu entdecken, Events, Teilnehmer, Sets, Platzierungen und Streams für jedes Spiel auf start.gg in natürlicher Sprache zu durchsuchen.

Was ist das?

start.gg bietet eine leistungsstarke, aber komplexe GraphQL-API: Entrants vs. Teilnehmer vs. Spieler, ganzzahlige Set-Zustände, komplexitätsbegrenzte Paginierung, Epochen-Zeitstempel. Dieser Server kapselt diese API in eine kleine Reihe von MCP-Tools mit:

  • Normalisierte Ausgabe — Sets kommen als { round, state: "COMPLETED", entrant1: { gamerTag, seed }, score, winnerEntrantId, ... } zurück, statt als rohe GraphQL-Verschachtelung

  • URL-Auflösung — füge eine start.gg-URL ein, erhalte Turnier-/Event-IDs zurück

  • Integrierte Ratenbegrenzung, Wiederholungen und Caching abgestimmt auf die dokumentierten Grenzen von start.gg

Der Server ist spielunabhängig. Spielspezifische Logik (z. B. Smash-Upset-Erkennung) gehört in Anwendungen, die darauf aufbauen — siehe examples/smash-ultimate-watcher.

Related MCP server: Start.gg MCP Server

Funktionen

  • 15 schreibgeschützte Tools für Entdeckung, Turniere, Events, Spieler, Streams und URL-Auflösung

  • Eingabevalidierung (Zod) bei jedem Tool — ungültige IDs, übermäßige Seitengrößen und fehlerhafte URLs erreichen nie die API

  • Gleitendes Fenster-Ratenlimit (Standard 75 Anfragen/60s gegenüber 80 bei start.gg), Wiederholungen mit exponentiellem Backoff und Retry-After-Unterstützung

  • In-Memory-Cache mit kurzer TTL für Metadatenabfragen

  • Typisierte Fehlercodes: AUTH_ERROR, RATE_LIMITED, NOT_FOUND, INVALID_INPUT, STARTGG_GRAPHQL_ERROR, NETWORK_ERROR, INTERNAL_ERROR

  • GraphQL-Dokumente in graphql/-Dateien, getrennt vom Code

  • Das API-Token erscheint nie in Ausgabe, Logs oder Fehlermeldungen

Voraussetzungen

  • Node.js >= 20

  • Ein start.gg-API-Token

So erhalten Sie ein start.gg-API-Token

  1. Melden Sie sich bei start.gg an

  2. Öffnen Sie die Entwicklereinstellungen (Profil → Entwicklereinstellungen)

  3. Erstellen Sie ein persönliches Zugriffstoken und kopieren Sie es

Behandeln Sie das Token wie ein Passwort. Dieser Server liest es nur aus der Umgebungsvariable STARTGG_TOKEN.

Installation

git clone https://github.com/tomo789/startgg-mcp-server.git
cd startgg-mcp-server
npm install
npm run build

MCP-Client-Einrichtung

Claude Code (CLI)

claude mcp add startgg --env STARTGG_TOKEN=YOUR_TOKEN -- node /path/to/startgg-mcp-server/dist/cli.js

Claude Desktop

Fügen Sie zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "startgg": {
      "command": "node",
      "args": ["/path/to/startgg-mcp-server/dist/cli.js"],
      "env": {
        "STARTGG_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}

Jeder MCP-Client, der stdio-Server unterstützt, funktioniert auf die gleiche Weise: Führen Sie node dist/cli.js (oder das startgg-mcp-server-Binärprogramm, sobald es über npm installiert ist) mit gesetzter STARTGG_TOKEN aus.

Verfügbare Tools

Entdeckung

Tool

Zweck

search_videogames

Videospiel-IDs anhand des Namens finden (z. B. „Super Smash Bros. Ultimate“ → 1386)

search_tournaments

Allgemeine Turniersuche: Name, Videospiel, Land/Bundesland, Datumsbereich, anstehend/vergangen, offene Registrierung

get_upcoming_tournaments

Turniere, die noch nicht beendet sind (einschließlich laufender), zuerst die nächsten, mit einem Tagesfenster

get_tournaments_by_videogame

Turniere für eine Videospiel-ID (anstehend / vergangen / alle)

Turnier

Tool

Zweck

get_tournament

Details, Zeitplan, Veranstaltungsort, Eventliste, konfigurierte Streams

get_tournament_events

Events (Brackets) eines Turniers, optional nach Videospiel gefiltert

get_tournament_entrants

Teilnehmer auf Turnierebene (Besucher); die Setzliste pro Event befindet sich in get_event_entrants

get_stream_queue

Stream-Warteschlange: Streams (mit abgeleiteten Twitch-URLs) und die jedem zugewiesenen Sets

Event

Tool

Zweck

get_event

Eventdetails einschließlich Phasen (Pools, Top 8, ...) mit Phasen-IDs

get_event_entrants

Teilnehmer mit Setzplatz, Spielern, DQ-Flag; Paginierung oder fetchAll

get_event_standings

Platzierungen (verwenden Sie perPage: 8 für Top 8)

get_event_sets

Normalisierte Sets; filtern nach Zustand, Phase, Runde, Teilnehmern, VOD-Vorhandensein

Spieler

Tool

Zweck

get_player

Spieler anhand der ID: Gamer-Tag, Präfix, verknüpfter Benutzer

get_player_sets

Die letzten Sets eines Spielers über Turniere hinweg

Dienstprogramm

Tool

Zweck

resolve_startgg_url

start.gg-URL/Slug → { type, tournamentId, eventId, slugs, names }

Turnier-/Event-Tools akzeptieren entweder eine numerische ID, einen Slug oder eine vollständige start.gg-URL — Sie benötigen resolve_startgg_url selten explizit, aber es ist da, wenn Sie die IDs möchten.

Normalisierte Set-Struktur

{
  "id": 106877974,
  "round": "Grand Final",
  "roundNumber": 3,
  "state": "COMPLETED",
  "stateRaw": 3,
  "completedAt": "2026-08-24T07:19:34.000Z",
  "entrant1": {
    "entrantId": 24480092,
    "name": "LittleMacMain",
    "seed": 5,
    "players": [{ "playerId": 3655189, "gamerTag": "LittleMacMain", "prefix": "" }],
    "score": 2
  },
  "entrant2": { "...": "same shape" },
  "score": { "entrant1": 2, "entrant2": 3, "displayScore": "LittleMacMain 2 - RenSuø 3" },
  "winnerEntrantId": 24481002,
  "phase": { "id": 1994001, "name": "Bracket" },
  "vodUrl": null
}

Hinweise, die auf der Live-API basieren:

  • roundNumber < 0 bedeutet Verlierer-Bracket; round ist der menschenlesbare Name

  • ein Ergebnis von -1 ist start.ggs Disqualifikationsmarker

  • nicht gestartete „Preview“-Sets haben String-IDs wie "preview_3430499_2_0"

  • state-Namen werden aus dem ganzzahligen stateRaw dekodiert; beide werden immer zurückgegeben

  • entrant1/entrant2 verwenden ein players-Array, sodass Doppel/Teams unverändert funktionieren

Beispiele

Dinge, die Sie einen MCP-Client fragen können, sobald er verbunden ist:

Find upcoming Super Smash Bros. Ultimate tournaments this week.

Get the entrants and seeds for this start.gg tournament URL:
https://www.start.gg/tournament/.../event/...

Show me completed sets from Top 8 of that event.

Which streams are assigned to sets at this tournament?

What were the biggest seed upsets in this event?

Eine eigenständige Beispielanwendung (Videospiel-Suche → anstehende Turniere → Sets → Upset-Kandidaten nach Setzplatz-Differenz) befindet sich in examples/smash-ultimate-watcher.

Umgebungsvariablen

Variable

Erforderlich

Standard

Zweck

STARTGG_TOKEN

ja

start.gg-API-Token

STARTGG_ENABLE_WRITES

nein

false

Reserviert. Es existieren noch keine Schreib-Tools; das Flag protokolliert nur einen Hinweis

STARTGG_RATE_LIMIT

nein

75

Anfragen pro 60-Sekunden-Fenster (hart begrenzt auf 80)

STARTGG_TIMEOUT_MS

nein

30000

HTTP-Timeout pro Anfrage

STARTGG_CACHE

nein

on

Setzen Sie off, um den In-Memory-Cache zu deaktivieren

Der API-Endpunkt ist bewusst nicht über die Umgebung konfigurierbar: Das Token wird nur an api.start.gg gesendet. Wenn Sie den Client als Bibliothek verwenden (Tests, Tooling), injizieren Sie apiUrl/fetchFn über den StartggClient-Konstruktor.

Ohne STARTGG_TOKEN startet der Server weiterhin und listet Tools auf, aber jeder Aufruf gibt einen klaren AUTH_ERROR zurück, der erklärt, wie man ihn behebt.

Sicherheit

  • Das Token wird nur aus der Umgebung gelesen, nur an api.start.gg gesendet und nie in Tool-Ausgaben, Logs oder Fehlermeldungen aufgenommen

  • Alle Tools sind schreibgeschützt; es sind keine Mutationen implementiert

  • .env-Dateien sind git-ignoriert; verwenden Sie .env.example als Vorlage

  • Benutzereingaben werden vor dem Erstellen einer Anfrage schemavalidisiert

Ratenbegrenzungen

start.gg erlaubt 80 Anfragen pro 60 Sekunden und höchstens 1000 Objekte pro Anfrage. Dieser Server:

  • hält ein gleitendes Fensterbudget unter dem Anfragelimit (Standard 75/60s)

  • wiederholt 429 (unter Beachtung von Retry-After) und vorübergehende 5xx-Fehler mit exponentiellem Backoff, höchstens 3 Wiederholungen — GraphQL-Fehler werden nie wiederholt

  • begrenzt perPage pro Tool, sodass Antworten unter dem 1000-Objekt-Komplexitätslimit bleiben (Sets sind teuer: ~26+ Objekte pro Set, daher perPage <= 30)

  • begrenzt fetchAll auf ein festes Seitenbudget und meldet truncated: true, wenn es vorzeitig stoppt

Entwicklung

npm run dev        # run from source (tsx)
npm run build      # compile to dist/
npm run typecheck  # tsc --noEmit
npm run lint       # eslint
npm run format     # prettier

GraphQL-Dokumente befinden sich in graphql/*.graphql (eine Datei pro Domäne, mehrere benannte Operationen pro Datei; Anfragen wählen eine Operation über operationName aus). Schema-Fakten, die gegen die Live-API verifiziert wurden, sind in docs/startgg-api-notes.md festgehalten — lesen Sie diese, bevor Sie Felder hinzufügen.

Tests

npm test                    # unit tests (fixtures/mocks only, no network)
STARTGG_INTEGRATION=1 STARTGG_TOKEN=... npm test   # + 2 live API smoke tests
STARTGG_TOKEN=... node scripts/smoke.mjs           # full stdio end-to-end smoke (~10 live requests)

Unit-Tests decken den URL-Resolver, Normalisierer, Eingabevalidierung, Paginierung, GraphQL/HTTP-Fehlerbehandlung, den Ratenbegrenzer und den Cache ab.

Lizenz

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Provides access to Chess.com player data, game records, and public information through standardized MCP interfaces, allowing AI assistants to search and analyze chess information.
    10
    82
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides access to the Start.gg GraphQL API for querying tournament information, event standings, and player statistics. It also enables bracket management tasks like retrieving match sets and reporting winners through natural language.
    1
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query the FACEIT platform for players, matches, hubs, and tournaments through typed MCP tools generated from the FACEIT Data API v4.
    64
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables querying Chess.com public data including player profiles, stats, games, and club information through natural language.
    9
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomo789/startgg-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server