Skip to main content
Glama
sdotj
by sdotj

SleepBot

MCP-сервер, который подключает Claude к фэнтези-футбольным лигам. Фаза 1: инструменты только для чтения через публичный API Sleeper (без авторизации). Создан для расширения на запись, ESPN и несколько лиг без изменения интерфейса инструментов.

Архитектура

Ядро не зависит от платформы. Каждый инструмент обращается к интерфейсу LeagueAdapter, а не напрямую к SDK платформы:

tools ──▶ LeagueAdapter (interface) ◀── SleeperAdapter ──▶ api.sleeper.app
  │                                       (EspnAdapter later)
  └──▶ config (leagues[] registry)

Добавление лиги или платформы — это изменение конфигурации, а не кода. Архитектура описана с помощью Cairn в cairn.blueprint; запустите cairn scan, чтобы сверить карту с кодом.

Related MCP server: sleeper-mcp

Настройка

npm install
cp config/leagues.example.json config/leagues.json   # then edit with your league
npm run build

Найдите свой идентификатор лиги Sleeper в URL приложения или через https://api.sleeper.app/v1/user/<username>/leagues/nfl/<season>.

config/leagues.json

{
  "leagues": [
    {
      "id": "my-main-league",        // your own label, passed to every tool
      "platform": "sleeper",         // "sleeper" | "espn"
      "sleeper": { "leagueId": "123456789012345678", "username": "yourusername" }
    }
  ]
}

Секреты никогда не хранятся встроенно — значение вида "env:ESPN_S2" извлекается из окружения во время выполнения (см. .env.example). Для фазы 1 секреты не нужны.

Запуск

npm start          # serves over stdio (built)
npm run dev        # serves over stdio (tsx, no build)

Регистрация в Claude Code

// .mcp.json / claude mcp add
{
  "mcpServers": {
    "sleepbot": { "command": "node", "args": ["dist/index.js"] }
  }
}

Инструменты (Фаза 1 — все только для чтения)

Инструмент

Назначение

list_leagues

Настроенные лиги (из конфигурации, без вызова API)

get_league_info

Настройки, подсчёт очков, сезон, позиции в составе

get_rosters

Каждый состав: стартовые, запасные, IR (имена игроков разрешены), рекорд

get_my_roster

Ваш собственный состав, определённый по настроенному username

get_matchups

Еженедельные матчи + счета (по умолчанию текущая неделя)

get_standings

Ранжирование по победам, затем по очкам

get_transactions

Обмены, отказы, добавления/удаления (по умолчанию текущая неделя)

search_players

Игроки по имени, фильтр по позиции/команде

get_trending_players

Самые добавляемые / удаляемые игроки Sleeper

Каждый инструмент принимает вашу метку leagueId, поэтому поддержка нескольких лиг — это просто «передать другой id». Установите sleeper.username в конфигурации, и составы/таблицы/матчи будут помечены флагом isYou, чтобы SleepBot знал, какая команда ваша, без лишних вопросов.

Запустите тесты с помощью npm test.

Дорожная карта

  • Фаза 2 — действия записи Sleeper (подтверждение по умолчанию) + движок правил (src/rules, заглушка)

  • Фаза 3 — локальный GUI (Vite/React) поверх тех же инструментов

  • Фаза 4 — EspnAdapter для API ESPN на основе cookie, тот же интерфейс

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    Enables comprehensive Sleeper Fantasy Football integration with Claude, providing real-time player projections, historical performance analytics, league management, and waiver wire analysis. Supports advanced NFL metrics, lineup optimization, and matchup analysis for fantasy football decision-making.
    12
    1
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude to interact with Sleeper fantasy football leagues via MCP tools for roster, waiver, matchup, and transaction queries, plus a dashboard for daily reports, live scoring, and game-day alerts.
    99 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude to query Sleeper's public fantasy football API over Streamable HTTP, covering leagues, rosters, drafts, matchups, player stats, trends, and player search. Roster data keeps IR (reserve) and taxi players distinct and enriched with player names, positions, teams, and statuses.
    -