startgg-mcp-server
startgg-mcp-server
Un servidor del Model Context Protocol para la API GraphQL de start.gg. Permite que los clientes MCP (Claude Code, Claude Desktop y otros) descubran torneos, inspeccionen eventos, participantes, sets, clasificaciones y streams de cualquier juego en start.gg usando lenguaje natural.
¿Qué es esto?
start.gg expone una API GraphQL potente pero compleja: entrants vs participants vs players, estados de set enteros, paginación con límite de complejidad, marcas de tiempo epoch. Este servidor envuelve esa API en un pequeño conjunto de herramientas MCP con:
Salida normalizada — los sets se devuelven como
{ round, state: "COMPLETED", entrant1: { gamerTag, seed }, score, winnerEntrantId, ... }en lugar del anidamiento GraphQL crudoResolución de URLs — pega una URL de start.gg y obtén los ids de torneo/evento
Límite de tasa, reintentos y caché integrados ajustados a los límites documentados de start.gg
El servidor es independiente del juego. La lógica específica de un juego (p. ej., detección de sorpresas en Smash)
pertenece a las aplicaciones construidas sobre él — ver
examples/smash-ultimate-watcher.
Related MCP server: Start.gg MCP Server
Características
15 herramientas de solo lectura que cubren descubrimiento, torneos, eventos, jugadores, streams y resolución de URLs
Validación de entrada (Zod) en cada herramienta — los ids incorrectos, tamaños de página excesivos y URLs malformadas nunca llegan a la API
Limitador de tasa de ventana deslizante (por defecto 75 req/60s frente a los 80 de start.gg), reintentos con retroceso exponencial y soporte de
Retry-AfterCaché en memoria con TTL corto para consultas de metadatos
Códigos de error tipados:
AUTH_ERROR,RATE_LIMITED,NOT_FOUND,INVALID_INPUT,STARTGG_GRAPHQL_ERROR,NETWORK_ERROR,INTERNAL_ERRORDocumentos GraphQL mantenidos en archivos
graphql/, separados del códigoEl token de la API nunca aparece en la salida, los registros o los mensajes de error
Requisitos
Node.js >= 20
Un token de API de start.gg
Cómo obtener un token de API de start.gg
Inicia sesión en start.gg
Abre developer settings (Perfil → Configuración de desarrollador)
Crea un token de acceso personal y cópialo
Trata el token como una contraseña. Este servidor solo lo lee de la
variable de entorno STARTGG_TOKEN.
Instalación
git clone https://github.com/tomo789/startgg-mcp-server.git
cd startgg-mcp-server
npm install
npm run buildConfiguración del cliente MCP
Claude Code (CLI)
claude mcp add startgg --env STARTGG_TOKEN=YOUR_TOKEN -- node /path/to/startgg-mcp-server/dist/cli.jsClaude Desktop
Añade a claude_desktop_config.json:
{
"mcpServers": {
"startgg": {
"command": "node",
"args": ["/path/to/startgg-mcp-server/dist/cli.js"],
"env": {
"STARTGG_TOKEN": "YOUR_TOKEN"
}
}
}
}Cualquier cliente MCP que admita servidores stdio funciona de la misma manera: ejecuta
node dist/cli.js (o el binario startgg-mcp-server una vez instalado vía npm)
con STARTGG_TOKEN configurado.
Herramientas disponibles
Descubrimiento
Herramienta | Propósito |
| Encuentra ids de videojuegos por nombre (p. ej. "Super Smash Bros. Ultimate" → 1386) |
| Búsqueda general de torneos: nombre, videojuego, país/estado, rango de fechas, próximos/pasados, inscripción abierta |
| Torneos que aún no han terminado (incluye los en curso), primero los más próximos, con una ventana de días |
| Torneos para un id de videojuego (próximos / pasados / todos) |
Torneo
Herramienta | Propósito |
| Detalles, horario, lugar, lista de eventos, streams configurados |
| Eventos (brackets) de un torneo, opcionalmente filtrados por videojuego |
| Participantes a nivel de torneo (asistentes); la siembra por evento está en |
| Cola de streams: streams (con URLs de Twitch derivadas) y los sets asignados a cada uno |
Evento
Herramienta | Propósito |
| Detalles del evento, incluidas las fases (Pools, Top 8, ...) con ids de fase |
| Participantes con siembra, jugadores, indicador de DQ; paginación o |
| Clasificaciones (usa |
| Sets normalizados; filtra por estado, fase, ronda, participantes, presencia de VOD |
Jugador
Herramienta | Propósito |
| Jugador por id: gamer tag, prefijo, usuario vinculado |
| Sets recientes de un jugador en varios torneos |
Utilidad
Herramienta | Propósito |
| URL/slug de start.gg → |
Las herramientas de torneo/evento aceptan ya sea un id numérico, un slug o una
URL completa de start.gg — rara vez necesitarás resolve_startgg_url explícitamente, pero
está ahí cuando quieras los ids.
Forma normalizada de los sets
{
"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
}Notas basadas en la API en vivo:
roundNumber < 0significa bracket de perdedores;roundes el nombre legibleuna puntuación de
-1es el marcador de descalificación de start.gglos sets "preview" no iniciados tienen ids de cadena como
"preview_3430499_2_0"los nombres de
statese decodifican del enterostateRaw; ambos se devuelven siempreentrant1/entrant2usan un arrayplayers, por lo que los dobles/equipos funcionan sin cambios
Ejemplos
Cosas que puedes pedir a un cliente MCP una vez conectado:
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?Una aplicación de ejemplo independiente (búsqueda de videojuego → próximos torneos →
sets → candidatos a sorpresa por diferencia de siembra) está en
examples/smash-ultimate-watcher.
Variables de entorno
Variable | Requerida | Por defecto | Propósito |
| sí | — | Token de API de start.gg |
| no |
| Reservada. Aún no existen herramientas de escritura; la bandera solo registra un aviso |
| no |
| Solicitudes por ventana de 60s (límite máximo de 80) |
| no |
| Tiempo de espera HTTP por solicitud |
| no |
| Configura |
El endpoint de la API no es configurable deliberadamente a través del entorno: el
token solo se envía a api.start.gg. Cuando se usa el cliente como biblioteca
(pruebas, herramientas), inyecta apiUrl/fetchFn mediante el constructor StartggClient.
Sin STARTGG_TOKEN, el servidor aún se inicia y lista las herramientas, pero cada
llamada devuelve un AUTH_ERROR claro que explica cómo solucionarlo.
Seguridad
El token se lee solo del entorno, se envía solo a
api.start.ggy nunca se incluye en la salida de las herramientas, los registros o los mensajes de errorTodas las herramientas son de solo lectura; no se implementan mutaciones
Los archivos
.envestán en git-ignore; usa.env.examplecomo plantillaLa entrada proporcionada por el usuario se valida con esquema antes de construir cualquier solicitud
Límites de tasa
start.gg permite 80 solicitudes por 60 segundos y como máximo 1000 objetos por solicitud. Este servidor:
mantiene un presupuesto de ventana deslizante por debajo del límite de solicitudes (por defecto 75/60s)
reintenta
429(respetandoRetry-After) y errores 5xx transitorios con retroceso exponencial, como máximo 3 reintentos — los errores GraphQL nunca se reintentanlimita
perPagepor herramienta para que las respuestas se mantengan bajo el límite de complejidad de 1000 objetos (los sets son costosos: ~26+ objetos cada uno, por lo tantoperPage <= 30)limita
fetchAlla un presupuesto de páginas fijo e informatruncated: truecuando se detiene antes
Desarrollo
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 # prettierLos documentos GraphQL viven en graphql/*.graphql (un archivo por dominio, múltiples
operaciones nombradas por archivo; las solicitudes seleccionan una operación mediante operationName).
Los hechos del esquema verificados contra la API en vivo se registran en
docs/startgg-api-notes.md — léelo antes de
añadir campos.
Pruebas
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)Las pruebas unitarias cubren el resolvedor de URLs, los normalizadores, la validación de entrada, la paginación, el manejo de errores GraphQL/HTTP, el limitador de tasa y la caché.
Licencia
Maintenance
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
- AlicenseBqualityBmaintenanceProvides access to Chess.com player data, game records, and public information through standardized MCP interfaces, allowing AI assistants to search and analyze chess information.1082MIT
- AlicenseNot gradedqualityDmaintenanceProvides 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.1Apache 2.0
- AlicenseAqualityDmaintenanceEnables AI assistants to query the FACEIT platform for players, matches, hubs, and tournaments through typed MCP tools generated from the FACEIT Data API v4.64MIT
- AlicenseAqualityBmaintenanceEnables querying Chess.com public data including player profiles, stats, games, and club information through natural language.9MIT
Related MCP Connectors
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Query metrics, targets, entities, and team data in your Steep workspace via MCP.
Riot Games API MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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