Skip to main content
Glama
sdotj
by sdotj

SleepBot

Un servidor MCP que conecta Claude con ligas de fútbol fantástico. Fase 1: herramientas de solo lectura sobre la API pública de Sleeper (sin autenticación). Diseñado para ampliarse a acciones de escritura, ESPN y múltiples ligas sin cambiar la interfaz de las herramientas.

Arquitectura

El núcleo es independiente de la plataforma. Cada herramienta habla con una interfaz LeagueAdapter, nunca directamente con un SDK de plataforma:

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

Añadir una liga o una plataforma es un cambio de configuración, no un cambio de código. La arquitectura está mapeada con Cairn en cairn.blueprint; ejecuta cairn scan para conciliar el mapa con el código.

Related MCP server: sleeper-mcp

Configuración

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

Encuentra tu id de liga de Sleeper en la URL de la aplicación o mediante 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" }
    }
  ]
}

Los secretos nunca se almacenan en línea: un valor como "env:ESPN_S2" se resuelve desde el entorno en tiempo de ejecución (ver .env.example). La Fase 1 no necesita secretos.

Ejecución

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

Registrar con Claude Code

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

Herramientas (Fase 1 — todas de solo lectura)

Herramienta

Propósito

list_leagues

Ligas configuradas (desde config, sin llamada a la API)

get_league_info

Ajustes, puntuación, temporada, posiciones de roster

get_rosters

Cada roster: titulares, banca, IR (nombres de jugadores resueltos), récord

get_my_roster

Tu propio roster, identificado desde el username configurado

get_matchups

Enfrentamientos semanales + puntuaciones (por defecto, la semana actual)

get_standings

Clasificados por victorias, luego por puntos a favor

get_transactions

Intercambios, waivers, altas/bajas (por defecto, la semana actual)

search_players

Jugadores por nombre, filtrar por posición/equipo

get_trending_players

Los más añadidos / más eliminados de Sleeper

Cada herramienta toma tu etiqueta leagueId, así que el soporte multi-liga es simplemente "pasa un id diferente". Establece sleeper.username en la configuración y los rosters/clasificaciones/enfrentamientos se marcan con isYou, para que SleepBot sepa qué equipo es tuyo sin preguntar.

Ejecuta las pruebas con npm test.

Hoja de ruta

  • Fase 2 — Acciones de escritura de Sleeper (confirmar por defecto) + motor de reglas (src/rules, esqueleto)

  • Fase 3 — GUI local (Vite/React) sobre las mismas herramientas

  • Fase 4 — EspnAdapter contra la API basada en cookies de ESPN, misma interfaz

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