Sleeper Fantasy Football MCP Server
Sleeper Fantasy Football MCP Server
Ein Remote-MCP-Server (Model Context Protocol), der die öffentliche Fantasy-Football-API von Sleeper kapselt. Er läuft als HTTP-Dienst (Streamable-HTTP-Transport) und ist so über das Internet von Claude Desktop und der Claude mobile app erreichbar — nützlich, um mitten im Draft Ligadaten vom Handy abzurufen.
Die API von Sleeper (https://api.sleeper.app/v1/, Doku) ist öffentlich und schreibgeschützt, daher fasst dieser Server nie Ligaeinstellungen, Aufstellungen oder Draft-Picks an — er liest nur.
Status
Das ist das erste Grundgerüst: ein Tool, get_league_settings, das end-to-end über Streamable HTTP mit Bearer-Token-Authentifizierung funktioniert. Weitere Tools (Rosters, Matchups, Draft-Picks usw.) werden demselben Muster in src/tools.js folgen.
Related MCP server: Yahoo Fantasy Baseball MCP Server
Projektstruktur
src/
config.js # reads env vars once, exports a typed config object
sleeperClient.js # thin wrapper around Sleeper's REST API
auth.js # bearer token middleware
tools.js # MCP tool definitions (registered against an McpServer)
server.js # express app: /health, /mcp, auth wiring, listen()
.env.exampleEin neues Tool hinzuzufügen bedeutet: eine Fetch-Funktion in sleeperClient.js ergänzen, ein Tool in tools.js registrieren, das sie aufruft. server.js und auth.js müssen nicht geändert werden.
Voraussetzungen
Node.js 24.16.0 (festgelegt in
package.jsonunterengines)Eine Sleeper-Liga-ID und eine Benutzer-ID
So finden Sie Ihre Liga-ID: Öffnen Sie Ihre Liga in der Sleeper-Web-App — die URL enthält eine lange numerische Liga-ID (z. B. sleeper.com/leagues/1234567890123456789/team).
So finden Sie Ihre Benutzer-ID: Besuchen Sie https://api.sleeper.app/v1/user/<your_sleeper_username> in einem Browser und kopieren Sie das Feld user_id.
Umgebungsvariablen
Die Konfiguration wird einmal in src/config.js gelesen — nichts anderes im Codebestand greift direkt auf process.env zu. Alle drei sind erforderlich; der Server startet ohne sie nicht.
Variable | Zweck |
| Ihre Sleeper-Liga-ID |
| Ihre Sleeper-Benutzer-ID |
| Bearer-Token, das jede Anfrage enthalten muss – siehe Auth |
| (nur lokale Entwicklung) Port, auf dem gelauscht wird; Standard ist |
Kopieren Sie .env.example nach .env und tragen Sie echte Werte ein:
cp .env.example .envErzeugen Sie ein starkes MCP_AUTH_TOKEN:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))".env ist per .gitignore ausgeschlossen — committen Sie niemals echte Werte. .env.example enthält nur Platzhalter.
Auth
Jede Anfrage an /mcp muss Folgendes enthalten:
Authorization: Bearer <MCP_AUTH_TOKEN>Fehlende oder falsche Tokens erhalten eine 401, bevor irgendeine MCP- oder Sleeper-Logik läuft (src/auth.js, Vergleich mit einer Prüfung in konstanter Zeit). Das ist die einzige Barriere zwischen Ihren Liga-Daten und dem offenen Internet, da der Server keinerlei andere Zugriffskontrolle hat — behandeln Sie MCP_AUTH_TOKEN wie ein Passwort, teilen Sie es nicht und committen Sie es nicht.
/health ist bewusst nicht authentifiziert (nur ein Bereitschaftstest, der keine Liga-Daten preisgibt), damit Railway-Health-Checks ungehindert darauf zugreifen können.
Lokal ausführen
npm install
cp .env.example .env # then fill in real values
npm start # or: npm run dev (auto-restarts on changes)Der Server lauscht auf http://localhost:3000 (oder auf $PORT, falls gesetzt).
Kurzer Smoke-Test mit curl:
# health check (no auth)
curl http://localhost:3000/health
# MCP initialize (replace the token with your MCP_AUTH_TOKEN)
curl -s http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer <your MCP_AUTH_TOKEN>" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'
# call the tool
curl -s http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer <your MCP_AUTH_TOKEN>" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_league_settings","arguments":{}}}'Eine Anfrage ohne Authorization-Header oder mit falschem Token sollte eine 401 erhalten.
Client verbinden
Dieser Server verwendet den Streamable-HTTP-Transport (einen einzelnen /mcp-Endpunkt, kein stdio) und wird daher als Remote-MCP-Server hinzugefügt, der auf Ihre bereitgestellte URL und das Bearer-Token verweist — so wie es die jeweiligen Client-Anleitung für das Hinzufügen eines Remote-/Custom-MCP-Connectors beschreibt. Richten Sie ihn auf https://<your-railway-domain>/mcp mit dem Authorization: Bearer <MCP_AUTH_TOKEN>-Header ein, wie vom Client verlangt.
Deploying to Railway
Schieben Sie dieses Repository zu GitHub (bereits erledigt, wenn Sie das direkt aus dem Repository lesen).
Erstellen Sie in Railway ein neues Projekt (oder verwenden Sie ein vorhandenes) und fügen Sie einen Dienst aus diesem GitHub-Repository hinzu.
Railway erkennt Node.js automatisch und führt
npm installund dannnpm startaus. Für dieses Setup sind weder einProcfilenoch einDockerfileerforderlich.Legen Sie im Tab Variablen des Dienstes
SLEEPER_LEAGUE_ID,SLEEPER_USER_IDundMCP_AUTH_TOKENfest (verwenden Sie einen anderen, starken Wert als ein lokales Dev-Token). Setzen Sie keinPORT— Railway fügt ihn automatisch ein.Wichtig —
PORT: Railway weist der Lauschport des Containers zur Laufzeit dynamisch über die UmgebungsvariablePORTzu; er ist nicht festgelegt und nicht im Voraus bekannt.src/server.jsliestprocess.env.PORT(viasrc/config.js) und fällt nur auf3000zurück, wenn die Variable nicht gesetzt ist — das passiert nur in der lokalen Entwicklung. Hardcodieren Sie niemals einen Port – ein hartkodierter Port wird bei Railway keinen Datenverkehr erhalten.Deployen Sie. Railway stellt Ihnen eine öffentliche Domain wie
https://<service>.up.railway.appbereit. Ihr MCP-Endpunkt isthttps://<service>.up.railway.app/mcp.Überprüfen Sie dies mit denselben curl-Befehlen wie oben, ersetzen Sie
localhost:3000durch Ihre Railway-Domain und richten Sie dann Claude Desktop / mobile auf dieser URL mit IhremMCP_AUTH_TOKENein.
Einschränkungen
Schreibgeschützt – das kann nichts in Ihrer Sleeper-Liga ändern.
Eine Liga pro Bereitstellung (
SLEEPER_LEAGUE_IDist ein Wert in der Konfiguration, kein Tool-Argument).Zustandslose Anforderungsverarbeitung – jede MCP-Anfrage startet einen eigenen Transport, sodass es keinen serverseitigen Sitzungszustand gibt, der bei einem Railway-Neustart verloren gehen könnte, aber auch kein Rückstauschamberübergreifendes Streaming über Anfragen hinweg gibt.
Bisher ist nur
get_league_settingsimplementiert.
Lizenz
MIT
This server cannot be installed
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
- FlicenseBqualityCmaintenanceEnables 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.6121
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Yahoo Fantasy Sports API for fantasy baseball, providing tools to manage rosters and player stats via Claude.124MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude to interact with Yahoo Fantasy Baseball and Basketball leagues, allowing roster analysis, matchup tracking, free agent browsing, and player stats retrieval via natural language.1
- AlicenseNot gradedqualityBmaintenanceEnables AI models to manage and query fantasy sports leagues through the Sleeper API, supporting tasks like player lookups, league activity, and draft management.27MIT
Related MCP Connectors
Read-only fantasy analysis for ESPN, Yahoo, and Sleeper leagues via MCP
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
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/dduderstadt/sleeper-fantasy-football-claude-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server