startgg-mcp-server
startgg-mcp-server
Сервер Model Context Protocol для GraphQL API start.gg. Он позволяет MCP-клиентам (Claude Code, Claude Desktop и другим) находить турниры, просматривать события, участников, сеты, турнирные таблицы и стримы для любой игры на start.gg с помощью естественного языка.
Что это?
start.gg предоставляет мощный, но сложный GraphQL API: участники vs игроки vs игроки, целочисленные состояния сетов, пагинация с ограничением сложности, временные метки в эпохе. Этот сервер оборачивает этот API в небольшой набор MCP-инструментов с:
Нормализованным выводом — сеты возвращаются как
{ round, state: "COMPLETED", entrant1: { gamerTag, seed }, score, winnerEntrantId, ... }вместо сырой вложенности GraphQLРазрешением URL — вставьте URL start.gg, получите идентификаторы турнира/события
Встроенными ограничением скорости, повторами и кэшированием, настроенными под документированные лимиты start.gg
Сервер не зависит от конкретной игры. Игровая логика (например, обнаружение апсетов в Smash)
должна быть реализована в приложениях поверх него — см.
examples/smash-ultimate-watcher.
Related MCP server: Start.gg MCP Server
Возможности
15 инструментов только для чтения, покрывающих поиск, турниры, события, игроков, стримы и разрешение URL
Проверка входных данных (Zod) для каждого инструмента — неверные идентификаторы, слишком большие размеры страниц и некорректные URL никогда не достигают API
Скользящее окно ограничения скорости (по умолчанию 75 запросов/60 с против 80 у start.gg), повторы с экспоненциальной задержкой и поддержка
Retry-AfterКэш в памяти с коротким TTL для метаданных запросов
Типизированные коды ошибок:
AUTH_ERROR,RATE_LIMITED,NOT_FOUND,INVALID_INPUT,STARTGG_GRAPHQL_ERROR,NETWORK_ERROR,INTERNAL_ERRORGraphQL-документы хранятся в файлах
graphql/, отдельно от кодаТокен API никогда не появляется в выводе, логах или сообщениях об ошибках
Требования
Node.js >= 20
Токен API start.gg
Получение токена API start.gg
Войдите в start.gg
Откройте настройки разработчика (Профиль → Настройки разработчика)
Создайте персональный токен доступа и скопируйте его
Относитесь к токену как к паролю. Этот сервер читает его только из
переменной окружения STARTGG_TOKEN.
Установка
git clone https://github.com/tomo789/startgg-mcp-server.git
cd startgg-mcp-server
npm install
npm run buildНастройка MCP-клиента
Claude Code (CLI)
claude mcp add startgg --env STARTGG_TOKEN=YOUR_TOKEN -- node /path/to/startgg-mcp-server/dist/cli.jsClaude Desktop
Добавьте в claude_desktop_config.json:
{
"mcpServers": {
"startgg": {
"command": "node",
"args": ["/path/to/startgg-mcp-server/dist/cli.js"],
"env": {
"STARTGG_TOKEN": "YOUR_TOKEN"
}
}
}
}Любой MCP-клиент, поддерживающий stdio-серверы, работает так же: запустите
node dist/cli.js (или бинарник startgg-mcp-server после установки через npm)
с установленным STARTGG_TOKEN.
Доступные инструменты
Поиск
Инструмент | Назначение |
| Найдите идентификаторы видеоигр по названию (например, "Super Smash Bros. Ultimate" → 1386) |
| Общий поиск турниров: название, видеоигра, страна/штат, диапазон дат, предстоящие/прошедшие, открытая регистрация |
| Турниры, которые ещё не завершились (включая текущие), сначала ближайшие, с окном в днях |
| Турниры для одного идентификатора видеоигры (предстоящие / прошедшие / все) |
Турнир
Инструмент | Назначение |
| Детали, расписание, место проведения, список событий, настроенные стримы |
| События (сетки) турнира, опционально отфильтрованные по видеоигре |
| Участники на уровне турнира (посетители); посев по событиям находится в |
| Очередь стримов: стримы (с производными Twitch-URL) и назначенные им сеты |
Событие
Инструмент | Назначение |
| Детали события, включая фазы (Пулы, Топ-8, ...) с идентификаторами фаз |
| Участники с посевом, игроками, флагом DQ; пагинация или |
| Места (используйте |
| Нормализованные сеты; фильтр по состоянию, фазе, раунду, участникам, наличию VOD |
Игрок
Инструмент | Назначение |
| Игрок по идентификатору: тег, префикс, связанный пользователь |
| Недавние сеты игрока на разных турнирах |
Утилиты
Инструмент | Назначение |
| URL/слаг start.gg → |
Инструменты турниров/событий принимают либо числовой идентификатор, слаг, либо полный
URL start.gg — вам редко понадобится resolve_startgg_url явно, но он доступен,
когда нужны идентификаторы.
Нормализованная форма сета
{
"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
}Примечания, основанные на живом API:
roundNumber < 0означает сетку проигравших;round— человекочитаемое названиесчёт
-1— маркер дисквалификации start.ggне начатые "предпросмотровые" сеты имеют строковые идентификаторы, например
"preview_3430499_2_0"названия
stateдекодируются из целочисленногоstateRaw; возвращаются оба значенияentrant1/entrant2используют массивplayers, поэтому пары/команды работают без изменений
Примеры
Что можно спросить у MCP-клиента после подключения:
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?Автономное примерное приложение (поиск видеоигры → предстоящие турниры →
сеты → кандидаты на апсет по разнице посева) находится в
examples/smash-ultimate-watcher.
Переменные окружения
Переменная | Обязательная | По умолчанию | Назначение |
| да | — | Токен API start.gg |
| нет |
| Зарезервировано. Инструментов записи пока нет; флаг только логирует уведомление |
| нет |
| Запросов за 60-секундное окно (жёсткий максимум 80) |
| нет |
| Таймаут HTTP на запрос |
| нет |
| Установите |
Конечная точка API намеренно не настраивается через окружение: токен
отправляется только на api.start.gg. При использовании клиента как библиотеки
(тесты, инструменты) передайте apiUrl/fetchFn через конструктор StartggClient.
Без STARTGG_TOKEN сервер всё равно запускается и перечисляет инструменты, но
каждый вызов возвращает понятную ошибку AUTH_ERROR с объяснением, как её исправить.
Безопасность
Токен читается только из окружения, отправляется только на
api.start.ggи никогда не включается в вывод инструментов, логи или сообщения об ошибкахВсе инструменты только для чтения; мутации не реализованы
Файлы
.envигнорируются git; используйте.env.exampleкак шаблонПользовательский ввод проверяется схемой до построения любого запроса
Ограничение скорости
start.gg разрешает 80 запросов за 60 секунд и не более 1000 объектов за запрос. Этот сервер:
поддерживает скользящее окно бюджета ниже лимита запросов (по умолчанию 75/60 с)
повторяет
429(с учётомRetry-After) и временные ошибки 5xx с экспоненциальной задержкой, максимум 3 повтора — ошибки GraphQL никогда не повторяютсяограничивает
perPageдля каждого инструмента, чтобы ответы оставались в пределах лимита сложности в 1000 объектов (сеты дорогие: ~26+ объектов каждый, поэтомуperPage <= 30)ограничивает
fetchAllфиксированным бюджетом страниц и сообщаетtruncated: true, когда останавливается раньше
Разработка
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 # prettierGraphQL-документы находятся в graphql/*.graphql (один файл на домен, несколько
именованных операций в файле; запросы выбирают операцию через operationName).
Факты о схеме, проверенные на живом API, записаны в
docs/startgg-api-notes.md — прочитайте его перед
добавлением полей.
Тестирование
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)Модульные тесты покрывают резолвер URL, нормализаторы, проверку входных данных, пагинацию, обработку ошибок GraphQL/HTTP, ограничитель скорости и кэш.
Лицензия
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