StatHead

StatHead

An open NFL fantasy-football analytics platform that provides live data, machine-learned projections, dynasty values, and prospect grades via an MCP server for AI clients.

Category
Visit Server

README

StatHead

An open NFL fantasy-football analytics platform — live data, machine-learned projections, dynasty values, and prospect grades, served as a web app and as an MCP server you can plug straight into Claude or any AI client.

  • 🌐 Web app — stathead.app (QA mirror)
  • šŸ¤– MCP server — 30 NFL tools for AI projects → mcp/
  • 🧠 ML pipeline — projection / dynasty-value / prospect models trained from 10+ seasons of data
  • šŸ“¦ MIT-licensed code. āš ļø The data has its own terms — see DATA_SOURCES.md before redistributing anything.

Use it in your own AI project (MCP)

The fastest way to build on StatHead. No clone, no build:

npx -y stathead-mcp

Claude Code:

claude mcp add stathead -- npx -y stathead-mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "stathead": { "command": "npx", "args": ["-y", "stathead-mcp"] }
  }
}

Then ask things like "Compare Bijan Robinson's and Jahmyr Gibbs' weekly consistency in 2024" or "Top 10 dynasty WRs by StatHead value, with their ages." Full tool list and configuration: mcp/README.md.

Run the web app locally

npm install
npm run dev          # Vite dev server

Other useful scripts:

Script What it does
npm run build Production build (semantic layer → features → tsc → vite → Pages post-build)
npm run build:mcp Bundle the MCP server → mcp/dist/server.mjs
npm run mcp Run the MCP server from source (tsx)
npm run lint ESLint
npm run data:local Download data sources for local work

The repo is a TypeScript/React (Vite) front end plus a TypeScript + Python data & ML pipeline under scripts/ and python/. The same tool layer (src/tools.ts → src/data.ts) backs both the app and the MCP server.

Data

StatHead pulls from many upstreams — open data (nflverse, DynastyProcess, CFBD), public APIs (Sleeper, ESPN, FantasyFootballCalculator), proprietary community values (KeepTradeCut, FantasyCalc), and derived features from paid scouting products. Licensing varies a lot by source.

šŸ‘‰ Read DATA_SOURCES.md before redistributing data, publishing a dataset, or shipping a commercial product. The short version: share the open sources and StatHead's own model outputs freely; fetch the rest from the original source under your own access rather than rebundling it.

Data proxies (self-hosting)

Live KeepTradeCut, FantasyCalc, and ESPN data is fetched through small Cloudflare Worker CORS proxies, because those upstream APIs block direct browser requests. The worker source lives under workers/ and a deploy workflow is in .github/workflows/deploy-workers.yml.

By default the app points at the upstream project's workers, so it works as soon as you clone it. If you deploy your own copy, stand up your own workers (so you don't depend on — or get rate-limited by — someone else's) and override the URLs via env vars. Copy .env.example to .env.local and set:

Var Proxies
VITE_KTC_PROXY KeepTradeCut dynasty values (workers/ktc-proxy)
VITE_FC_PROXY FantasyCalc values (workers/fc-proxy)
VITE_ESPN_NEWS_PROXY ESPN player news/overview (workers/espn-news-proxy)
VITE_VISIT_TRACKER Visitor analytics beacon (workers/visit-tracker)

Each falls back to the project's worker when unset. Deploy a worker with cd workers/<name> && npx wrangler deploy (or use the deploy workflow).

Visitor analytics

The app sends a first-party, cookie-less pageview beacon per tab view to workers/visit-tracker, which writes to Cloudflare Workers Analytics Engine. No third parties, no identifiers stored in the browser, no raw IPs kept — visitors are counted with a daily-rotating anonymous hash, and Do Not Track / Global Privacy Control are honored. Aggregates (daily views/visitors, top pages, referrers, countries) are served by the worker's /stats endpoint and a small dashboard at its root URL. See the worker's header comment for the data layout and the one-time CLOUDFLARE_ANALYTICS_API_TOKEN setup.

Environments

Two deploy targets, fed by the same codebase:

Env URL Host Base path Trigger
QA dachhack.github.io/stathead/ GitHub Pages /stathead/ push to the dev branch (deploy.yml)
Production stathead.app Cloudflare Pages / push to production (deploy-prod.yml)

The base path is set by the BASE_PATH env var in vite.config.ts (default /stathead/); the prod workflow builds with BASE_PATH=/. Everything in the app reads import.meta.env.BASE_URL, so that one switch repoints every asset and data URL.

Promote QA → prod by merging the dev branch into production. That push builds for the root domain and uploads to Cloudflare Pages. See the header of deploy-prod.yml for the one-time Cloudflare Pages + DNS setup.

License

Code is MIT. Data is not covered by that license — see DATA_SOURCES.md. The name "Stathead" may conflict with Sports Reference's Stathead trademark; see the note in that file.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured