get-gamesLABSCO SUMMARY
Shipping the endpoint schemas alongside the tools is what makes the natural-language questions actually work.
College football data is field-heavy, and a model guessing at column names produces plausible nonsense. Here the schema for each endpoint is available as a resource, so a question like which drives ended in a turnover inside the twenty gets translated against real field definitions. The prompt templates cover the analyses people ask for repeatedly — one game, one team, a season trend, a head-to-head, a rivalry — and the honest constraint is the rate limit rather than the data.
What it is
A Python server over the College Football Data API V2 that exposes the game, team, play and ranking endpoints, with schema documentation attached so a model knows what each field means.
What you get
- get-games and get-games-teams — results, scores and per-team game statistics
- get-records — team season records
- get-plays and get-play-stats — play-by-play data and individual play statistics
- get-drives — drive summaries and how they ended
- get-rankings — team rankings across the polls
- get-pregame-win-probability and get-advanced-box-score — win probability and advanced box score analytics
- Schema documentation for every endpoint as resources, so the model reads the field definitions before querying
- Prompt templates for common analyses: analyze-game, analyze-team, analyze-trends, compare-teams and analyze-rivalry
Requirements
A College Football Data API key in CFB_API_KEY — free to obtain. Python 3.11 or higher with uv. The free tier is rate limited; Patreon subscribers get higher limits, so wide season-long queries need to be spaced out.
Setup effort
Build from source — git clone https://github.com/lenwood/cfbd-mcp-server
USE CASES
Settling an argument about a specific game
Pull the box score and the drive summaries and look at what actually happened rather than what the final score suggests.
Finding the biggest upset of a season
Combine results with pregame win probability to rank surprises rather than margins.
Comparing two teams before they meet
Records, per-game team statistics and rankings for both, brought together in one answer.
Looking for a pattern in play calling
Query play-by-play data with the play statistics attached, filtered to the situations you care about.
9 tools
Listed in project docs. Your client may show a different list.
get-recordsget-games-teamsget-playsget-drivesget-play-statsget-rankingsget-pregame-win-probabilityget-advanced-box-scoreBEFORE YOU INSTALL
What to know first
Tools you get
9 tools named in the project's documentation.
Requires
- Python 3.11 or later
- CFB_API_KEY in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/lenwood/cfbd-mcp-server
cd cfbd-mcp-server
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .Create a .env file in the project root containing CFB_API_KEY=<YOUR_CFB_API_KEY>
uv run cfbd-mcp-serverMCP Clients
Claude Desktop
{
"mcpServers": {
"cfbd-mcp-server": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_CFBD_MCP_SERVER>",
"run",
"cfbd-mcp-server"
],
"env": {
"CFB_API_KEY": "<YOUR_CFB_API_KEY>"
}
}
}
}<YOUR_CFB_API_KEY> is your College Football Data API key (the same key you put in .env as CFB_API_KEY; get one free at https://collegefootballdata.com/key), and <YOUR_PATH_TO_CFBD_MCP_SERVER> is the absolute path of your clone. The README's version of this block also sets PATH to a single python binary; it is left out here because PATH must be a list of directories, and a single file path there stops uv and python from being found.